НовостиОбзорыСобытияIT@WorkРеклама
Идеи и практики автоматизации:

Блог

Как программировать мобильные приложения для всех мыслимых платформ

Какие фреймворки сегодня лучше всего подходят для комфортной разработки программ под мобильные платформы iOS, Android, Windows Phone и иные более-менее популярные системы?

[spoiler]В продолжение поста "Juno запущена" -- хочу сравнить две системы схожих на первый взгляд концепций:
- свободная PhoneGap;
- Appcelerator (спасибо за наводку Григорию Шатрову) -- коммерческая оболочка (есть бесплатная версия), базируется на свободном Titanium Mobile SDK.

Обе они поддерживают все основные мобильные ОС, и разработку предлагают в схожем на первый взгляд стиле: дизайн окна программы возможен на HTML, прикладная логика на JavaScript, и последующая трансляция в родное приложение конкретной платформы или адаптация к ней. И там и там имеется множество полноценных примеров, действуют хорошие коммьюнити.

Сперва мои субъективно-поверхностные впечатления. PhoneGap заметно посложнее и в собственной настройке, и в отладке на физическом устройстве. Titanium же многие моменты настройки выполняет автоматически, включая докачку нужных компонентов и библиотек.
Кроме того, структура проекта в Titanium мне показалась куда как прозрачнее, нежели в PhoneGap. Но каких-либо принципиальных проблем с разработкой мобильного софта ни там ни там я не встретил. Единственное, каждая среда довольно болезненно воспринимает шероховатости в переменной среды JAVA_HOME (например, PhoneGap хочет только короткое название пути: "C:\Progra~1\Java\jre7").

Теперь мнение специалистов.
Kevin Whinnery полагает, что различие в этих системах напрямую связано с их спонсорами. У PhoneGap это Adobe, а у Titanium -- Appcelerator.

PhoneGap ориентируется на стандарт W3C Device API, который существенно расширяет функциональность подлежащего мобильной "обертке" веб-приложения в плане доступа к конкретным железным фичам -- через низкоуровневые API. Программист фактически создает обычное веб-приложение, автоматическим портированием которого на разные платформы и занимается PhoneGap. В этой связи общая архитектура проекта PhoneGap проста и компактна.

Минусы: из-за такой прямой завязки на веб внешний вид PhoneGap-приложения, да и скорость отрисовки, будет сильно зависеть от конкретного движка веб-рендеринга на телефоне. Кроме того, из-за определенного минимализма PhoneGap далеко не все родные API телефонных ОС будут корректно доступны (потому, в частности, что упомянутый стандарт W3C пока мало кем поддерживается полностью).

Концепция Titanium, схожая с PhoneGap в глобальном (дизайн на HTML, логика на JavaScript) по исполнению другая. Имеется кросс-платформный высокоуровневый рантайм JavaScript, который обеспечивает доступ к базовой функциональности условного гаджета на высоком уровне абстракции. Но, принципиальное отличие в том, что Titanium не стремится к принципу "пишется однажды, работает везде", как PhoneGap, а предоставляет платформно-специфичные программные интерфейсы, включая как универсальные веб-, так и native/быстрые UI-элементы. Фактически с помощью Titanium пишется родной JavaScript-код под конкретную платформу, хотя подавляющую часть логики можно вынести в независимые от платформы модули. То есть Titanium предназначена для создания родных мобильных приложений (что повышает гибкость разработки), но не на lowlevel оригинальных SDK, а на достаточно высоком и удобном уровне.
Минусы, соответственно -- в отсутствии кросс-платформности, поэтому пока поддерживаются Android, iOS и мобильные браузеры, а Windows Phone и BlackBerry еще на подходе. Ну и для каждой платформы надо дописывать немало оригинального кода. Кроме того, не задействуется грядущий потенциал HTML5.

А вот сравнение от Brian O'Connor:
"PhoneGap is a web-based solution where Appcelerator Titanium is a pure JavaScript API that creates native code".

Автор особо отмечает уникальную способность PhoneGap транслировать классические веб-приложения под любую из семи мобильных платформ вообще без изменения кода. К мобильным сразу можно добавить планшеты, всяческие нетбуки, грядущие Smart TV.

Резюме: если надо быстро разработать мобильное приложение под пару основных платформ (iOS, Андроид) или даже под одну конкретную ОС, если высоки требования к качеству пользовательского интерфейса (например, в играх), если надо интенсивно использовать конкретные функции телефона -- берите Titanium.

Если внешний вид программы на телефоне не шибко принципиален, если система задумывается истинно кросс-платформной включая мобильный веб, если HTML5 выбран стратегическим направлением, если имеется много веб-наработок для классической Сети, которые надо ускоренно перенести в мобильный формат -- берите PhoneGap.
Григорий Шатров
Спасибо за отличный обзор! Но хочу немного поправить, по поводу "не задействуется грядущий потенциал HTML5", Appcelerator недавно купили  Particle Code, которая как раз занимается HTML5, и появление этого функционала в Titanium заявлено на этот год.
Сергей Бобровский
PhoneGap просто разрабатывается уже давно, вот в нем и функционала побольше.
А Appcenter действительно по оценкам Gartner занимает самую лучшую позицию по Visionary, у них все впереди)