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

Рождение RIA

Термин «Web 2.0» появился тогда, когда новое отношение к контенту стало распространенным среди передовой части интернет-сообщества, а вот термин «RIA» (Rich Internet Applications, насыщенные интернет-приложения) ввела фирма Macromedia в марте 2002 г., что закрепило сложившиеся тенденции. Действительно, стремление обогатить пользовательский опыт и выйти за рамки традиционных задач в определенной мере уже могло быть реализовано с помощью Flash, JavaScript, Java-аплетов и ActiveX-компонент. Выпуск же программного документа, автором которого был Джереми Эллер (Jeremy Allaire), приурочили к выходу Macromedia Flash MX, предложившего революционные возможности, объединенные в одной среде исполнения. Фирма Adobe, правопреемница Macromedia, продолжила развитие в этом направлении всего семейства продуктов на базе Flash-платформы.

Так какие же требования можно предъявить к технологии создания RIA?

  • Эффективная высокопроизводительная среда исполнения для кода, контента и взаимодействия. Под эффективностью в данном случае понимается множество факторов. Это и поддержка бинарных протоколов, экономящих трафик и быстрых в обработке, и возможность загружать программный код из внешних источников,
    и сохранение текущего состояния на стороне клиента, и работа с потоковыми данными, и кэширование кода
    и содержания, и производительность исполнения программного кода (здесь преимущество у скомпилированных программ), и т. д.
  • Интеграция контента, коммуникации и пользовательского интерфейса в одной среде исполнения. Выбранная технология должна иметь встроенную поддержку аудио/видео (в том числе потокового) плюс микрофона и веб-камеры, широких графических возможностей (анимация, векторная графика, визуальные эффекты, переходы, функции работы с текстом), набора пользовательских компонент и, конечно, взаимодействия в реальном масштабе времени. Последнее подразумевает, что не только клиент может обратиться к серверу, но и, в свою очередь, сервер — к клиенту. Это касается передачи любых данных, в том числе и мультимедийных.
  • Мощная и расширяемая объектная модель. Чтобы создать RIA-приложения, нужен мощный объектно-ориентированный язык программирования, позволяющий эффективно и единообразно управлять всеми возможностями, предоставляемыми средой исполнения (включая графику, медиа и клиент-серверное взаимодействие), на основе богатой событийной модели. Кроме того, язык должен иметь продвинутый API.
  • Быстрая разработка приложений (RAD) с помощью повторно используемых компонент. Web представляет собой динамичную, бурно развивающуюся платформу, где очень важно сократить время от возникновения идеи до ее воплощения. При этом необходимо иметь возможность легко вносить изменения в приложение, предоставляя пользователю то, что он хочет в данный момент. Удовлетворить таким требованиям способна расширяемая, хорошо продуманная архитектура, позволяющая на ее основе создавать эффектные и эффективные, управляемые и настраиваемые пользовательские компоненты. Чем лучше предоставляемая среда разработки справляется с визуальным расположением этих компонент, тем быстрее можно получить желаемый результат. Самые современные технологии создания RIA добавляют к таким возможностям декларативное программирование и механизм связывания данных (data binding).
  • Возможность использования веб- и дата-сервисов, предоставляемых серверами приложений. Ориентация на работу с серверами лишь одного типа — устаревшая парадигма. Современные среды исполнения RIA могут работать с большим числом протоколов и форматов, использовать уже имеющиеся серверы и интегрироваться в существующие решения. Кроме того, важно не упустить из виду поддержку двустороннего обмена сообщениями между клиентом и сервером в реальном времени.
  • Возможность работы в офлайновом режиме. Не всегда устройства, на которых запущены насыщенные интернет-приложения, могут быть подключены к Интернету. Люди могут испытывать временные трудности с соединением, например, во время путешествий. И тогда традиционные интернет-страницы становятся бессильны. RIA-технологии позволяют хранить уже полученные данные на клиентском компьютере и пользоваться ими при отсутствии соединения с Сетью.
  • Поддержка большого числа платформ и устройств. Интернет уже по определению лишен привязки к какой-либо конкретной операционной системе, устройству или браузеру. RIA должны запускаться повсюду, выглядеть одинаково и не дискриминировать пользователей менее распространенных систем или браузеров.

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

Рис. 1. Эволюция приложений от текстовых терминалов к насыщенным интернет-приложениям

Термин RIA прижился. Первые несколько лет его употребляли лишь узкие специалисты, ибо ярких примеров насыщенных приложений в Интернете было немного. Слишком сложно было изменить представление рядового пользователя о Web и донести до него, что в браузере можно видеть не только статические документы, но и полноценные приложения.

Время RIA

Интерес рядовых пользователей к насыщенным интернет-приложениям проснулся тогда, когда появилась технология, которая, как ни странно, не соответствовала всем требованиям RIA. Речь идет об Ajax. Именно выход в апреле 2004 г. приложения Gmail ярко продемонстрировал, что Web может быть другим. Разработчики Google стали пионерами массовых интернет-приложений, которые предшествовали RIA. Для многих Gmail является образцом удобства, которое может дать Web. Куда уж насыщенней?!

Рассмотрим еще одно приложение, Google Docs (http://docs.google.com/ ), созданное Google с использованием технологии Ajax.

 

Рис. 2. Редактирование документа в текстовом процессоре Google Docs

 

Это прекрасно сделанное приложение вполне отвечает своим целям. В нем можно выполнять все операции, присущие настольным текстовым редакторам. Что еще нужно?

Если разделить пользовательский опыт на возможность и способ достижения цели, то с помощью Google Docs пользователь, безусловно, добьется желаемого. Но способ достижения будет явно отличаться от привычного при работе с настольными офисными пакетами.

Но это же Web! И на том спасибо!

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

Рассмотрим теперь текстовый процессор Buzzword (http://www.buzzword.com/) компании Adobe, базирующийся на технологии Adobe Flex.

Рис. 3. Богатый пользовательский опыт работы с приложением Buzzword компании Adobe

 

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

Несмотря на то что Google Docs уверенно можно отнести к разряду насыщенных интернет-приложений, современные RIA стремятся к большему. А достичь этого позволяет использование RIA-технологий, отвечающих предъявляемым требованиям и созданных с их учетом. Таким образом, прослеживается некий эволюционный путь развития приложений от статических интернет-страниц до невероятно мощных и интересных приложений, доступных в браузере. И уже сейчас появились приложения, приближающие нас к желаемому.

Также становится ясно, что насыщенные приложения наряду с предоставлением новых интересных интернет-сервисов позволят изменить существующий подход к распространению программного обеспечения. Вместо продажи копий программных продуктов, которые можно установить лишь на одном компьютере, можно будет предоставлять такой продукт, как сервис (SaaS, Software as a Service), доступный с любого компьютера, подключенного к Интернету. И это затронет даже такое ПО, которое традиционно считалось настольным, потому что интернет-приложения перестанут уступать ему по набору предоставляемых возможностей, а в отдельных случаях смогут и превосходить его.

Все ли так хорошо?

Итак, насыщенные интернет-приложения обладают следующими преимуществами:

  • Приложения, доступные через браузер, не требуют установки.
  • Снижение нагрузки на сервер, которому не надо на каждый запрос генерировать пользователю всю HTML-страницу. Плюс экономия трафика.
  • Асинхронность взаимодействия с сервером позволяет пользователю продолжать работу с приложением, когда загружаются данные.
    Впрочем, у этих приложений есть и недостатки:
  • Оборотная сторона кросс-платформенности и малого размера среды исполнения  — производительность. У интернет-приложений она ниже, чем у настольных аналогов.
  • Необходимость загрузки и установки среды исполнения отпугивает некоторых пользователей.
  • Так как большинство RIA оперируют подгружаемым контентом, невозможно индексировать его поисковыми системами.
  • Сложность интеграции с браузером — сохранения истории и адресной строки, перетаскивания файлов из операционной системы.

Обзор RIA-технологий

Рассмотрим набор RIA-технологий, существующих в настоящее время.

Adobe

Фирма Adobe последовательно продвигает свои RIA-технологии на базе Flash-платформы и предоставляет полный стек решений и инструментов для создания визуальной и медийной составляющих, а также серверных решений. Flash-плеер доступен на всех основных платформах и во всех основных браузерах. Кроме того, существует версия для мобильных устройств; по статистике, он установлен на 98% современных компьютеров.

Adobe Flash представляет собой среду разработки приложений для Flash-плеера. Она предназначена прежде всего для медиадизайнеров, аниматоров и художников. Ее основная особенность — наличие иерархически-организованной временной шкалы, благодаря чему удается получать сложные анимации. Сама среда обладает широкими возможностями создания и редактирования графики, импорта аудио- и видеофайлов. Имеется базовый набор компонентов и документация. Язык программирования ActionScript, для которого предусмотрен простой редактор с подсветкой синтаксиса. С помощью Adobe Flash можно создавать анимационные ролики и достаточно сложные интерактивные приложения.

Adobe Flex также позволяет разрабатывать приложения на базе Flash-платформы, но без применения временной шкалы. Вместо этого появляется язык разметки MXML, дающий возможность в декларативной форме задавать изменения состояний и переходы между ними. Adobe Flex предназначен исключительно для разработчиков. С его помощью создаются сложные интернет-приложения и для бизнес-задач, и для повседневного применения. Вся разработка во Flex ориентирована на применение готового набора расширяемых компонентов, подходящих почти для всех задач. CSS позволяет гибко настраивать внешний вид как отдельных компонентов, так и всего приложения. Связывание данных помогает отображать измененную информацию практически без единой строки кода.

Flex SDK бесплатен, предназначен для работы на всех платформах, имеет открытый исходный текст. Доступна также мощная среда разработки Flex Builder, обладающая возможностью визуального проектирования и продвинутыми редакторами программ.

Adobe AIR (Adobe Integrated Runtime) позволяет запускать веб-приложения на Рабочем столе. Это могут быть приложения как на базе HTML, так и на базе Flash-платформы с возможностью просмотра PDF-документов. Таким образом, веб-разработчики могут создавать настольные приложения, используя уже существующие навыки. Adobe AIR предоставляет ряд возможностей по интеграции с операционной системой: окна, доступ к файловой системе, защищенное локальное хранилище, локальную базу данных и технологию перетаскивания объектов (drag-n-drop). AIR-приложения могут устанавливаться прямо из Интернета. В самое ближайшее время выйдет финальная версия, которая будет доступна на платформах Windows и Macintosh, а затем и Linux-версия.

Ajax

Ajax представляет собой смесь технологий, в основе которых лежат язык JavaScript и объект XMLHttpRequest. Благодаря этому приложения могут получать данные с сервера и отображать их без перезагрузки страницы. Формально Ajax не является RIA-технологией, так как не интегрирует в себе медиавозможности, не обладает стандартными средствами прорисовки векторной графики, а JavaScript по-разному исполняется в различных браузерах.

Эти проблемы так или иначе решены большинством существующих Ajax-библиотек, но они основаны на гибриде технологий (например, использование Flash для видео). С проблемой кросс-браузерности также, в основном, справились, но она снова может возникнуть при выходе новых версий браузеров.

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

Использование Ajax позволяет значительно обогатить традиционные веб-страницы и сделать работу с ними очень комфортной. Тому существует множество ярких примеров. Применять Ajax при создании сайтов-презентаций и интернет-приложений, предлагающих пользовательский опыт, максимально приближенный к уровню настольных приложений, скорее всего, нецелесообразно.

Microsoft

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

Microsoft Silverlight представляет собой встраиваемый модуль для браузеров, подобный Adobe Flash Player. Его сердцем является декларативный язык разметки XAML, который изначально был частью WPF (Windows Presentation Foundation). WPF предоставил новый подход к описанию пользовательских интерфейсов, облегчающий взаимодействие разработчиков и дизайнеров, для которых и было предназначено семейство продуктов Expression. Браузерные WPF-приложения (WPF Browser Applications) могут запускаться в ограниченном числе браузеров на платформе Windows.

Именно на базе WPF и была создана технология Silverlight. Ее первая версия, выпущенная в сентябре 2007 г., сконцентрирована на предоставлении пользователю медиаконтента, в том числе видео высокого разрешения. В ней отсутствуют пользовательские компоненты и контейнеры, а роль языка программирования играет JavaScript.

Microsoft планирует выпустить в 2008 г. финальную версию Silverlight 2.0. Это решение предоставит разработчикам и пользователям привычный набор преимуществ технологии WPF: набор компонент и контейнеров, поддержку языков платформы .NET, настройку внешнего вида элементов управления, связывание данных (data binding), LINQ. Также будут доступны динамические языки (такие, как Python и Ruby).

Что же касается кросс-платформенности, то Microsoft подписала партнерское соглашение с Novell, изготовителем Linux-версии (Moonlight), полностью совместимой с Windows и Macintosh.

Предоставленные Microsoft инструменты разработки, с помощью которых можно создавать Silverlight-приложения, доступны только на платформе Windows.

Sun

Если обратиться к истории, то Java-аплеты были самой первой RIA-технологией, которая стала доступной еще в 1995 г. Однако аплеты не получили такого широкого распространения, как, например, Flash-плеер. Это обусловлено рядом причин. Так, для запуска Java-аплета может требоваться специфическая версия виртуальной машины Java, обладающая большим «весом», при этом не предусмотрено прозрачной для пользователя процедуры ее установки и обновления в браузере. Для старта аплета необходим запуск виртуальной машины, что требует достаточно продолжительного времени. С точки зрения внешнего вида большинство аплетов также оставляют желать лучшего. Кроме того, отсутствуют специальные инструменты для дизайнера.

Сейчас в Sun решают эти проблемы и многие минусы уже устранены в рамках проекта Java SE 6 Update N. А еще появились и новая визуальная тема Nimbus, обладающая современным дизайном, и набор средств по определению и установке требуемой версии JRE (причем для ее запуска не обязательно дожидаться скачивания всех библиотек), и возможность быстрого запуска виртуальной машины.

В настоящее время находится в стадии разработки новый декларативный язык разметки JavaFX Script, предложенный Sun. Он помогает разрешить проблему создания пользовательских интерфейсов для Java-приложений и аплетов, причем поддерживает и мобильные платформы. Однако пока не поступало никаких сообщений о дате его выпуска. Впрочем, сейчас появились его промежуточные версии, которые вполне работоспособны.

Что дальше?

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