Существует несколько веских причин, по которым 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, Xamarin позволяет создавать интерфейс. Для большего удобства разработки пользовательского интерфейса приложения рекомендуется использовать Xamarin.iOS и Xamarin.Android отдельно. Это обеспечивает лучший результат.
+ Полная поддержка оборудования
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. Невозможно, чтобы «сторонние» инструменты обеспечивали немедленную поддержку выхода последних обновлений iOS и Android: требуется некоторое время, чтобы внедрить новые изменения, новые плагины и т. д. Хотя Xamarin утверждает, что обеспечивает поддержку в тот же день, но все же могут быть задержки в один-два дня.
- Доступны не все существующие библиотеки
Нативная разработка широко использует технологии с открытым исходным кодом. С 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 есть собственный арсенал компонентов, всегда есть вероятность, что вам может потребоваться конкретная функция или интеграция в вашем приложении, которая не предоставляется платформой.