В последнее время многие разработчики приложений склонны соглашаться с тем, что Xamarin может считаться нативным инструментом разработки. В самом деле, существует мнение, что «все, что можно сделать в приложении iOS с использованием Objective-C или Swift, и все, что можно сделать в приложении Android с помощью Java, можно сделать и на языке C # при помощи Xamarin».
Тем не менее существует много подводных камней в соперничестве нативной платформы и платформы Xamarin. Итак, давайте сравним Xamarin с нативными инструментами разработки и разработкой гибридных платформ (Ionic, PhoneGap/Cordova).
Xamarin | Нативный | Гибридный | |||
---|---|---|---|---|---|
Стек технологии | Один стек, одна кодовая база (C#, .Net framework + нативные библиотеки) | Разные стеки для каждой платформы | Один стек, одна кодовая база (JavaScript, HTML5, CCS) | ||
Совместное использование кода | Да, до 96% с использованием Xamarin.Forms | Нет, разные кодовые базы | Да, 100% | ||
UI/UX (User Interface/User Expierence) | Возможна полная настройка UI для каждой платформы | Только платформо-зависимые UI | Общий UI для всех платформ (ограниченные возможности настройки) | ||
Производительность | Хорошая, близкая к родной | Отличная | Средняя — низкая | ||
Возможности аппаратных средств | Высокие. Xamrin использует платформо- зависимые API и поддерживает связь с нативными библиотеками | Высокие. Нативные инструменты имеют полную поддержку для возможностей системы OOTB | Средние. Возможности могут быть доступны через сторонние API и плагины, хотя есть некоторые риски из-за низкого качества и ненадежности большинства из этих инструментов | ||
TTM (время выхода на рынок) | С Xamarin.Forms TTM происходит быстро из-за ограниченной настройки и расширенного обмена кодами. Xamarin,iOS и Xamarin.Android требуют больше времени по мере того, как увеличивается количество пользовательского кода. | TTM для нативных приложений Android или iOS может быть таким же, что и для Xamarin.Forms или гибридных инструментов. Тем не менее создание приложений для множества платформ может потребовать от вас либо продлить время выхода на рынок, либо увеличить количество заинтересованных разработчиков | Благодаря единой кодовой базе и минимальной настройке, гибридные решения быстрей выходят на рынок. Эти инструменты используются даже для макетирования концептуальных проектов |
Гибридные инструменты мобильной разработки развиваются довольно быстро, но им по-прежнему не хватает производительности и собственных возможностей, которые предлагает Xamarin. При этом затраты остаются сопоставимиыми. Если рассматривать два подхода (гибридный и Xamarin), то самая популярная дилемма — это Xamarin против Ionic и Xamarin против React. Однако React Native теряет популярность из-за ряда ограничений в базовых технологиях (стек веб-технологий).
Тем не менее существует мобильный инструмент разработки на базе JavaScript, который превосходит гибридные решения, по крайней мере, с точки зрения UI. Речь идет о NativeScript. Этот кроссплатформенный фреймворк с открытым исходным кодом при поддержке Telerik и при помощи единой базы кода позволяет вам реализовывать нативный UI и подключаться к родным API для лучшего использования мобильных устройств. Его главное отличие заключается в том, что он использует разметку XML, которая компилируется не в веб-браузере HTML, а в нативных эквивалентах Android и iOS.
Этот подход заполняет пробелы между нативными и гибридными разработками, и его методы похожи на то, что делает Xamarin. Основное различие между этими двумя инструментами заключается в языке программирования. Поэтому сравнение Xamarin и NativeScript, должно стать предметом более подробных исследований.
В то же время обсуждения преимуществ и недостатков Xamarin и нативных разработок Android/iOS кажутся более сложными: оба варианта доказывают, что они ценны с точки зрения качества и производительности. Поэтому выбор обычно зависит от типа приложения, которое вы хотите создать.
При сравнении всех за и против нетрудно прийти к выводу, что перечисленные недостатки могут нанести ущерб разработке. Большинство владельцев бизнеса выбирают платформу Xamarin, так как это сокращает время выхода на рынок (Time-To-Market) и инженерных затрат за счет совместного использования кода и использования единого стека технологий.
Основываясь на опыте нашей команды, можно заключить, что лучшим вариантом использования Xamarin является разработка мобильных приложений для бизнеса. Со стандартным интерфейсом, который охватывает 90% проектов, логическое ядро продукта можно легко сделать общим на всех платформах.
В случае создания приложений со сложным интерфейсом, количество общего кода кардинально уменьшается. Таким образом, кроссплатформенная разработка Xamarin теряет своё главное преимущество и может сравняться по затратам с отдельными нативными решениями для каждой целевой платформы. Но это не делает приложения на Xamarin менне качественными, просто несколько увеличивает трудозатраты. И если вы ищете альтернативу платформе Xamarin для создания кроссплатформенных мобильных приложений, вы, скорее всего, разочаруетесь. Так, наиболее широко используемыми кроссплатформенными мобильными инструментами для разработки являются PhoneGap/Apache Cordova, Ionic Framework, Appcelerator/Titanium, а они, в первую очередь, опираются на веб-технологии, такие как HTML5 или JavaScript. Именно поэтому ни один из этих инструментов не может иметь такой же уровень производительности и нативные функциональные возможности, какие нам предлагает платформа Xamarin.