Страсти вокруг AJAX накаляются

Еще в начале нынешнего года аббревиатура AJAX (Asynchronous JavaScript + XML, по-русски произносится как “аякс”) была знакома лишь узкому кругу знатоков последних новинок в области разработки Web-приложений, а сейчас она, кажется, превратилась в самый популярный в компьютерных СМИ термин. И, что интересно, вокруг этой в общем-то не очень сложной, хотя и оригинальной технологии (см. PC Week/RE, № 6/2006, с. 33) разворачивается нешуточная борьба, в которую втягиваются не только ведущие софтверные поставщики, но И многочисленные небольшие специализированные компании — разработчики инструментария.

Сама идея применения асинхронной модели Web-взаимодействия сервер -- клиент известна достаточно давно, а первой такую технологию в Web-браузере реализовала еще в конце 90-х годов корпорация Microsoft в своем Internet Explorer (IE) 5.0. Это было сделано с помощью дополнительного ActiveX-объекта, получившего название XmlHttpRequest. Но все же родоначальником собственно AJAX следует считать компанию Google, которая на практике продемонстрировала эффективность ее применения в ряде своих интернет-проектов, в том числе в таком популярном, как Google Maps (maps.google.com). Сам же термин AJAX стал использоваться в профессиональных публикациях примерно с начала 2005 г. Но все же это был этап “лабораторных исследований”.

AJAX-бум


Первый звонок о грядущем наступлении “промышленной” эксплуатации прозвучал в июне 2005 г., когда Microsoft объявила о намерении создать базовую среду разработки и исполнения клиентских AJAX-приложений (инструмент получил кодовое название Atlas), интегрированную с Visual Studio 2005 и ASP.NET 2.0. И уже в сентябре на конференции PDC'2005 корпорация представила прототип этого инструмента.

Ответные шаги со стороны Java-сообщества последовали незамедлительно. Уже в октябре Sun Microsystems сообщила о намерении реализовать поддержку AJAX в своих средствах разработки, в том числе в Java Studio Creator. В декабре фонд Apache Software объявил о реализации собственного набора Kabuki AJAX Toolkit Project. Осенью IBM также сообщила о намерении использовать технологии AJAX в своих продуктах Lotus, WebSphere и Rational, а в январе 2006 г. анонсировала новый проект AJAX Toolkit Framework.

Этап развития AJAX, который можно назвать “периодом деклараций о намерениях”, завершился в феврале нынешнего года. Сначала Microsoft опубликовала первую публичную предварительную версию своего инструмента Atlas. И затем сразу три компании — Infragistics, FarPoint Technologies и Syncfusion —представили свои AJAX-инструменты в виде модулей расширения Visual Studio 2005. Почти одновременно с этим, 1 февраля, группа ведущих ИТ-компаний (в том числе BEA Systems, Borland, Eclipse Foundation, Google, Mozilla, Novell, Oracle, Red Hat и Yahoo) при явной лидирующей роли IBM объявила о новой индустриальной инициативе Open AJAX с целью поддержки данной технологии на принципах открытых стандартов.

С этого момента термин AJAX прочно обосновался в компьютерных СМИ и материалах ИТ-компаний. В новостях почти каждую неделю стали появляться сообщения от больших и малых компаний и даже индивидуальных разработчиков ПО о разработке очередного AJAX-инструментария. Прочие софтверные лидеры (например, Oracle и Software AG) в анонсах своих новых продуктов также не забывают в последние полгода упоминать о возможности в них AJAX-доступа. Да и поставщики оборудования также считают необходимым продемонстрировать свою принципиальную поддержку AJAX-идей.

Спектр поставщиков AJAX-инструментария весьма широк, приведем два характерных примера. Так, еще осенью прошлого года был представлен частный немецкий проект Ajax.NET Framework (www.schwarz-interactive.de), включающий необходимые библиотеки функций для создания AJAX-приложений в среде .NET Framework. А в начале нынешнего мая свою лепту в это направление внесли два лидера ИТ-отрасли: компания Adobe Systems выпустила предварительный вариант своего набора Spry Framework for AJAX, являющегося расширением платформы Adobe Engagement, а Google объявила о выходе бесплатного набора Google Web Toolkit для разработки AJAX-программ на Java.

За последние месяцы возник, кажется, не один десяток “сообществ” и “инициатив” по развитию и продвижению AJAX. Пример тому — проект OpenAJAX (www.openajax.ca), реализуемый трио разработчиков из Калифорнии. На своем сайте они сообщают, что не надо путать их работу с инициативой Open AJAX от IBM, тем более что они объявили о себе раньше Голубого гиганта. И они совершенно правы, так как сегодня название корпоративного сообщества обозначается в обоих вариантах: с пробелом и без него. В общем, есть от чего запутаться…

Как обеспечить совместимость

В растущем интересе публики к технологиям AJAX немалую роль играет отточенное за последние десятилетия маркетинговое мастерство ИТ-отрасли, умение “разогревать” нужные ей темы. Но здесь есть, безусловно, и объективные причины. Если посмотреть на историю вычислительной техники, то можно легко увидеть в ней периодичность смещения вычислительных мощностей от центра к периферии и обратно. Так вот, сейчас, после многолетней волны в сторону серверной части систем, идет обратное движение в направлении клиентских станций. Но поскольку усиления позиций толстого клиента на базе Windows никто не хочет (Microsoft не в счет!), то возникают концепции типа Rich Client Platform (или, в терминологии IBM, Workplace Client Technology) на базе Eclipse и AJAX для Web-браузеров.

Проблема же массового внедрения технологий AJAX упирается в то, что они в их изначальном виде пока слишком сложны для применения широким кругом разработчиков. Отсюда вытекает необходимость решения двух задач по модернизации и развитию AJAX:

* увеличение функциональности и скорости (это противоречивые требования!) исполнения AJAX-приложений на клиентской стороне;
* повышение эффективности процесса разработки AJAX-приложений за счет перехода с низкоуровневого JavaScript-программирования на применение универсальных языков, в частности Java и .NET.

Однако движение в направлении решения этих задач сразу же ставит под угрозу главное достоинство AJAX — ее платформенную независимость. При этом вопрос совместимости конечно же зависит не от инструментов для создания AJAX-приложений, а в первую очередь от среды их исполнения — Web-браузеров.

Как известно, решающая роль в реализации AJAX-технологии принадлежит объекту XmlHttpRequest (или XHR), который позволяет выполнять HTTP-запросы на языке JavaScript к удаленному серверу без перезагрузки HTML-страниц (рис. 1). Однако разные браузеры используют различные методы реализации этого объекта.


Рис. 1. Ключевая роль в AJAX принадлежит объекту XmlHttpRequest

Ведь, как уже говорилось, впервые поддержка XmlHttpRequest была встроена в Microsoft Internet Explorer 5.0, причем на уровне отдельного компонента ActiveX. В других популярных браузерах (сначала в Mozilla, потом в FileFox и относительно недавно в Opera и Safari) эта функция появилась позднее, но уже на уровне встроенного объекта и в более совершенном виде. В результате создание XmlHttpRequest в них выполняется разными способами. Так, в Internet Explorer для этого нужно написать такой код:

var req = new ActiveXObject("Microsoft.XMLHTTP");

а в других браузерах используется более простой синтаксис:

var req = new XmlHttpRequest();

Причина таких расхождений заключается во многом в том, что до недавнего времени вопросы стандартизации динамических Web-приложений были сосредоточены в основном на серверной стороне, а клиентской части уделялось явно недостаточное внимание. В начале нынешнего апреля консорциум W3C опубликовал предварительный вариант новых спецификаций XmlHttpRequest. Это создает хорошую основу для обеспечения совместимости AJAX-приложений, но все же на этом пути придется решить еще довольно много вопросов. Тем более, что с ростом сферы применения AJAX встал вопрос о необходимости расширения функционала и спецификаций XmlHttpRequest. И делать это нужно оперативно, так как разработчики ПО, не ожидая рекомендаций W3C, идут на использование собственных расширений, что довольно часто приводит к несовместимости приложений.

Дело тут заключается в следующем. Фактически AJAX-приложение состоит из двух частей: прикладного кода (в основном реализующего пользовательский интерфейс) и AJAX-движка, исполняющего этот код (рис. 2). Сегодня каждый такой движок делается разными разработчиками и является уникальным*. Таким образом, при вызове AJAX-приложения на клиентском компьютере в Web-браузер должны всякий раз передаваться через Интернет оба компонента — прикладной код и движок. Очевидно, что это накладывает определенные ограничения на размеры, а значит, и на функциональность движка.

Идея развития AJAX заключается как раз в том, чтобы унифицировать движки, создать единую среду исполнения AJAX с набором базовых функций (Framework, каркас), которую можно встраивать во все Web-браузеры (чтобы не перекачивать движки по Интернету). То есть речь идет о требовании создания нового высокоуровневого слоя поверх нынешних базовых технологий браузеров. Но проблема здесь в том, что оптимальная реализация нового функционала требует не только более высокого уровня стандартизации уже имеющихся средств, но и их некоторой модификации с учетом новых требований. И если говорить о XmlHttpRequest как о ключевом объекте AXAJ, то его модификация в свою очередь тянет за собой необходимость определенной коррекции еще ряда более “глубинных” функций браузера.

И один в поле воин


Положение Microsoft среди многочисленного сообщества AJAX-поставщиков порой выглядит как “один против всех”**. Но это, конечно, совсем не так. Во-первых, корпорация опирается на поддержку огромной армии своих партнеров. Во-вторых, ее особая позиция на AJAX-поле определятся тем, что компания в одном лице является поставщиком и самого популярного Web-браузера, и клиентской Windows, имеющей практически монопольное положение, и одного из ведущих инструментариев Visual Studio/.NET Framework.

Соответственно свою реализацию AJAX-движка в виде Atlas Client Script Framework (ACSF) она пытается максимально привязать к Visual Studio и Windows. Разумеется, новые Atlas-приложения смогут работать в любом не-Microsoft-браузере, но только для этого им потребуется каждый раз грузить среду ACSF, размер которой уже совсем не мал. А ее собственный браузер Internet Explorer наверняка будет использовать встроенный вариант ACSF и поэтому сможет работать с Atlas-программами существенно быстрее. Короче говоря, мы столкнемся с типичной для стратегии Microsoft ситуацией, когда Visual Studio и Internet Explorer будут продвигать не только себя самих, но и друг друга***.

Впрочем, вполне вероятно, что ACSF станет стандартным компонентом Windows Vista (уже сегодня идет речь о его включении в состав Windows Presentation Foundation). Но какой смысл пользователю ставить на Windows еще один браузер, когда в ней уже есть знакомый IE?


Рис. 2. Традиционная и AJAX модели для создания Web-приложений

Отметим, что хотя в окончательном варианте Atlas появится лишь в начале 2007 г. в виде дополнительного компонента следующей версии Visual Studio для Windows Vista (кодовое название Orcas), этот инструмент сегодня имеет высокую степень готовности. Так, его мартовская версия CTP (Community Technology Preview) распространяется с лицензией Go-Live, что позволит разработчикам ПО уже сейчас создавать на ее базе приложения и распространять их на коммерческой основе. Обычно этот тип лицензирования применяется для последних бета-версий с достаточным уровнем стабильности работы.

Конференция независимых аяксовцев


В начале мая в Сан-Франциско (США) прошла трехдневная конференция AJAX Experience, организованная независимым фондом Ajaxian.com (его основали два частных эксперта в области Web-разработки). По сути дела это одно из первых масштабных мероприятий, посвященных вопросам развития AJAX-технологий. Правда, в его работе приняли участие в основном представители “индивидуальных” компаний, хотя там были и крупные игроки, в том числе Microsoft и IBM.

В одном из докладов был представлен общий обзор предложений в области AJAX. Если в декабре прошлого года насчитывалось 90 таких проектов, то сейчас их число выросло до 134. Из них 58 реализовано непосредственно на базе JavaScript, остальные на основе других языков (в том числе по 22 — на Java и PHP, 13 — на .NET).

Интересным на конференции было также обсуждение состава новых возможностей браузера следующего поколения. Это:

* ускоритель 2D-графики (Canvas), который должен работать поверх нынешних технологий DirectX, Quartz и Cairo/xgl;
* оперативный JIT-компилятор (Just-in-Time) для JavaScript;
* применение прозрачной модели памяти в сочетании с набором инструментов самоанализа и отладки;
* набор функций API для работы с внешней памятью.

В одном из выступлений прозвучала едкая критика в адрес будущего Internet Explorer 7.0 (см. PC Week/RE, № 18/2006, с. 1), говорилось, что Microsoft совсем не спешит включать в свой браузер новейшие технологии (назывались Scalable Vector Graphics, Canvas, Vector Markup Language), уже применяемые во многих Web-обозревателях. С другой стороны, одобрение собравшихся вызвало намерение Microsoft выпустить набор Windows Presentation Foundation Everywhere — портируемый вариант Windows Presentation Foundation, который сможет работать на разных платформах.

Отметим, что тематика конференции вышла далеко за рамки круга проблем AJAX. В этой связи в ряде выступлений прозвучало пожелание как-то изменить название мероприятия. На это организаторы резонно ответили: “Кто же на нас обратит внимание, если в названии не будет слова AJAX?”.

Объединятся ли Open AJAX и Microsoft?


Несмотря на обилие предложений и идей относительно AJAX, вполне очевидно, что на этом рынке все они будут поляризоваться вокруг двух полюсов — Microsoft и сообщества Open AJAX. Учитывая сильные позиции Microsoft в этой области, IBM традиционно сделала ставку на формирование отраслевой коалиции.

В начале мая стало известно, что к инициативе Open AJAX присоединилось еще 13 компаний (в том числе Adobe, Intel, Opera, SAP и Software AG), в результате число ее участников увеличилось до 28. Конечно, это очень серьезная группировка, которую Microsoft уже никак не может игнорировать. Неудивительно, что почти одновременно с этой информацией в компьютерных СМИ появились сведения о том, что Microsoft получила от Open AJAX официальное приглашение присоединиться к сообществу. Представители Microsoft пока ограничились уклончивым комментарием о готовности к сотрудничеству.

В середине мая участники Open AJAX впервые собрались вместе в Сан-Франциско на двухдневную очную встречу. Как один из ее итогов сообщество получило официальное название – OpenAJAX Alliance. Было также решено, что сама организация будет иметь неформальный характер -- для выработки скорее общей стратегии, направленной на решение вопросов совместимости и открытости технологии, т. е. она не станет чем-то подобным проектам Eclipse или Apache. Все вопросы стандартизации будут решаться через W3C, имея в виду достижение главной цели: возможность поддержки AJAX самым широким спектром настольных и серверных платформ, Web-браузеров и средств разработки.

На эту встречу приглашались и Microsoft, и другой “неприсоединившийся” — Sun Microsystems, но судя по всему, они не приняли участия в этом собрании. Тем не менее пример Web Services показывает, что сотрудничество конкурентов в ИТ-отрасли — вполне реальная вещь. Посмотрим, как будут обстоять дела с AJAX.

Автор: нет данных