«

»

Мар
17

Appcelerator vs PhoneGap vs Rhomobile. Выбираем SDK для кросс-платформенной разработки.

Один раз запрограммируй, семь раз зарелизь…

В данной статье я расскажу о средствах кросс-платформенной разработки мобильных приложений. Мы сравним основные фреймворки для кросс-разработки, постараемся выявить их достоинства и недостастки, и попытаемся выбрать лучший из них. Как оказалось – лучшего нет, но о всем в свое время.

Все хотят сэкономить, особенно мы разработчики везде хотим применить “инженерный подход” и сделать все как можно проще, логичнее и без повторений одного и того же. Пару лет назад, приступая к разработке справочника для мобильных платформ, я занимался поиском такого решения – сделать 1 раз и так, чтобы работало везде… ну почти, меня интересовали следующие платформы: iOS, Android  и браузер. А ведь есть еще и Bada, Windows Phone… Неужели придется разрабатывать свою версию приложения для каждой платформы? И, к сожалению, в тот конкретный раз, пришлось.

Но ничто не стоит на месте. Спустя 2 года, вчера у меня в голове родилось очередное приложение, которое хорошо было бы малой кровью выпустить на нескольких платформах. И как я и ожидал, начав поиск кросс-платформенного SDK, обнаружил большие изменения в списке предлагаемых решений в лучшую сторону. Хочу заметить, что для разработки игр существует специализированные SDK. Их я касаться не буду. Приступаем к делу.

Дано: ТЗ на разработку приложения.

Задача: выпустить приложение для основных мобильных платформ с минимальными затратами.

Решение:

Appcelerator Titanium

Инструмент для разработки приложений для мобильных устройств с использованием в качестве основного языка JavaScript/JSON. Есть поддержка выполнения Ruby, Python и PHP скриптов. Большое количество различных библиотек, в том числе поддерживающих Facebook, Yahoo API и др. За небольшие деньги можно докупить дополнительных модулей, таких как: Dropbox SDK ($14), Twitter Framework ($12.99), Google Analytics SDK ($10) и др. Можно даже создать свой модуль и разметить его в магазине для продажи другим разработчикам.

Приложения созданные с помощью данного SDK будут действительно нативными. Контроллер навигации на Андроиде будет выглядеть привычно и не так как на iOs. Причем не только вид, но и сам код приложения будет тоже нативный. Это кстати не мешает вам создавать и классический WebView и наполнить его желаемым web контентом.

Разработчики на основе Eclipse создали специальную среду разработки для разработки с использованием данного SDK. На сайте можно найти исчерпывающую документацию и видео уроки хорошего качества. В общем, ребята постарались на славу.

Из недостатков – поддержка только Андроид и iOs. Нет простой возможности использовать стандартный стек HTML/CSS/JavaScript совместно с  Appcelerator API. То есть, вы можете создать WebView и загрузить туда контент, но надо будет немного повозиться с доступом к API SDK.

PhoneGap

Это HTML5 платформа для разработки мобильных приложений. Она позволяет разрабатывать веб-приложения и получать, посредством JavaScript библиотеки, доступ к нативным функциям устройства, таким как: файловая система, камера, уведомления и др. Используются стандартные веб-технологии, то есть ваше приложение работает внутри браузера как обычный сайт, плюс дается специальная JavaScript библиотека для доступа к нативным функциям устройства. Стоит отметить то, что вы можете спокойно использовать JavaScript библиотеки, которые вы использовали при разработки сайтов (jQueryPrototypeSencha Touch и др.).

Важной особенностью данного SDK является поддержка широкого списка мобильных платформ. Поддерживаются все современные платформы: iPhone, Android, OS, WebOS, WP7, Symbian и Bada. Такой длинный список не удивительным, ведь главным требованием SDK к платформе является наличие современного браузера. Поэтому если в будущем появится, какая-то новая OS – разработчики довольно оперативно адаптируют PhoneGap для работы на ней.

Есть простое средство релиза ваших приложений, с помощью которого можно легко получить бинарные файлы вашего приложения для всех требуемых платформ. Документация просто замечательная и очень дружелюбна к начинающим разработчикам. Можно расширять SDK и добавлять свои модули, предоставив их реализацию для каждой платформы на родном SDK.

Из недостатков хочется отметить следующее: ваше приложение на всех платформах будет выглядеть одинаково, ровно так, как вы это реализуете на HTML/CSS/JS; низкая производительность, ограниченная браузером; плохая доступность нативных функций ОС (никаких родных диалогов, текстовых уведомлений и специфичных контролов), отсутствие специализированной среды разработки (подойдут ваши любимые инструменты для веб-программирования)

Rhomobile

Еще один очень интересный фреймворк для кросс-платформенной разработки. Главной его особенностью является использование Ruby и MVC архитектуры приложений. Созданный вами код на языке Ruby интерпретируется в нативный код устройства. Поддерживаются все основные мобильные платформы: iPhone, Windows Mobile, RIM, Symbian и Android. Подробнее о поддержке различных возможностей можно посмотреть в документации.

Разработчики фреймворка предлагают нам готовый платный “backend” для нашего приложения. Это не реляционная база данных типа ключ-значение, для которой существуют встроенные в фреймворк средства взаимодействия. Есть платный сервер предлагающий легкую интеграцию вашего приложения с уже существующими. Есть бесплатное для маленьких задач средство для создания ваших приложений в облаке, не нужно ничего устанавливать и настраивать на своем компьютере – все хранится и компилируется в облаке. Каждый проект в облаке представлен git репозиторием, поэтому писать код можно на своем компьютере в любимой среде разработки.

Из недостатков: сложно настроить фреймворк и релизить приложения, если не пользоваться облаком. Ваше приложение выполняется внутри RubyVM, что отрицательно сказывается на производительности. Нужно знать Ruby.

Итоги

Рассмотренные 3 фреймворка на данный момент являются основными для кросс-платформенной разработки для мобильных устройств.  Фреймворки выполнены на высоком качественном уровне, расширяемы, обладают хорошей документацией и примерами. Все они пошли по различному пути реализации мульти-платформенности и имеют свои преимущества и недостатки. Подытожу следующим:

  • Используйте PhoneGap, если интерфейс вашего приложения не выходит за границы браузера. Вы с легкостью закодируете ваше приложение с использованием HTML/CSS/JavaScript и всех ваших любимых средств, которые вы использовали при веб-программировании. Главное не перестараться – производительность ограничена браузером.
  • Знаете Ruby? Хотите выйти на всех основных платформах? Хотите “нативный лук”? Тогда ваш выбор Rhomobile. А если немного раскошелитесь, то получите доступ к ряду полезных сервисов, которые сделают разработку быстрой и гладкой.
  • Если вы нацелены на Android и iOS, то смысла учить Ruby я не вижу, поэтому выбираем Appcelerator. Вы получите полностью родное приложение для целевой платформы и даже сможете посмотреть на его код.

На последок приведу табличку. Куда же без нее?

Appcelerator Rhomobile PhoneGap
Поддерживаемые платформы
Android Да Да Да
BlackBerry Планируется Да Да
iOS (iPhone/iPad) Да Да Да
Symbian Нет Да** Да
WebOS Нет Да Да
Windows Phone 7 Нет Да** Да
Поддерживаемые ОС для разработки
Mac Да Да Да
Linux Да* Да* Да*
Windows Да* Да* Да*
Особенности фреймворка
Язык разработки Javascript, Native
возможно Python, Ruby, PHP
Ruby/HTML, Native HTML/JavaScript, Native
Доступ к нативному коду Да Да Да
Нативный вид Да Да Нет

*кроме iOs
**многие возможности пока не поддерживаются, но скоро обещают добавить

При написании статьи была использована информация из следующих статей:

5 комментариев

1 пинг

  1. Razor Сообщает:

    Вот бы еще пример “hello world” в каждом фреймфорке =)

    1. PandaСoder Сообщает:

      займусь как будет время, уже думал над этим

  2. AGvin Сообщает:

    что имеется ввиду под словами “Нативный вид” в табличке сравнений?

    1. PandaСoder Сообщает:

      Нативные вид, значит что приложения буду выглядеть на каждой платформе по-своему, то есть навигейшен бар в ios будет ios’овский, а в андроиде будет андроидовский.
      А приложения сделанные на PhoneGap будут выглядеть одинаково на всех платформах.

  3. tsilikovis-mp3 Сообщает:

    Хоть б год публикации был б заголовке! А то только по датам комментариев становится ясно, что это, похоже, было уже 2 года назад, а не 17 марта нынешнего года.

  1. Я хочу программировать под Android. Вопрос #1 | Java-Help Сообщает:

    […] Titanium (сравнение фреймворков можно посмотреть здесь). Любителям C# может подойти Xamarin. Но все же я советую […]

Добавить комментарий

Мы сохраним Ваш e-mail в тайне.