Appcelerator Titanium. Лучшая платформа для RIA-приложений?
Пробуя различные веб-приложения, конечно же на 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-кода доступ к модулям, написанных на других языках.Стандартом для 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), получать информацию о текущем процессе и т. п. Это, правда, понижает уровень абстракции, который традиционно высокий для веб-приложений, но часто именно такие низкоуровневые функции могут помочь реализовать нестандартную идею.
Рассказывать о том, что есть возможность управлять приложением, переводить его в полноэкранный режим, управлять иконками и контекстным меню, сворачивать в трей и другие операции, наверное нет нужды, это уже классические возможности, просто необходимые для веб-приложений.
Отдельно следует сказать о самих приложениях. Если в AIR-е приложение (пакет.air) содержит только код вашего приложения, который при установке развертывается внутри среды исполнения, которая общая для всех, то подход Titanium-а кардинально другой. При создании пакета (что в терминах проекта и является конечным приложением, распространяемым среди пользователей) вы гибко настраиваете среду, выбирая только те компоненты платформы, которые вам нужны. Например, если в вашем приложении не используются скрипты на Ruby или Python, просто исключите их, и они не попадут в дистрибутив. Недостающие части могут также загружаться из сети, экономя на объеме дистрибутива. После этого Titanium, используя сервисы сборки на серверах компании, создает упакованные дистрибутивы вашего приложения, для выбранных платформ. В результаты вы получаете родной исполняемый файл, например,.exe, который содержит кастомизированную под ваши нужды саму платформу Titanium и файлы вашей разработки. Устанавливается такое приложение как и обычное, а если вы хотите использовать их несколько сразу, то каждая программа использует свой экземпляр платформы Titanium, не конкурируя за ресурсы (кроме системных). По моему, единственный минус, хоть и небольшой, это увеличение размера инсталляционного пакета — это уже не сотни Кб для AIR-пакета, а
Разработчики встроили в Titatuim собственную среду распространения приложений. После сборки, ваша программа получает свою страницу на серверах компании, где пользователь может выбрать нужную ему версию, прочитать сопроводительную информацию и узнать больше о самой платформе. Вы же можете следить за статистикой загрузок для каждой платформы, оценивая востребованность той или иной сборки. Конечно, если не хочется светить свое творение, можно сделать его приватным и никто не узнает, пока вы сами не расскажите. Ну, а пока другие загружают и исследуют ваше творение, вы можете посмотреть каталог уже готовых приложений, проголосовать за них или подсмотреть, над чем же работают коллеги — пока самым скачиваемым приложением является Raviex Videos для поиска и просмотра видеороликов с популярных сайтов, вторым идет небольшая утилита, интегрирующая в трей переводчик, использующий Google Language API.
В завершении стоит отметить еще две особенности Titanium-а. Одна будет не самой приятной — в настоящее время, похоже, ни один из популярных AJAX-фреймворков не знает о такой платформе, хотя это и понятно, всего-то третья версия и то в статусе превью. Но сам Титан знает об Ajax, а конструктор приложения позволяет одним кликом выбрать нужные вам библиотеки и включить их в скелет приложения (на выбор есть Dojo, jQuery, Prototype, Mootools, YUI и другие). Для разработчика, который хочет просто «поиграть», без особого желания создавать целое приложение, есть простая песочница, где можно накидать код, обычно не длиннее пары десятков строк, и сразу же просмотреть его в действии.
И что теперь?
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. Как вы считаете, что же окажется крепче — титан или воздух? Давайте обсудим...
18 коментарів
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.