QA Fest — конференция №1 по тестированию и автоматизации. Финальная программа уже на сайте >>
×Закрыть

Appcelerator Titanium. Лучшая платформа для RIA-приложений?

logoПробуя различные веб-приложения, конечно же на AJAX, да и сам разрабатывая их, я часто замечаю, что все же «тормоза». Пусть я использую последние версии и все их возможности, но ведь типичная ситуация — открыто одно или несколько окон браузера, в них еще с десяток-полтора вкладок. В результате — желая запустить параллельно еще какое-либо веб-приложение, я уже получаю серьезные проблемы. Да и чего таить, бывает, что из-за какой то страницы браузер падает, что задевает и наше приложение. Советующие Google Chromе также не решают проблему, хотя в нем, в силу оригинальной архитектуры, некоторые проблемы не так заметны.

Если описанное вам знакомо, значит проблема очерчена, теперь посмотрим на решение. Раз веб-приложению в браузере приходится конкурировать за ресурсы (и за сам браузер, и за системные) с другими открытыми страницами, то самое очевидное решение — выделить отдельный браузер для веб-приложения. Сначала по такому пути пошли в Mozilla Labs в проекте Prism, потом эту идею развил Google, добавив возможность любую страницу выделить в веб-приложение. Немного другим путем пошли разработчики Adobe, создав платформу для веб-приложений AIR, которая уже достаточно известная и популярная, чтобы о ней много рассказывать. Но не один одни думали в том же направлении, да и сам AIR при всех его преимуществах, имеет ряд недостатков и просто пожеланий по улучшению. А от недавнего времени у него появился еще один, достаточно сильный и функциональный конкурент — Appcelerator Titanium.

И так, Titanium — это первая полностью открытая платформа для разработки, развертывания, распространения, и, в конечном итоге, для исполнения веб-приложений, а точнее, RIA-приложений. Да, я не ошибся, описав столько функций. В отличие от AIR, который именно среда исполнения (да ещё и разделяемая) и содержит зачаточные возможности для развертывания приложений, Titanium сразу дает возможность разрабатывать, тестировать и распространять свои приложения, при этом изначально для всех популярных платформ (Win32, MacOS, Linux). Кроме того, это действительно открытая платформа (Apache Public License 2), выложены все исходные коды и инструкции для сборки SDK под все платформы, а сама разработка идет через популярный сервис Github. Это серьезное отличие от закрытой AIR-среды и может иметь решающее значение при выборе платформы, особенно для нетривиальных решений или когда хочется расширить платформу собственными компонентами.

А что же там внутри?

Архитектурно, Titanuim достаточно близкий аналог AIR-а. Основой всего является движок рендеринга Webkit (версия от 16 марта), который дополнен флеш-плагином. Вокруг этого есть прослойка фреймворка, предоставляющего API для приложений, пока доступно три языка на выбор (и это уникальная «фича») — JavaScript, Ruby и Python. При этом в одном приложении можно смешивать языки, что позволяет получить достаточную гибкость. Кстати, сама платформа также расширяемая и использует Ruby или Python для написания модулей (можно посмотреть скринкаст о написании модулей), однако часть из компонент написаны на С/С++. Пока не ясно, можно ли получить из JS-кода доступ к модулям, написанных на других языках.

create_project_packaje

Стандартом для RIA-платформ является предоставление программам расширенного API и специфических компонент, ненужных для обычных веб-страниц. Впервые это попробовала сделать Google с плагином Gears, теперь этот функционал считается базовым для всех платформ. Titanium предоставляет встроенную базу данных, традиционно это SQLite, что уже приближает то, что обычные браузеры получат массово ещё через пару лет после полной поддержки HTML5 (хотя некоторые уже сейчас это поддерживают). В текущем релизе в Titanium-е используется тот же модуль, что и в самом движке Webkit, однако разработчики обещают в будущем расширить его поддержку и добавить новую функциональность.

Веб-приложение всегда было ограничено в доступе к файловой системе компьютера пользователя, а точнее — вообще не знало о ее существовании. Это было приемлемым для веб-страниц, но RIA-приложения, в погоне за схожестью с их настольными собратьям, сильно нуждались в тех же возможностях по работе с локальными файлами. В Titanuimе есть встроенные классы для работы с файловой системой, при этом функционал их достаточно развит, чтобы облегчить разработчику его нелегкую жизнь. Кроме этого, предоставляется интерфейс FileStream, позволяющий напрямую читать и писать любой указанный файл. Теперь уже можно вполне писать приложения, ни чем не ограничивающие пользователя и обрабатывающие не только загруженные на сервер файлы, но и данные из любого указанного места.

Мультимедийные возможности Titanium пока отстают от AIR, хотя это вряд ли станет препятствием для серьезных приложений — необходимый минимум в виде работы с системным динамиком (тем самым биппером) и проигрывание MP3 в нем все же есть, остальное уже придется реализовать самостоятельно или через внешние библиотеки, ну или все тем же незаменимым Flash.

А вот самым главным, по моему мнению, является сетевая подсистема, и очень желательно, чтобы это не был банальный XMLHTTPRequest объект. Конечно, как выход, всегда есть возможность использовать возможности Flash, например, сокеты, однако мы же говорим о целой платформе. В Titanium c этим не просто хорошо, а вообще отлично! Сама платформа поддерживает TCPSocket-ы, поэтому вы можете использовать собственные каналы и протоколы связи с сервером, освобождая XHR для других функций, а то и полностью заменив его. А в качестве бонуса, в платформу уже встроены возможности работы напрямую с IRC-сетями, пока правда только в качестве клиента. Но как минимум, это облегчает создание различных систем общения, например, веб-чата. Этот функционал используется в самой среде Titanium для разработчиков (по сути — главное приложение, написанное на самой платформе), такой себе импровизированной IDE, где встроена система общения внутри комьюнити разработчиков, а каждый, загрузивший и начавший работать с платформой, сразу становиться участником этой сети и может получить помощь или совет.

Некоторые системные возможности являются уникальными для RIA-приложений, например, возможность через простой JavaScript API работать с межпроцессными каналами (pipe), получать информацию о текущем процессе и т. п. Это, правда, понижает уровень абстракции, который традиционно высокий для веб-приложений, но часто именно такие низкоуровневые функции могут помочь реализовать нестандартную идею.

sandbox

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

Отдельно следует сказать о самих приложениях. Если в AIR-е приложение (пакет.air) содержит только код вашего приложения, который при установке развертывается внутри среды исполнения, которая общая для всех, то подход Titanium-а кардинально другой. При создании пакета (что в терминах проекта и является конечным приложением, распространяемым среди пользователей) вы гибко настраиваете среду, выбирая только те компоненты платформы, которые вам нужны. Например, если в вашем приложении не используются скрипты на Ruby или Python, просто исключите их, и они не попадут в дистрибутив. Недостающие части могут также загружаться из сети, экономя на объеме дистрибутива. После этого Titanium, используя сервисы сборки на серверах компании, создает упакованные дистрибутивы вашего приложения, для выбранных платформ. В результаты вы получаете родной исполняемый файл, например,.exe, который содержит кастомизированную под ваши нужды саму платформу Titanium и файлы вашей разработки. Устанавливается такое приложение как и обычное, а если вы хотите использовать их несколько сразу, то каждая программа использует свой экземпляр платформы Titanium, не конкурируя за ресурсы (кроме системных). По моему, единственный минус, хоть и небольшой, это увеличение размера инсталляционного пакета — это уже не сотни Кб для AIR-пакета, а 10–30 Мб, хотя сегодня такие размеры уже никого не удивляют. Кстати, внутри это обычный самораспаковывающийся Zip-архив, да и некоторые компоненты дублируются, поэтому в будущем есть еще большой потенциал для уменьшения объема. Но такой подход избавил разработчиков думать о распространенности платформы среди пользователей, это вообще не нужно, важно только занять нишу разработчиков, что не в пример проще.

app

Разработчики встроили в Titatuim собственную среду распространения приложений. После сборки, ваша программа получает свою страницу на серверах компании, где пользователь может выбрать нужную ему версию, прочитать сопроводительную информацию и узнать больше о самой платформе. Вы же можете следить за статистикой загрузок для каждой платформы, оценивая востребованность той или иной сборки. Конечно, если не хочется светить свое творение, можно сделать его приватным и никто не узнает, пока вы сами не расскажите. Ну, а пока другие загружают и исследуют ваше творение, вы можете посмотреть каталог уже готовых приложений, проголосовать за них или подсмотреть, над чем же работают коллеги — пока самым скачиваемым приложением является Raviex Videos для поиска и просмотра видеороликов с популярных сайтов, вторым идет небольшая утилита, интегрирующая в трей переводчик, использующий Google Language API.

В завершении стоит отметить еще две особенности Titanium-а. Одна будет не самой приятной — в настоящее время, похоже, ни один из популярных AJAX-фреймворков не знает о такой платформе, хотя это и понятно, всего-то третья версия и то в статусе превью. Но сам Титан знает об Ajax, а конструктор приложения позволяет одним кликом выбрать нужные вам библиотеки и включить их в скелет приложения (на выбор есть Dojo, jQuery, Prototype, Mootools, YUI и другие). Для разработчика, который хочет просто «поиграть», без особого желания создавать целое приложение, есть простая песочница, где можно накидать код, обычно не длиннее пары десятков строк, и сразу же просмотреть его в действии.

ajax_lib_add

И что теперь?

Titanium это не просто разработка еще одной платформы для запуска веб-приложений в изолированной среде. Это больше применимо к его конкуренту от Adobe, хотя, если присмотреться, то и не конкурент вовсе, слишком уж разные подходы. Titanium это модульная среда исполнения RIA-приложений, построенная вокруг движка Webkit, интерпретаторов JavaScript, Ruby и Python. Titanium это полностью открытая платформа, исходные коды для сборки доступны всем желающим. Titanium это специальная среда для разработчика, где можно по-быстрому проверить код в песочнице, создать общую структуру приложения и управлять своими проектами, автоматизировать сборку для различных платформ. Titanium это инфраструктурные сервисы, которые упрощают сборку проекта, хостинг, собирают статистику загрузок, а также комьюнити разработчиков, которое всегда доступно через встроенный в среду IRC-чат. В конце-концов, Titanium это возможность создавать RIA-приложения полностью независимые от среды, ведь инсталляционный пакет включает саму платформу, а значит для работы ему не надо быть столь же популярным, как AIR, для пользователей это просто ещё одно приложение.

И хотя сейчас мы видим только версию 0.3, платформа активно развивается и следует ожидать, что может вполне занять свое место в мире RIA-технологий, и отнюдь не последнее. Но Titanium это только кирпичик, пусть и большой, в общей архитектуре RIA-приложений от компании Appcelerator. Если посмотреть на из веб-сайте, обнаружится много чего интересного, вроде ajax-фреймворка Entourage, который сам по себе заслуживает отдельного материала.

P.S. Как вы считаете, что же окажется крепче — титан или воздух? Давайте обсудим...

LinkedIn

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

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

К слову, «i» как «interactive» стали расшифровывать мелкомягкие, когда придумали сервелат, ибо у них в жопе зудит, чтобы просто влится в то, что уже есть =)

Спасибо автору статьи. Хотел добавить, что сам фреймворк страдает жутко убогой документацией...

ну раз вы дублируете вопросы...

да, только Java Runtime надо и последняя версия, так как в ранних нет поддержки.

JavaFX исполняется в Java-машине, да. Я и не говорил, что есть именно отдельный рантайм для JavaFX. Важно, этот рантайм есть и каждое JavaFX-приложение устанавливать отдельно не надо.Глупо дальше дублировать ответы с хабра, дам просто ссылку для желающих: http://habrahabr.ru/blogs/AJAX...

Кстати, JavaFX вы явно не разобрались, что это такое. Только язык, никак не платформа. Платформа там — Java и надежда на новую архитектуру апплетов, которые уже гораздо серьезнее.

Отвечаю: Скажите пожалуйста, это ваши слова о RIA — «RIA для того придумали, что пользователь не любит и не хочет устанавливать новые приложения. RIA работают без установки, достаточно, чтобы у пользователя уже был нужный рантайм. Если надо отдельно устанавливать — это не RIA.» — и, если можно, дайте все же ссылки на источники, например, документы адоба, где начали использовтаь это слово или презентации (кстати, не так давно была на риф-е две презентации от адоба и ms по этому вопросу. Вот, пожалуйста, дайте ссылки от тех, кто придумал, что они именно это придумали, а не остальные потом додумали. Снова таки — при всей индустрии нет устроявшегося трактования термина, при этом с определенного времени, I начали расшифровывать как Интерактивные. Но общим стало использование веб-технологий, где уже был Flash, который уже де-факто веб-технология, а потом пошли остальные, часто совершенно другие, о пробивающиеся на рынок. Флеш никак не риа-платформа, вернее — с очень большой натяжкой, хотя часто это основной компонент. А что я писал о том, что только аир делает? Silverlight — это больше конкурент для Flash именно, хотя в ряде вещей отличается. апплеты — никак не в эту степь, при всей схожести. JavaFX — без году неделя, хотя многообещающе. AJAX — да. НО это все СРЕДСТВА, а не платформа рантайма. Мне кажется, вы путаете все эти понятия, RIA/платформа и т.п.

Александр Лозовюк, дублирую сюда мой ответ с хабра (где вы отметились ссылкой на эту статью; -) RIA для того придумали, что пользователь не любит и не хочет устанавливать новые приложения. RIA работают без установки, достаточно, чтобы у пользователя уже был нужный рантайм. Если надо отдельно устанавливать — это не RIA.И, похоже, вы в этом слабо разбираетесь, раз пишите, что только AIR так делает. Так делают все, кто называет себя RIA-платформой: — Flash с давних времен— Silverlight— Java Applets— JavaFX— AJAX-технологии (тут рантайм — сам браузер)

alex — вы не правы. Это последний тренд (пару лет) в разработке кроссплатформенных приложений. И дальше даже часть системных приложений в ОС переходят на нее.

Сергей Дымченко — везде вы отметились:) Какая-то ерунда.Почему вдруг автор комментария решил, что в RIA именно I = internet? По этому поводу нет согласия даже среди тех, кто впервые ввел термин, и его значения от того времени поменялось.Кстати, на первой странице все же написано: web, desctop and mobile, если уже придираться.А где указано, что в RIA главное, общий ринтайм? Это только AIR так делает и это не единственный подход, в котором есть свои минусы.

Какая-то ерунда.Почему вдруг автор статьи решил, что это платформа для RIA (rich internet application)? Сами авторы фреймворка пишут, это platform for building rich desktop applications using web technologiesВ RIA главное — общий рантайм, который один раз установил, а потом все программки его используют.

PomAH4uKЕсть еще JavaFX, такая же Java, как и Javascript.

Александр ЛозовюкПлатформа = фреймворк на стероидах. RIA живут по соседству со сферическим конями. В вакууме. Т.е. в теории идея интересная, но практически — нафига?!

В 30 МБ Mайкрософт багато цікавого могла б помістити, аля 3D.А чи э ще якісь цікаві лінки на аплікації даного «виду».

java web startне понимаю все этой RIA AIR и т.п., если мы работаем вне браузера, объясните почему java не подходит? ^^’

Спробував траслятор... 15 метрів... не підтримує віндозних стилів, купа проблем з уі, незрозуміло як його в трей сховати. Залишив глочку щоб на десктоп іконку... нема на десктопі іконки...

вы все в кучу, простите, свалили. при чем тут фреймворки и прочие? это платформа для RIA-приложений. с некоторыми очень сильными сторонами

Такой себе Borland Delphi для web 2.0. Прекралил смотреть http://www.vimeo.com/3361107 в тот момент, когда началась презентация встроенного twitter клиента. Для бизнес-приложений, которые непременно нужно запускать в браузере, есть GWT. Остальное все так же лучше писать руками используя что-то вроде django. samsung.ru, philips.ru — добавленной стоимости от новых технологий 0. Такие фреймворки хороши для продажи заказчику вау-эффекта при минимальной затрате ресурсов на разработку. С технологической точки зрения — респект ребятам.

Подписаться на комментарии