Мобильные платформы, как выбрать платформу мобильного приложения

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

Нативные приложения (ObjectiveC, Java, C#)

Плюсы

Первый и самый большой плюс это доступ ко всему богатству и гибкости разработки мобильных приложений и использования родных SDK. Мобильные устройства - в большей части персональные устройства (за исключением веяния Microsoft с Surface, который ориентирован на семью). Каждое устройство уникально. Опыт использования для каждого устройства и пользователя уникален. Пользователь мобильного приложения для каждой платформы ожидает определенного поведения приложения, присущего определенной платформе. 

Выбирать родные языки программирования следует в том случае, если приложению требуется действительно сложная графика и пользовательские элементы управления. Следующий пункт это доступ ко всем уникальным функциям устройства. Будь то запись звука, геолокационные сервисы или снятие фотографий - все делается через низкоуровневое API конкретной платформы. Если приложению требуется похожие функции - наиболее гибкий и свободные доступ предоставить только Original SDK.

Минусы

Не все так гладко. Самая большая и дорогая ложка дегтя — стоимость разработки. Для каждого магазина приложений необходимы свои уникальные особенности как оформления, так и подачи материала. При обновлении линейки устройств часто приходится обновлять приложения. Вторая проблема - одному разработчику будет затруднительно поддерживать приложение для всех платформ на разных языках программирования (для Apple - ObjectiveC, Android - Java, Win8 - C#). Если реализовать базовую версию приложения еще видится возможным, то реализация сложной бизнес логики и поддержание приложений в актуальном состоянии будет затруднительным.

Веб приложение (HTML 5)

Такие приложения устанавливаются, а основная бизнес логика работает на сервере. Такие приложения мало чем отличаются от обычных сайтов.

Плюсы

Веб-приложения работают на устройствах всех форм-факторов. Да, это круто! Легко можно портировать на любое устройство (делать при этом ничего не нужно). Приложение полностью работает в браузере. Небольшие различия с точки зрения безопасности и доступа к функциям смартфона. Единственный вариант веб-приложения это HTML5.

Минусы

Скудный доступ к функциям устройства: нет ни фото, геолокации, гироскоп и другие фишки недоступны в таком варианте. Пользователи знают, на что способны их устройства и ожидают определенного поведения, которые приложения HTML5 им дать не могут. Кроме того, такие приложения зачастую работают медленнее своих аналогов в нативной реализации (т.к. всюду используется javascript и обработчик в браузере).

Гибридные приложения (PhoneGap)

Гибридные приложения используют как веб-технологии, так и родные API. Такое приложение строится аналогично веб-приложению (но с учетом специфики сборки гибридных приложений), компилируется и продается в каждом магазине приложений отдельно.

Плюсы

Когда можно говорить о плюсах гибридных приложений? Если большая часть функциональности приложения уже реализована на HTML5 и необходимо добавить платформенные особенности. В этом случае разумнее выбрать этот способ создания мобильного приложения. С учетом того, что есть фреймворки с открытым исходным кодом – относительно быстро и недорого реализовать задумку.

Минусы

Минусы в таких приложениях примерно такие же как и в веб. Т.к. часть приложения выполняется в браузере - могут быть аналогичные проблемы со скоростью работы. Доступ к API реализуется через обертку на javascript.

И, наконец, гибридные приложения не могут дать тот опыт использования, как нативные приложения.

Кроссплатформенные приложения (Xamarin)

Цель кроссплатформенных приложений - ускорить и упростить разработки под множество платформ. Делатеся это путем написания кода, которые будет использоваться на разных устройствах один и тот же. Рассмотрим на примере Xamarin  реализацию кроссплатформенных приложений.

iOS

Модуль Monotouch призван скомпилировать C# код в нативный код для устройства Apple. Разработка возможна только с использованием Mac (как и в случае с родными приложениями) и ведется в IDE Xamarin Studio. C# развивается уже более 10 лет и имеет богатый внутренний мир, что для C# разработчиков будет очень кстати. iOS накладывает некоторые ограничения на разработку на динамических языках. Так например не поддерживается компиляция кода «налету» Refliction.Emit(). P/Invoke и некоторые другие возможности C# тоже не работаю. Но, что сильно подкупает - работает LINQ!

Android

Примерно аналогичная ситуация с андроидом. На смартфонах работает не чистая Java, а Dalvik - виртуальная машина Java. Здесь также нельзя использовать языки с динамической компиляцией (IronRuby IronPython).

Windows Phone

Сказка уже разрабатывать на C#. Все накопленные знания и умения плавно перетекают в разработку на WinPhone. Для телефона Microsoft это нативный язык.

Плюсы

Один язык программирования позволяет использовать уже накопленный опыт в разработки и уделять внимание реализации бизнес логики, а не пытаться заставить кнопку нажиматься. Отдельно бы хотелось отметить легкость старта для C# разработчиков. Большой магазин компонент позволяет делиться кодом с другими разработчиками (как это происходит в Win + Web мире).

Минусы

Любая кроссплатформенная разработка накладывает определенные ограничения. В том числе и то, что будет реализовано в MonoTouch и MonoDroid. Т.е. некая зависимость от парней из Xamarin. С другой стороны проект сильно развивается с 2009 года и с каждым годом радует все большей функциональностью. В этом году вышла удобная Xamarin Studio (в замену MonoDevelop). Видно, что активно развивается как сама IDE так и библиотеки для работы.

UPD: Также стоит добавить к минусам стоимость лицензии, которая начинается от 300$ за платформу (Android / iOS)

 

Комментарии

comments powered by Disqus