Так исторически сложилось, что технологии, используемые при создании веб-приложений и их десктопных собратьев, значительно разнятся. Универсальные подходы (чаще всего основанные на десктопных идеях), приемлемые в обоих случаях, так и не прижились, хотя попытки изобрести их не прекращаются с момента появления первых динамических веб-страниц. И уж совсем никто, пожалуй, не ожидал, что веб-инструменты не только окажутся пригодными для разработки традиционного ПО, но и смогут предложить определенные преимущества.
Который год не утихает шумиха вокруг веб-приложений – многим кажутся привлекательными такие их качества, как доступ отовсюду, где есть браузер и подключение к Интернету, врожденные способности для организации совместной работы, отсутствие потребности в создании локальных резервных копий и, конечно, бесплатность. Действительно, если для десктопного ПО бизнес-модель, предусматривающая безвозмездное его распространение, не лишена недостатков, то для веб-приложений она подходит гораздо лучше, ведь сопутствующие им сервисы и сайты выступают в качестве рекламной площадки, способной во многих случаях приносить вполне адекватные доходы.
Архитектура Adobe AIR |
Еще в начале 2000-х годов компанией Macromedia была предложена концепция Rich Internet Applications (RIA), подразумевающая наделение веб-приложений функциями и свойствами десктопных. Тем не менее до настоящего времени первым так и не удалось заметно потеснить последних, чаще всего их уделом остается лишь ситуативное применение. Наиболее очевидным препятствием для повсеместного распространения веб-приложений выступает ограничение пропускной способности каналов связи, которая растет гораздо медленнее, чем производительность микропроцессоров и объемы обрабатываемых на локальных системах данных. Немалую роль здесь играет даже чисто психологический аспект, ведь перебои с соединением означают отсутствие доступа и к программам, и к документам. Естественно, предпринимались попытки если не полностью устранить эти недостатки, то, по крайней мере, максимально нивелировать их влияние.
Среда AIR полностью управляет процессом установки приложения |
Первым значительным шагом в этом направлении стала технология AJAX, призванная в первую очередь сократить количество используемых веб-страниц и переходов между ними, дабы обеспечить «реактивность» интерфейса, характерную для десктопных решений (сегодня AJAX является де-факто стандартом). Затем возникло понимание того, что веб-приложения хоть отчасти должны сохранять свою функциональность при работе в офлайне – речь должна идти как минимум о локальном хранении файлов (и прозрачной синхронизации), а также предоставлении доступа к возможностям ОС.
Впрочем, в последнем вопросе (и особенно в деталях реализации) единого мнения пока нет. Поэтому каждый стремится предложить нечто свое, как и поступила в конце февраля компания Adobe, объявив о выпуске технологии для создания RIA под названием AIR (Adobe Integrated Runtime), ранее известной как проект Apollo. И очень похоже, что традиционные в подобных случаях обещания чего-то инновационного не так уж далеки от действительности.
Работать с онлайновым аукционом при помощи eBay Desktop оказывается куда приятнее, чем посредством браузера |
Прежде всего отметим, что AIR, как платформа для выполнения RIA в том числе и в офлайновом режиме, подобно обычным десктопным приложениям предполагает развертывание на локальном компьютере некой среды (размер загружаемого модуля чуть превышает 11 МБ). Предоставляется она совершенно бесплатно, равно как и соответствующий SDK для разработчиков. Очень похвально, что Adobe не стала изобретать велосипед и построила свое решение на базе наиболее признанных и распространенных технологий вроде HTML и JavaScript, в том числе и собственных – Flash и PDF.
Однако в отличие от многих других RIA AIR-приложения исполняются вне браузера и потому практически не отличаются от обычных программ. Они распространяются в виде файлов с расширением .air, при попытке запуска которых открывается управляющая панель AIR, где и происходит инсталляция. К примеру, в Windows весь код копируется в стандартную папку Program Files, а ярлыки приложений появляются в меню Пуск или на рабочем столе – по выбору пользователя. В процессе дальнейшей работы «опознать» их по каким-либо внешним признакам почти невозможно.
Но главное, конечно, что AIR предоставляет разработчикам.
Во-первых, AIR доступна на различных платформах – сейчас поддерживаются Mac OS X и Windows, вскоре к ним присоединится Linux, а в будущем, вероятно, и мобильные платформы.
Adobe Kuler делает доступной на десктопе одноименную службу по подбору цветовых палитр с официального сайта компании |
Во-вторых, AIR обеспечивает тесное взаимодействие с локальной ОС, что вообще-то нехарактерно для RIA. Приложения получают доступ к файловой системе, регистрируют обработчики расширений файлов, используют стандартные меню и диалоговые окна, обращаются к буферу обмена, размещаются в списке автозапуска ОС. Они могут оформляться в многооконном стиле, поддерживать операции Drag-n-Drop, взаимодействовать по сети и пр.
В-третьих, среда исполнения AIR берет на себя заботы по загрузке и инсталляции приложений, их автоматическому обновлению, управлению правами доступа. В ней можно запретить установку неподписанного кода или контролировать вызовы к файловой системе.
В-четвертых, AIR подразумевает привычные способы разработки. Среда исполнения, по сути, представляет собой специализированный браузер на движке WebKit, также используемый в Safari. Соответственно, приложения строятся из HTML и JavaScript, при этом можно задействовать популярные AJAX-инструментарии, а внешний контент помещается в «песочницу», подобную той, посредством которой современные браузеры ограничивают потенциально опасные скрипты от доступа к системе. Помимо прочего, все это позволяет существенно сократить объем работы при необходимости одновременного создания онлайновой и AIR-версий.
В-пятых, AIR получила все атрибуты для реализации именно веб-приложений с возможностью офлайновой работы, в частности, криптостойкое хранилище данных, реляционную СУБД (SQLite), механизмы взаимодействия с удаленными веб-службами и окном браузера, исполняемого локально.
Наконец, отметим тесную интеграцию AIR с прочими инструментами Adobe – обеспечивается рендеринг PDF-файлов, для построения интерфейса и декодирования мультимедиа задействуется Flash (с помощью открытой виртуальной машины Tamarin), а для многих прежних инструментов Adobe имеются функциональные расширения. Например, после установки AIR SDK популярная программа для создания HTML-страниц DreamWeaver CS3 может использоваться для создания и предварительного просмотра AIR-приложений. В качестве же основного средства разработки предлагается IDE Flex Builder, основанная на Eclipse и способная отлаживать AIR-код.
Еще на этапе подготовки AIR компания Adobe успела заручиться поддержкой широкого круга программистов, и к моменту выхода первой версии платформы публике было представлено достаточно интересных проектов.
Пожалуй, самое заметное решение на основе AIR – eBay Desktop – приложение, позволяющее без браузера воспользоваться услугами популярнейшего онлайнового аукциона. Оно устойчиво работает даже на медленных соединениях, а его интерфейс функциональнее и удобнее традиционных веб-страниц. К тому же имеется ряд возможностей, по определению недоступных в браузере (к примеру, свертывание в системную область панели задач). Многие остались чрезвычайно довольны eBay Desktop – вполне вероятно, что большинство из тех, кто уже испытал его в деле, больше не станут пользоваться браузером для совершения покупок.
В качестве примера из несколько иной области приведем еще один продукт – Analytics Reporting Suite, с помощью которого можно получать информацию от службы Google Analytics и строить отчеты на ее основе. Причем программа не просто дублирует возможности упомянутой онлайновой службы Google, но кое в чем и превосходит ее.
Сама Adobe пока не выпустила серьезных AIR-приложений (несколько простых демонстрационных программ на сайте не в счет), но дала понять, что не собирается ограничиваться исключительно поставкой среды исполнения и инструментальных средств. В частности, имеется подтверждение того, что полным ходом идет разработка AIR-версии текстового редактора Buzzword, который был создан компанией Virtual Ubiquity, приобретенной Adobe осенью прошлого года. Также ходят слухи о возможной подготовке AIR-версии онлайнового аналога Photoshop, определенно занимающего не последнее место в планах компании.
Таким образом, Adobe AIR постепенно приобретает популярность среди программистов, чему, несомненно, способствуют знакомые им технологии, на которых основана эта платформа.
Ситуация с конкурентами выглядит двояко. С одной стороны, в вопросах использования традиционных веб-технологий для десктопных решений AIR достаточно инновационна, чтобы не иметь прямых аналогов. C другой, сегодня существует немало подходов для построения RIA, в том числе и с возможностью офлайновой работы.
Среди последних, пожалуй, прежде всего следует выделить инструмент Google Gears, основанный на схожих с AIR принципах (разве что приложения, созданные с его применением, выполняются в браузере) и представляющий собой подключаемый модуль. Он все еще находится на стадии бета-тестирования, но становится все популярнее, как, впрочем, и многие другие решения и сервисы от Google. На ее стороне – непререкаемый авторитет в области интернет-технологий, хотя в техническом плане никаких особых преимуществ у Gears не обнаруживается (скорее, все говорит в пользу Adobe AIR). Компактность (а размер дистрибутива Gears составляет всего 200 КБ) в данном случае вряд ли можно отнести к достоинствам, поскольку возможности, предоставляемые AIR, гораздо шире.
У Google имеется и еще одна технология, хоть и отличающаяся идейно от Gears и рассматриваемой нами AIR, но также вполне пригодная для создания RIA – Google Web Toolkit (GWT). Она примечательна тем, что помогает кардинально упростить разработку веб-приложения за счет того, что вся его логика изначально программируется на Java, а затем автоматически трансформируется в AJAX-приложение. Хотя GWT и не позиционируется сама по себе как средство для создания офлайновых приложений, она имеет встроенную поддержку Google Gears и совместно с ней представляет весьма мощную платформу с гибкими возможностями. Таким образом, в данном вопросе связка Gears/GWT напрямую конкурирует с AIR/Flex.
Много шума наделала Microsoft со своей технологией Silverlight, вторая версия которой должна увидеть свет уже в нынешнем году. Ожидается, что именно она откроет для большой армии .NET-разработчиков ворота в мир веб-приложений. Маловероятно, что Silverlight будет напрямую конкурировать с AIR или Gears в Вебе, а вот в десктопном сегменте их борьба обещает быть весьма напряженной. Занятно, что изначально Silverlight вроде бы противопоставлялась Flash, но выход AIR явил нового и, пожалуй, более сильного конкурента.
Analytics Reporting Suite предоставляет иной взгляд на службу Google Analytics |
Не собирается стоять в стороне и Sun Microsystems. Известно, что Java, чрезвычайно распространенная на всевозможных устройствах – от мобильных телефонов до бытовой техники – так и не смогла завоевать популярность среди веб-разработчиков, которые в своем большинстве Java-апплетам предпочитают более привычные HTML и JavaScript. И вот на конференции JavaOne в мае 2007 г. была представлена новая инициатива JavaFX (sun.com/javafx), объединяющая целое семейство продуктов, нацеленных именно на создание интернет-приложений с развитым пользовательским интерфейсом, в том числе мультимедийных. Изначально JavaFX воспринималась как ответ Sun Microsystems на технологию Silverlight от Microsoft, но теперь, очевидно, ей предстоит конкурировать и с Adobe AIR.
Приложениям на JavaFX требуется среда Java Runtime Environment (JRE), причем исполняться они могут и в браузере, и в собственном окне. Кроме того, уже существует специальная платформа JavaFX Mobile (ориентированная на мобильные устройства), представляющая собой мини-дистрибутив Linux, поверх которого функционирует все та же JRE.
Еще, пожалуй, следует упомянуть OpenLaszlo – открытый проект, поддерживаемый компанией LaszloSystems. Он довольно близок AIR в том, что для создания интерфейса веб-приложений активно использует Flash. Хотя OpenLaszlo и не относится к технологиям, находящимся постоянно на слуху, это достаточно зрелая платформа: ее первая версия увидела свет еще в 1993 г. Сегодня ее применяют, к примеру, такие именитые компании, как Yahoo! и EarthLink, а число пользователей приложений, созданных на ее основе, исчисляется миллионами.
Архитектура OpenLaszlo предусматривает клиентский и серверный уровни. На первом функционирует среда исполнения, использующая локальный Flash-проигрыватель, а на втором предполагается применение платформы J2EE с соответствующим серверным компонентом OpenLaszlo. Впрочем, от специализированного сервера можно и отказаться, отдав предпочтение таким технологиям, как PHP или CGI. В таком случае приложения OpenLaszlo трансформируются в SWF-файлы и работают полностью под управлением Flash-проигрывателя. Полновесный же вариант позволяет создавать довольно сложные и масштабируемые решения, вписывающиеся в глобальную концепцию J2EE.
Наконец, нельзя обойти вниманием FireFox 3 – следующую версию уже весьма популярного браузера, обещающего стать первым со встроенной поддержкой функционирования веб-приложений в офлайновом режиме. Вполне возможно, что отдельные разработчики ограничатся стандартными функциями браузера вместо того, чтобы связываться с подключаемыми модулями и средами исполнения, хотя в таком случае их аудитория сузится только до пользователей FireFox.
Подводя итог знакомству с AIR, следует признать, что Adobe смогла удивить. Учитывая внушительный перечень конкурирующих технологий, компания предложила весьма оригинальный подход к RIA, среди прочего отказавшись от такого вроде бы обязательного промежуточного звена, как браузер – и это очень принципиальный момент. Действительно, для современного веб-разработчика создание приложений, интенсивно использующих JavaScript, в особенности в рамках AJAX, нередко превращается в сущий кошмар из-за тонкостей реализации отдельных механизмов браузерами. Кроме того, после относительного затишья ситуация на рынке браузеров вновь накаляется и, несмотря на все обещания, впереди нас наверняка ждет еще немало проблем с совместимостью. На этом фоне единая стабильная среда, позволяющая создавать универсальные решения, совершенно не заботясь о различиях ОС и браузеров, выглядит весьма перспективно.
Немаловажно также, что Adobe воздержалась от изобретения очередных технологий и инструментов (что, несомненно, усложнило бы освоение AIR), а просто объединила существующие для применения в новом качестве. Стоит отметить, что в этом есть смысл – от веб-разработчиков требуются особенные навыки, и многие из них попросту не готовы трудиться над десктопными решениями. Именно для них AIR может стать настоящей панацеей, позволив перенести свой опыт в совершенно новую сферу. При этом сама Adobe оценивает число потенциальных пользователей AIR, ни много ни мало, в 5 млн человек и, видимо, имеет на то все основания. Кроме того, тесная интеграция с Flash и PDF, несомненно, поспособствует взаимной поддержке всех технологий Adobe. Нельзя исключить, что в более отдаленной перспективе AIR может стать стратегической платформой для создания RIA-аналогов популярных десктопных приложений компании.
В заключение еще раз акцентируем внимание на том, что AIR – это не просто очередной гибрид веб- и десктопных технологий. В данном случае произошло вторжение первых в вотчину вторых, что несколько неожиданно, особенно с учетом того, что они выбрались за пределы браузера и теперь грозят потеснить такие зрелые платформы, как .NET и Java – похоже, реальность в данном случае даже превзошла ожидания. Помимо прочего, компанию Adobe не упрекнешь в недостатке амбиций, и вполне вероятно, что в ходе дальнейшей эволюции AIR превратится в некий аналог ОС, подобно упомянутой выше JavaFX Mobile от Sun Microsystems. Так или иначе, AIR действительно очень хороша с технической точки зрения, и Adobe лишь осталось придумать способы скорейшей ее популяризации среди разработчиков, что, впрочем, по сегодняшним меркам представляется весьма непростой задачей.
Сайт автора: koldovsky.com