Плюсы и минусы разработки на Xamarin

    Принимаясь за разработку приложений под 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».

    Источник
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 11

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

      Будем надеяться его не забросят все же. А то где-то проскальзывала инфа, что win store закроют, надеюсь Xamarin не из той оперы, все же функционал студии (достаточно флагманского продукта в энтерпрайзе).
        +1
        Мы и без Xamarin.Forms 50-70% общего кода получали расшаривая бизнес-логику.
          0
          А то где-то проскальзывала инфа, что win store закроют

          Где? Пока везде проскаивает инфа о том, что новые и новые части винды просачиваются в стор: Обои, подсистема Линус, Шрифты
            0
            Инфа не сотка, из разряда ОБС :( Где-то в телеге мелькнуло, уже не восстановлю.
          0
          Это позволит создавать игры на Xamarin, но богатый пользовательский интерфейс или же сложные анимации с небольшим количеством общего кода делают Xamarin непригодным.
          Есть же Unity…
            0
            Для игр конечно юнити, а вот анимации и прочее делается (кастом контролами и прочим). В принципе были у меня эксперименты и с подгрузкой и рендерингом изометрических тайлов tmx, работало отлично и кода надо было мало — все это через UrhoSharp.

            Еще адобовская какая-то либа для json-анимаций есть, забыл название, работает не интерактивно, но для стартовых демонстрашек идеально.
            0
            На Android простое «Hello, World» может занимать до 16 MB
            Сейчас там все агрессивно режется. Все неиспользуемые классы. Xamarin действительно добавляет до 16 мб, но на Hello World будет меньше.
              0
              В отличие от нечувствительных к языку разработки решений, таких как Appcelerator Titanium, платформа Xamarin позволяет делать нативные сборки под целевые платформы и создавать высокопроизводительные приложения с естественным внешним видом.

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

                0
                — За время компиляции и деплоя на девайс простого «hello world» можно и покурить и пообедать.
                  0
                  Либо у вас древняя машинка, либо что-то с настройками сборки. Кстати, на iOS деплой на девайс и нативно занимает непростительно много времени.
                  0
                  Я уж раз речь пошла про xamarin позволю дать ссылку на конструктор мобильных приложений торговым компаниям appropio.com, который 100% написан на базе Xamarin (модульная инфраструктура) и на его основе мы делаем интересные решения, даже крупным розничным сетям. Так что — это рабочий инструмент из опыта.

                  Only users with full accounts can post comments. Log in, please.