Принимаясь за разработку приложений под iOS и Android, большинство в первую очередь рассматривает в качестве инструментов разработки признанные нативные стеки технологий, такие как Objective-C, Swift и Java. Однако существует множество других способов создания эффективных и простых в использовании мобильных приложений. Платформа для разработки приложений Xamarin — один из них. В этой статье мы проведем углублённый обзор платформы Xamarin в сравнении с нативными и кроссплатформенными решениями для мобильной разработки на рынке.

Что такое Xamarin?


Когда речь заходит о ключевых инструментах разработки мобильных приложений, Xamarin невозможно обойти стороной. Xamarin — сравнительно новый инструмент, основанный на принципах технологий Microsoft. Но на сегодняшний день в его сообществе уже свыше 1,4 млн разработчиков.

Платформа Xamarin была создана разработчиками открытой платформы Mono, находившейся в свободной реализации .NET, которая впервые была представлена в 2001 году. Тем не менее в отличие от своего предшественника, Xamarin существовал исключительно как коммерческий проект до тех пор, пока компания не была приобретена Microsoft.

Xamarin — это особый инструмент, так как для создания приложений для всех мобильных платформ он использует единый язык C#.

В отличие от нечувствительных к языку разработки решений, таких как Appcelerator Titanium, платформа Xamarin позволяет делать нативные сборки под целевые платформы и создавать высокопроизводительные приложения с естественным внешним видом. С технической точки зрения, для кроссплатформенной разработки Xamarin использует единый язык C# и библиотеки, обёрнутые в слой .NET. С точки зрения работы и пользовательского опыта, такие приложения можно отнести к нативным, то есть специально разработанным под iOS и Android.

Несмотря на то что код, связанный с бизнес-логикой, доступом к базе данных и сетевыми коммуникациями, может использоваться на всех платформах, Xamarin позволяет создавать слой кода UI под конкретную платформу. Таким образом, кроссплатформенные приложения Xamarin выглядят на 100% нативными на любом устройстве, обеспечивая наилучший пользовательский опыт по сравнению со стандартными гибридными приложениями.

Платформа имеет две основные формы: Xamarin.iOS и Xamarin.Android. В случае с iOS, исходный код компилируется непосредственно в нативный ассемблерный код ARM (AOT компиляция), тогда как приложения Android Xamarin сначала компилируются в промежуточный универсальный код, а затем — в родной уже во время выполнения (JIT-компиляция). Но тем не менее этот подход не является решением всех проблем. Как и у любой другой технологии, у Xamarin есть свои преимущества и недостатки, которые в последнее время стали предметом горячих споров.

Плюсы использования Xamarin для разработки мобильных приложений


Существует несколько веских причин, по которым Xamarin используется многими компаниями, включая Trello, Slack и GitHub.

+ Единый стек технологий для разработки на всех платформах


Xamarin использует язык C# и .NET Framework, чтобы создавать приложения для любой мобильной платформы. Таким образом, вы можете повторно использовать до 30% исходного кода, ускоряя процесс разработки. Xamarin также не требует переключения между средами разработки: все приложения Xamarin могут создаваться средствами Visual Studio. Кроссплатформенные инструменты разработки предоставляются как встроенная часть IDE без каких-либо дополнительных затрат.

+ Производительность близка к нативной


Кроссплатформенное приложение, созданное с помощью Xamarin, можно классифицировать как нативное, в отличие от традиционных гибридных решений, базирующиеся на веб-технологиях. Показатели производительности сопоставимы с показателями Java под Android и Objective-C или Swift для разработки приложений под iOS. Более того, показатели производительности Xamarin постоянно улучшаются и совершенствуются, чтобы полностью соответствовать стандартам отечественной разработки. Платформа Xamarin предлагает комплексное решение вопросов тестирования и отслеживания производительности приложения: Xamarin Test Cloud в сочетании с инструментом Xamarin Test Recorder позволяет запускать автоматические тесты пользовательского интерфейса и находить проблемы производительности еще до выпуска приложения. Однако эта услуга предоставляется за дополнительную плату.

+ Нативный UI


Используя платформо-зависимые элементы UI, Xamarin позволяет создавать интерфейс. Для большего удобства разработки пользовательского интерфейса приложения рекомендуется использовать Xamarin.iOS и Xamarin.Android отдельно. Это обеспечивает лучший результат.

+ Совместимость c оборудованием


Xamarin устраняет все проблемы совместимости оборудования, используя плагины и различные API для работы с функциями общих устройств на всех платформах. Наряду с доступом к особым API-платформам, Xamarin можно компоновать с библиотеками, нативными для конкретной платформы. Это позволяет проводить более тонкую настройку и поддерживать функциональность родного для платформы слоя с небольшими накладными расходами.

+ Open Source-технологии с корпоративной поддержкой


После того как в феврале 2016 года компанию приобрела Microsoft, лицензионная политика Xamarin подверглась радикальным изменениям. Xamarin SDK, включая библиотеки и инструменты командной строки, стал открытым и доступным для всех под лицензией MIT, как часть Visual Studio. Путём устранения основной преграды в виде стоимости лицензии, Microsoft обеспечила наилучшие условия для дальнейшего развития платформы. Кроме того, во главе с Microsoft и при поддержке Unity, JetBrains, Red Hat, .NET Foundation, Xamarin стал надёжным и мощным стеком технологий для разработки мобильных приложений.

+ Простая поддержка


Благодаря кроссплатформенности, Xamarin упрощает поддержку и обновление программного обеспечения. Вы можете просто внести изменения в один исходный файл, и они будут применяться к приложениям как iOS, так и Android. Но это имеет отношение только к приложениям, использующим общую бизнес-логику, а также общий код для приложений Xamarin.iOS и Xamarin.Android. Таким образом, это поможет вам сэкономить время и деньги, при этом сохраняя ваши приложения в рабочем состоянии.

+ Полный пакет инструментов разработки


Xamarin поставляется в одном наборе с полным пакетом инструментов разработки: собственная система IDE (Visual Studio), Xamarin SDK, тестирование (Xamarin Test Cloud), распространение и аналитика (Hockeyapp and Xamarin.Insights). Таким образом, не нужно вкладываться в дополнительные инструменты или же интегрировать другие приложения для создания, тестирования и развертывания ваших приложений Xamarin.

Особенности Xamarin

Минусы при разработке на Xamarin


— Задержки с обновлениями платформ


Это целиком и полностью зависит от команды разработчиков Xamarin. Невозможно, чтобы «сторонние» инструменты обеспечивали немедленную поддержку выхода последних обновлений iOS и Android: требуется некоторое время, чтобы внедрить новые изменения, новые плагины и т. д. Хотя Xamarin утверждает, что обеспечивает поддержку в тот же день, но все же могут быть задержки в один-два дня.

— Ограниченный доступ к open-source библиотекам


Нативная разработка широко использует технологии с открытым исходным кодом. С Xamarin придется пользоваться компонентами, предоставляемыми платформой и некоторыми .NET ресурсами, которые используются разработчиками и потребителями. Выбор, конечно, не так велик, как при разработке мобильных приложений под iOS и Android, однако, компоненты Xamarin предоставляют тысячи разных элементов интерфейса: диаграммы и графики, темы и другие удобные и полезные функции, которые можно добавить в любое приложение всего в несколько кликов. Эта платформа включает в себя функции встроенной обработки платежей (такую, как Stripe), поддержку маячков и носимых устройств, служб Push уведомлений, решений для облачных хранилищ, возможностей мультимедиа, стриминга и многое другое.

— Ограниченность экосистемы


Хоть платформа Xamarin растет и развивается, а также поддерживается со стороны Microsoft, но очевидно, что сообщество специалистов, разбирающихся в специфике Xamarin, значительно меньше, чем у iOS или Android, поэтому найти опытного разработчика может оказаться непросто. Судя по информации из разных источников, сообщество Xamarin составляет 10% от общего количества мобильных разработчиков. Несмотря на то что число инженеров Xamarin не сравнится с числом профессионалов iOS или Android, создатели платформы оказывают поддержку своим специалистам. Например, существует специальное образовательное учреждение Xamarin University, которое предоставляет разнообразные ресурсы и возможности для практической подготовки специалистов в этой отрасли. Благодаря такой поддержке, кривая обучаемости минимальна для опытных программистов C#.

— Требование к базовым знаниям языка программирования


При использовании Xamarin.iOS и Xamarin.Android для создания мобильных приложений с нативным интерфейсом приходится писать платформо-зависимый слой кода. Следовательно, требуются, по крайней мере, базовые знания нативных технологий (Java/Kotlin для Android и Objective-C/Swift для iOS). Однако они не применяются для Xamarin.Forms.

— Xamarin не подходит для приложений с высокопроизводительной графикой


Главное преимущество Xamarin — это возможность использовать код на разных платформах. Тем не менее речь идет только о логике, код UI будет в основном уникален для платформы. Это позволит создавать игры на Xamarin, но богатый пользовательский интерфейс или же сложные анимации с небольшим количеством общего кода делают Xamarin непригодным.

— Больший размер приложений


В зависимости от типа и сложности, приложения Xamarin обычно больше, чем нативные, иногда даже в два раза. На Android простое «Hello, World» может занимать до 16 MB, причем большая часть его используется связанными библиотеками, окружением Mono и базовыми библиотеками (Base Class Library, BCL). Таким образом, приложение обычно нуждается в дополнительной оптимизации, чтобы размер его файла был не слишком большим.

Особенности разработки приложений на Xamarin

— Сложности с интеграцией


Есть вероятность того, что могут возникнуть некоторые проблемы с интеграцией сторонних ресурсов с Xamarin. Хотя большинство инструментов и библиотек предлагают полную поддержку нативных технологий, совместимость с Xamarin не может быть гарантирована компанией-производителем. Хотя у Xamarin есть собственный арсенал компонентов, всегда есть вероятность, что вам может потребоваться конкретная функция или интеграция в вашем приложении, которая не предоставляется платформой.

В последнее время многие разработчики приложений склонны соглашаться с тем, что Xamarin может считаться нативным инструментом разработки. В самом деле, существует мнение, что «все, что можно сделать в приложении iOS с использованием Objective-C или Swift, и все, что можно сделать в приложении Android с помощью Java, можно сделать и на языке C # при помощи Xamarin».

Источник

Комментарии (10)


  1. S_A
    24.11.2017 13:48

    Как это до 30% :)) С Xamarin.Forms удавалось более 90% при сохранении нативного look and feel. Хамарин всем хорош из моей двухлетней практики, за исключением следующего —
    1. Производители API и плагинов к своим платформам редко поддерживают .Net/Xamarin. Но parseplatform к слову — хорошее исключение (хотя и чуть-чуть менее функциональное, нежели для Java/ObjectiveC). Некоторые заморочи бывают с онлайн-оплатами, но вебвьюшки тут выручают,
    2. Иногда все же XF лагает и падает из-за своих внутренних прослоек — на сумеречных чайнадевайсах. Но начиная с 2.5 с этим жить стало заметно проще,
    3. Верстать я научился без плейеров, но хороших плейеров хоть выбор и есть, все же есть заморочи с кастомизированными контролами.

    Будем надеяться его не забросят все же. А то где-то проскальзывала инфа, что win store закроют, надеюсь Xamarin не из той оперы, все же функционал студии (достаточно флагманского продукта в энтерпрайзе).


    1. ad1Dima
      24.11.2017 14:24
      +1

      Мы и без Xamarin.Forms 50-70% общего кода получали расшаривая бизнес-логику.


    1. ad1Dima
      24.11.2017 14:26

      А то где-то проскальзывала инфа, что win store закроют

      Где? Пока везде проскаивает инфа о том, что новые и новые части винды просачиваются в стор: Обои, подсистема Линус, Шрифты


      1. S_A
        24.11.2017 14:43

        Инфа не сотка, из разряда ОБС :( Где-то в телеге мелькнуло, уже не восстановлю.


  1. ad1Dima
    24.11.2017 14:28

    Это позволит создавать игры на Xamarin, но богатый пользовательский интерфейс или же сложные анимации с небольшим количеством общего кода делают Xamarin непригодным.
    Есть же Unity…


    1. S_A
      24.11.2017 14:45

      Для игр конечно юнити, а вот анимации и прочее делается (кастом контролами и прочим). В принципе были у меня эксперименты и с подгрузкой и рендерингом изометрических тайлов tmx, работало отлично и кода надо было мало — все это через UrhoSharp.

      Еще адобовская какая-то либа для json-анимаций есть, забыл название, работает не интерактивно, но для стартовых демонстрашек идеально.


  1. ad1Dima
    24.11.2017 14:30

    На Android простое «Hello, World» может занимать до 16 MB
    Сейчас там все агрессивно режется. Все неиспользуемые классы. Xamarin действительно добавляет до 16 мб, но на Hello World будет меньше.


  1. Tiulkin
    25.11.2017 19:58

    В отличие от нечувствительных к языку разработки решений, таких как Appcelerator Titanium, платформа Xamarin позволяет делать нативные сборки под целевые платформы и создавать высокопроизводительные приложения с естественным внешним видом.

    Вы перепутали Titanium с PhoneGap/Cordova. Titanium как раз компилирует JS в нативные высокопроизводительные приложения.


  1. quwy
    26.11.2017 02:11

    — За время компиляции и деплоя на девайс простого «hello world» можно и покурить и пообедать.


    1. ad1Dima
      27.11.2017 06:04

      Либо у вас древняя машинка, либо что-то с настройками сборки. Кстати, на iOS деплой на девайс и нативно занимает непростительно много времени.