Pull to refresh

Appcelerator Titanium — что это и как оно там

JavaScript *
Данная статья посвящена Appcelerator Titanium — платформе для создания мобильных и десктопных кроссплатформенных приложений на JavaScript (HTML+CSS в придачу). Развитие платформы, особенности, варианты использования, личный опыт

В общем


Appcelerator Titanium — стартап в кремниевой долине, с активной базой разработчиков, подбирающейся к 50 000 (по их словам). Что отрадно, подавляющая часть компонентов платформы доступна под Apache 2 лицензией, исходный код доступен на github. Ребята достаточно открыты, пишут и читают твиттер, и, судя по коммитам, пашут без выходных.
Слоган разработчиков: «Build native mobile and desktop apps with web technologies», думаю понятен и без перевода, этакий велосипед для web-разработчиков для легкого старта на новой платформе. Далеко не первая попытка решить данную проблему указанными инструментами.

Titanium Desktop


Как это все работает: WebKit, расширенный дополнительным JavaScript объектами пакуется в исполняемое приложение для Windows, Linux, MacOSX.
Думаю, на вопрос «А зачем нам второй Adobe AIR?» разработчики отвечали не раз и не два. Думаю, все дело в своем Лунапарке. Если основная идея Adobe AIR это «Запускайте все подряд, каждое приложение в своей песочнице, в ущерб возможностям», то Titanium это гораздо более богатый API, но и отсутствие какого-либо контроля за приложением. Что доступно: все, что может дать Adobe AIR плюс процессы (создание, ввод/вывод), HTTP сервер, готовая очередь для асинхронных событий, интеграция с growl и аналогами.
Чтобы быть честным перед разработчиками, скажу, что JavaScript — не единственный доступный язык, можно так же выбрать Python, Ruby, PHP и иметь в виду, что виртуальная машина добавится к дистрибутиву, тогда как JavaScript первороден.
Titanium — это не только SDK, но и облачная платформа для сборки и распространения приложений. В обин клик новый билд расползается по клиентам, что очень здорово (сам пробовал). За денюжку можно оснастить приложение аналитикой (этакий Google Analytics для десктоп)

Titanium Mobile


История продукта немного драматична. Решив, что деньги не на десктопе а в мобильнике, команда начала клепать мобильную версию фреймворка. Взяли WebView, запихали туда JavaScript объекты для доступа к акселерометру, GPS, DB и первая версия готова. Вот вам CSS, HTML, jQuery — пишите. Кстати говоря, один из конкурентов, rhomobile.com именно так и работает. Посмотрели на все тормоза, и решили написать все заново. Теперь взяли SpiderMonkey для iPhone, Rhino для Android, и обернули все нативные элементы UI в JavaScript. И немного кинули разработчиков, которые уже начали писать на HTML+CSS, до сих пор на сайте встречаются вопросы типа «Ээээ, а куда вы это все дели?» Получился быстрый кроссплатформеннй движок для современных мобильных платформ, с реальной поддержкой Native Look'n'Feel. Сейчас доступны Android и iPhone, летом будет поддержка Blackberry.

Личные впечатления


Я пишу в свое удовольствие, последняя моя поделка имеет десктопную и мобильную версии и я выбрал Titanium для обеих. Откровенно говоря, Ti Desktop и Ti Mobile не имеют ничего общего, кроме пространства имен и шаблонов (конструкторы не в почете, везде используются Factory). Но единый язык для двух проектов позволяет использовать один код для бизнес-логики, что сэкономило кучу времени. Баги — есть, и их немало. Я понимаю разработчиков, они хотят охватить как можно большую нишу сегодня, тут вам и iPad, и iPhone 4 и Blackberry, а уж потом делать так, чтобы это работало нормально. Поэтому стараюсь открывать как можно больше багов в трекере, мне, как и им нужна рабочая версия. Возможно ли написание по-настоящему кроссплатформенного приложения? Пока нет. Множества UI компонентов iPhone OS и Android конечно пересекаются, но не полностью, да это и не возможно, пока приходится писать довольно часто if(isIPhone) {} if(isAndroid) {}. Но мне нравится настрой разработчиков, думаю им это по силам.

Что дальше?


Web site: appcelerator.com
Developer portal: developer.appcelerator.com
KitchenSink: github.com/appcelerator/KitchenSink — демонстрация основных возможностей мобильной платформы
Tags:
Hubs:
Total votes 46: ↑44 and ↓2 +42
Views 38K
Comments Comments 44