Технологическая основа для создания интернет-приложений существовала еще в 1990-х годах (Java-аплеты, ActiveX-контейнеры), однако данная идея «выстрелила» только в 2004 г., когда Google открыл для всех желающих свой сервис хранения электронной почты Gmail. Мы помним, что в то время веб-интерфейсы почты Mail.ru и «Яндекса» требовали при каждом действии перезагрузки страницы (что было утомительно на медленном канале), а Gmail в отличие от них просто «летал».

Программисты отметили появление данного сервиса и начали незамедлительно анализировать способ его реализации. Примерно через полгода после этого в Сети стали как грибы после дождя появляться статьи о технологии AJAX (Asyncronous JavaScript и XML), примененной при создании Gmail. Идея AJAX, так же как и прочих RIA-технологий, проста: действия пользователя на веб-странице не передаются на сервер, а обрабатываются прямо внутри браузера. Значит, не происходит постоянной генерации содержимого страницы. В случае AJAX за обработку информации отвечает повсеместно распространенный JavaScript, что во многом и принесло Gmail неслыханную популярность, в то время как аналогичные подходы, основанные на Java-аплетах и ActiveX-компонентах, были тяжеловесны и не всегда доступны из-за ограничений безопасности.

И все же использование JavaScript и HTML в веб-страницах имеет один большой недостаток — HTML проектировался для выкладывания в Интернет текстов, а не для создания программ и их интерфейсов. Да и JavaScript разрабатывался совсем не как язык промышленного программирования (хотя волшебники из Google успешно сделали Gmail). Конечно, энтузиасты создают библиотеки, чтобы преодолеть такие проблемы, но трудности на пути использования HTML как языка построения интерфейсов, вообще говоря, являются врожденными. Например, отсутствие строгих директив интерпретации HTML-документов привело к тому, что без трюков практически невозможно сделать сайт, который будет одинаково выглядеть во всех браузерах.

Со временем о своем выходе на рынок инструментов для создания интернет-приложений заявили еще два игрока.

Adobe c Adobe Flash. Flash-технология изначально предназначалась для разработки компактной векторной анимации, в частности несложных баннеров. Однако начиная с 4-й версии Flash обзавелась собственным внутренним языком программирования, развившимся в объектно-ориентированный язык Action Script 3, поддерживающий строгую типизацию. Появилась и IDE для таких разработок — Adobe Flex Builder, а также язык проектирования интерфейсов MXML (на базе XML). В противовес JavaScript язык Action Script поддерживает строгую типизацию; Flash как платформа обеспечивает асинхронные запросы к серверу, аудио и видео; Flex Builder явно вводит понятие «компонент», предоставляет отладчик и еще миллион других возможностей, привычных разработчикам настольных приложений.

Microsoft c Silverlight. Сменившая трудное название WPF/E на Silverlight, эта технология корпорации Microsoft позволяет создавать веб-приложения на любых языках для платформы .NET. Разработка происходит внутри интерфейса IDE Visual Studiо, которая в специальном представлении (для создателей настольных программ, разумеется) не нуждается. Интересно, что Microsoft представила и XML-язык разметки интерфейса — XAML.

Кроме того, компания Sun анонсировала еще одну технологию — Java FX, базирующуюся на платформе Java, а также несколько проектов, ориентированных на JavaScript-технологии (Google Gears, Mozilla Prism), но для их описания, пожалуй, требуется отдельная статья. Впрочем, данные решения мы оставим за кадром, поскольку среднестатистическому сайту они сейчас ничего не дадут.

И Flash, и Silverlight, и вскользь упомянутая JavaFX — все эти технологии исполняются внутри специального браузерного плагина, что позволяет одинаково отображать содержимое во всех браузерах. Распространенность соответствующих плагинов и определяет привлекательность реализации какого-либо решения для конкретного небольшого сайта. Конечно, если вы хотите посмотреть шоу «Король ринга» на http://king.1tv.ru/, то вам придется загрузить Microsoft Silverlight, поскольку данный контент вы больше нигде официально не найдете. Тем не менее первенство по распространенности плагина, необходимого для запуска интернет-приложений на соответствующей платформе, за Adobe Flash — версии выше 9.0 с поддержкой AS3 доступны в России на 93% машин, в то время как Silverlight — только на 20% (http://www.riastats.com/).

Сейчас с помощью Adobe Flash реализован текстовый процессор Buzzword, по функциональности схожий пусть и не с Microsoft Word, но с OpenOffice как минимум, а также Photoshop Express Online и еще десять графических редакторов, представленных в Интернете (подробный список приведен на сайте http://habrahabr.ru/blogs/web_2_0/41888/).

«Все это хорошо, — скажет придирчивый и внимательный читатель.— но какой от всего этого прок для обычных сайтов? Понимаете, я не собираюсь в ближайшем будущем заниматься текстовыми и графическими процессорами в браузере, но мне нужно будет сделать сайт (себе или кому-либо еще)».

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

С моей точки зрения, применение RIA-технологий способно повысить (и значительно) удобство пользования сайтом. Если обратиться к фактам, то современные CMS (системы управления сайтом) уже на всю катушку используют разного рода AJAX-решения, делающие процесс администрирования сайта все более простым и удобным.

Пожалуй, наибольшее распространение получила библиотека JQuery, в частности такой стандартный элемент интерфейса, как модальные окна с затемнением. Эти окна очень похожи на обычные окна в Windows-подобных системах, за одним лишь исключением — все они создаются только средствами JavaScript внутри браузерных страниц. Причем остальная часть страницы затемняется и становится недоступной, пока пользователь не закроет окно.

Крупная блог-платформа WordPress использует библиотеку JQuery и другие подобные компоненты для загрузки изображений. Аналогично поступает и «Битрикс», применяя, по-видимому, собственную JavaScript-библиотеку с похожим функционалом. Действительно интересно, что разные группы разработчиков открытых и коммерческих систем задействуют одни и те же приемы, уже отточенные при разработке настольных приложений.

Однако, как бы ни развивался JavaScript, сложности при реализации с его помощью интернет-приложений остаются.

Отсутствие одинаковой интерпретации одних и тех же инструкций разными браузерами. Каждый браузер думает, что именно он лучше всех умеет интерпретировать HTML-страницы; особенно этим отличается Internet Explorer 6, содержащийся в стандартном комплекте Windows XP. Оценить масштаб боевых действий с этим браузером помогут непрекращающиеся жалобы на форумах, посвященных HTML-верстке. Правда, в его последних версиях ситуация меняется к лучшему, причем во многом благодаря давлению Firefox, постепенно захватывающего все большую долю рынка. Microsoft вынуждена считаться с ним и со стандартами W3C, которые он поддерживает. Тем не менее до окончательного разрешения данной проблемы пройдет, видимо, еще как минимум несколько лет.

Несовместимость разных популярных движков и отсутствие адекватных IDE для полноценной отладки приложений. Популярных JavaScript-решений, поддерживающих разные элементы интерфейса, в мире уже не менее десятка, а адаптированных любительских разработок, наверное, несколько сотен. Такое разнообразие усугубляется сложностями отладки, поскольку JavaScript является нетипизированным языком (присвоение кнопке числового значения — обычное дело, и ни одна система вас не поправит), а также трудностями при написании HTML-кода интерфейса и проверке его в разных браузерах. Конечно, и здесь ситуация уже улучшается — в настоящее время существует тенденция укрупнения Jquery-фреймворка, который Microsoft включила как стандартное решение в свою технологию разработки веб-приложений ASP.NET. Но опять же окончательно проблема может быть решена не ранее чем через несколько лет.

На Flash удобно реализовывать калькуляторы стоимости продукции, скажем, для расчета стоимости заказа ПВХ-окон. Часто Flash используется при заказе печати собственного рисунка на футболках. Более глобальное и сложное применение Flash — визуализация данных. Для этого существуют встроенные библиотеки анализа XML и связывания данных. Примером тому может служить отображение информации о ходе матчей прошедшего Чемпионата Европы по футболу

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

Приведу несколько примеров ее применения, популярных у веб-разработчиков. На Flash (в среде Flex Builder, в частности) удобно реализовывать калькуляторы стоимости продукции, скажем, для расчета стоимости заказа ПВХ-окон. Часто Flash используется при заказе печати собственного рисунка на футболках. Более глобальное и сложное применение Flash — визуализация данных. Для этого существуют встроенные библиотеки анализа XML и связывания данных. Примером тому может служить отображение информации о ходе матчей прошедшего Чемпионата Европы по футболу: данные о встречах команд выводились как раз внутри Flash-приложения. При этом в приложении предусматриваются самые разные сортировки и выборки игр: по конкретным странам, по датам, по группам и т. д.

Кроме того, Flash одинаково отображает сколь угодно сложно декорированные объекты в разных браузерах и имеет встроенную поддержку разного рода анимационных эффектов. Данные свойства приводят к тому, что на Flash часто создаются фотогалереи (в последнее время даже с поддержкой 3D-движков на Action Script) и промо-ориентированные веб-сайты.

Возможность просто реализовать перетаскивание и прямая работа с объектами стали основой для российской разработки — Fuzzle CMS, системы управления Flash-сайтами. Основным принципом ее функционирования является True WYSIWYG: пользователь редактирует сайт, просто перемещая блоки, например, как на схемах в редакторе Visio. В результате сайт абсолютно одинаково выглядит как при редактировании, так и после сохранения. Блоки свободно перемещаются по всему рабочему полю сайта, что дает возможность не беспокоиться, как в HTML, о верстке. Разработчики сумели задействовать даже анимационные возможности Flash, в результате чего администратору дозволяется настраивать анимацию блоков при появлении страницы, комбинируя «появление», «движение» и несколько других эффектов.

В заключение следует отметить, что такие разные интернет-ресурсы, как приложения, CMS и социальные сети, внедряют элементы RIA-технологий, чтобы выглядеть более динамичными и удобными для пользователя. Повсеместно применяются и JavaScript-решения, однако они несколько сложны для конечного разработчика. Пользовательская база Silverlight пока не позволяет создавать на нем веб-приложения. Наиболее перспективно выглядит на этом фоне применение технологий вроде Flash, особенно с учетом того, что недавно поисковики научились индексировать Flash-содержимое на сайтах. В общем, сайты на разрабатываемой CMS Fuzzle уже довольно успешно индексируются, так что этот барьер для внедрения RIA на базе Flash уже снят.


Пожалуй, наибольшее распространение получила библиотека JQuery, в частности, такой стандартный элемент интерфейса, как модальные окна с затемнением. Эти окна очень похожи на обычные окна в Windows-подобных системах, за одним лишь исключением — все они создаются только средствами JavaScript внутри браузерных страниц

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

Возможность просто реализовать перетаскивание и прямая работа с объектами стали основой для российской разработки — Fuzzle CMS, системы управления Flash-сайтами. Основным принципом ее функционирования является True WYSIWYG: пользователь редактирует сайт, просто перемещая блоки, например, как на схемах в редакторе Visio. В результате сайт абсолютно одинаково выглядит как при редактировании, так и после сохранения

1008