Будущее разработки веб-приложений – основные тенденции и прогноз
Без сомнения, веб в наше время является наиболее динамически развивающейся областью информационных технологий. Веб 2.0, социальные сети, онлайн-сервисы – все эти слова стали знакомыми для людей, далеких от IT вообще, и прочно вошли в современную жизнь, которая частично теперь протекает не только в реальном мире, но и в «онлайне». Но что будет, если задуматься о технологиях, которые лежат в основе всего этого ежедневно прогрессирующего многообразия? Ответ поражает и сейчас, в конце 2010 года, все так же основу, костяк любого веб- сайта составляет HTML – HTML стандарта 4.0 или 4.1, спецификация которого была опубликована более 10 лет назад (в 1997 и 1999 гг. соответственно). Стоит оценить, насколько шагнул вперед прогресс, сравнив сайты сегодняшние и 10-летней давности (это легко сделать с помощью проекта «Internet Wayback Machine» - web.archive.org). И тут уже становится трудно поверить, что в основе всего это лежит одна и та же технология, пусть и серьезно дополненная технологиями вспомогательными, и теперь всегда по стандарту де-факто динамически программируемая. Очевидно, что давно назрел тот переломный момент, когда пора бы уже и подтянуться к современности и основной технологии – подход, где другие вспомогательные решения предлагают свои «костыли» совершенно негибкой основе, но ни то, ни другое по отдельности существовать не может, кажется неприемлемым и устаревшим. В идеале, такая технология должна стать унифицированной и совмещать в себе все, необходимые разработчику и пользователю функции – от разметки и отображения до динамической работы с сервером и мультимедийных возможностей. Каковы основные тенденции в реализации этой «унифицированной технологии» намечаются сейчас и что нас, возможно, ждет в этой сфере в будущем, мы и рассмотрим в данной статье.
RIA. Перед рассмотрением технологий, необходимо определиться с требованиями, которые предъявляются к современным веб-приложениям. Какие они должны быть? Что должно пониматься под их уровнем интерактивности и функциональности? Какие возможности должны обеспечивать средства разработки? На все эти вопросы дает ответ концепция RIA – «Rich Internet Application» или «Rich Interactive Application» (дословно – «богатое Интернет (интерактивное) приложение»). Впервые термин RIA прозвучал еще в 2002 году в официальном сообщении компании Macromedia, но более актуален он как раз сегодня, когда можно сказать, что идет активная разработка и переориентация существующих приложений на RIA-концепцию. Так что такое RIA и чем этот подход отличается от «традиционных» веб-приложений? Традиционные веб- приложения большей частью работают на сервере – в клиентской программе-браузере (Internet Explorer, Firefox или Opera) отображается контент, размеченный языком разметки HTML. В силу такого подхода традиционные веб-приложения имеют достаточно ограниченный уровень интерактивности и постоянно взаимодействуют с сервером – отправляют на него данные, получают ответы и загружают новые страницы. В RIA значительная часть функционала вынесена в клиентскую часть, т.е. исполняется на стороне клиента (по сути, в том же браузере, но с использованием расширений (плагинов) и/или популярной в настоящее время технологии Ajax и фреймворков вроде JQuery). Это позволяет получить приложение, которое работает быстрее (за счет меньшего количества обращений к серверу и отсутствия перегрузок страниц) и обеспечивает близкий к традиционным настольным приложениям уровень интерактивности и удобства интерфейса.
Работа традиционных веб-приложений сконцентрирована вокруг клиент-серверной архитектуры с так называемым «тонким клиентом». Такой клиент переносит все задачи по обработке информации на сервер, а сам используется лишь для отображения статического контента (например, HTML-кода). Основной недостаток этого подхода в том, что все взаимодействие с приложением должно обрабатываться сервером, что требует постоянной отправки данных на него, ожидания ответа сервера и загрузки страницы обратно в браузер. При использовании технологии запуска приложений на стороне клиента, RIA могут обойти этот медленный цикл синхронизации за счет большего взаимодействия с пользователем. Эта разница примерно аналогична разнице между архитектурой с «тонким клиентом» (Thin client) и архитектурой с «толстым клиентом» (Fat client), а также между терминалом и мейнфреймом.
Из всего этого, можно сделать вывод, что концепция RIA нацелена на стирание грани между традиционными веб и настольными приложениями. Веб-сайт, хотя бы частично реализующий концепцию RIA-приложения, будет представлять уже возможности гораздо большие, чем переход по гиперссылкам и отсылка форм. Казалось бы, чем тогда RIA отличается от обычных настольных программ, которые имеют доступ в Интернет и используют в своей работе онлайн-ресурсы? Концепция «толстого клиента» в них реализуется в наиболее полной мере, интерфейс и возможности – безграничны, так как ограничены только вычислительной мощностью компьютера и не завязаны на существующие веб-технологии. Но недостатки есть, и они существенны именно в контексте сети Интернет. Настольное ПО требует явной установки на машину клиента, таким образом процесс пользования программой обычно состоит из шагов поиска ее в Интернете, скачивания установщика, запуска его с локального диска, явного запуска исполняемого файла программы каждый раз при ее использовании. Далее идет явное осуществление контроля версий – в лучшем случае, программа будет содержать модуль обновления, в худшем – клиент вынужден будет каждый раз при обновлении версии самостоятельно проделывать заново весь процесс установки. В любом случае, могут возникнуть проблемы с совместимостью с уже существующими настройками ПО, операционной системой и т.д. Наконец, может быть ограниченная кросс- платформенность – далеко не все настольное ПО может похвастать полной совместимостью со всеми популярными операционными системами. Таким образом, разрозненное настольное ПО явно выпадает из общепринятых стандартов навигации в сети Интернет, где центральным и унифицирующим звеном выступает единая программа-браузер.
Конечно, RIA-приложения тоже не лишены недостатков, особенно в условиях существующих технологий:
- посредством работы через браузер или иную аналогичную среду, само приложение имеет ограниченный доступ к системным ресурсам;
- полная зависимость (по крайней мере, в данный момент) от скриптовых языков (JavaScript) – таким образом, если у клиента отключено исполнение скриптов или нестабильное Интернет- соединение, не позволяющее полностью загрузить страницу, работа всего приложения будет нарушена.
- опережение существующих стандартов – возможное отсутствие индексации поисковиками, сложности интеграции с браузерами (невозможность корректного использования адресной строки, истории и.т.д.).
Очевидно, что будущее сети Интернет – за RIA-приложениями. Они не отнимут нишу у традиционных сайтов, нацеленных только на представление информации, или настольных приложений для решения специфичных задач, но наиболее интересным и определяющим облик будущего Интернета, по нашим прогнозам, будет именно сегмент RIA-приложений. Таковые уже существуют, популярны и задают «тон» другим разработчикам – ярким примером можно считать почтовый сервис Gmail от компании Google. При входе в почту происходит загрузка почти всего приложения сразу и далее оно ведет себя как полноценная почтовая программа внутри браузера – все действия доступны и выполняются без перезагрузки страницы.
Технологии. Существующие веб-технологии (AJAX, Flash) делают возможным реализацию RIA-приложений, но нельзя сказать, что они прямо на это нацелены, или разработка с их помощью является легкой, дешевой и общедоступной. Это наглядно видно любому пользователю сети Интернет – сайты с богатым интерфейсом и высокой интерактивностью встречаются, как правило, пока только у крупных и известных компаний, которые могут себе позволить высокую сложность и стоимость разработки. Но будущие технологии, которые сейчас активно разрабатываются и не сегодня-завтра станут стандартом, могут в корне переломить положение дел – рассмотрим наиболее значимые из них и сделаем примерное сравнение и оценку.
HTML 5. Эту технологию следует рассматривать в первую очередь, потому как именно HTML 5 претендует на роль будущего общего стандарта Интернета и существенно дополняет роль стандартного языка разметки. Наиболее явные изменения включают в себя существенное дополнение тегов более очевидными и необходимыми для сегодняшних приложений. В HTML 4 для выделения даже базовых элементов приложения (вроде заголовка, «подвала», навигационной части) приходилось явно перегружать свойства class и id тегов и описывать их средствами CSS – таким образом, самая стандартная верстка различалась от сайта к сайту. HTML 5 предлагает давно назревшие теги <header> (заголовок), <nav> (элементы навигации), <article> (хранилище основного контента), <aside> (дополнительная информация сбоку), <footer> (информация об авторе, копирайт), а также специальные мультимедийные <audio> и <video>. Логично, что разработчики хотят избавиться от нынешнего нагромождения различных технологий и интегрировать все в одну основную. Сейчас, например, для отображения мультимедиа используется Adobe Flash Player – хоть и он установлен на 99% браузеров всего мира, но стандартом не является. Помимо удобства разработки, такие теги вносят еще и базовую семантику в веб-приложение, что несомненно лучше скажется на распознавании содержимого поисковыми системами.
Другим огромным шагом HTML 5 можно назвать один-единственный тег <canvas>. Отныне браузер можно использовать как полноценный графический редактор с помощью API Canvas и главным плюсом будет возможность динамически эту самую графику изменять. Возможности создания нестандартных интерактивных интерфейсов становятся поистине безграничными. В качестве отдельных новшеств HTML 5 можно выделить улучшенную работу с формами и технологию User Interaction. В работе с формами задействована новая технология Web Forms 2.0 – где наконец-то появилась валидация вводимых значений и настройки для каждого поля (например, обязательный ввод). Раньше для этого нужно было делать отдельные секции проверок средствами Javascript, PHP или иного серверного языка. User Interaction позволяет разбить страницу на отдельные секции и отдельно описать способы взаимодействия пользователя с каждой из них.
Подводя итог, у технологии HTML 5 действительно есть все предпосылки стать будущим стандартом, причем гораздо более унифицированным, чем HTML 4. Но вряд ли он действительно станет единой технологией и избежит дополнений другими сторонними технологиями в повседневной разработке. Хотя бы потому, что веб-приложения могут иметь очень разную специализацию и включить все инструменты без сильных обобщений в единую технологию практически невозможно – для конкретных целей всегда найдутся хорошие, постоянно дополняемые и обновляемые фреймворки. Хотя и отдельные компоненты из спецификации HTML 5 уже поддерживаются современными браузерами, сам стандарт получит статус W3C Candidate Recommendation только в 2012 году и говорить о его широком распространении пока что еще очень рано. Между тем, конкуренты тоже не стоят на месте и к моменту повсеместного распространения HTML 5 могут предложить уже более актуальные решения, которые снова оставят HTML на позициях языка базовой разметки. Основные игроки на рынке известны и речь о них пойдет ниже.
Adobe Flex. Технологию Flex можно назвать логическим продолжением, адаптацией всем известного Flash для нужд веб-разработки. Да, сам Flash тоже давно уже вышел за рамки видео и анимации и был востребован крупными разработчиками как самостоятельное средство. Но, несмотря на богатство возможностей, Flash сильно нарушал привычную концепцию навигации в Вебе – элементы навигации часто прятались в вычурном дизайне, переходы по ним не подтверждались изменениями в адресной строке, трудно было использовать закладки, содержимое плохо индексировалось поисковиками. Цель визуального «богатства» и интерактивности достигалась, но несколько раздражающим среднестатического пользователя способом. Приблизить Flash к нуждам веб-программирования и облегчить разработку была призвана технология Adobe Flex. Это набор усилит для разработки RIA на платформе Flash с использованием языка Actionscript 3, а также язык на основе XML для описания формата пользовательского представления (интерфейса) и поведения – MXML. Таким образом, достигается удачная комбинация разделения разметки и логической части, на помощь которой приходят ООП- возможности Actionscript. Кроме того, в рамках отдельного приложения Adobe AIR можно осуществлять работу в оффлайн-режиме настольной программы без переписывания кода. Существенным недостатком технологии можно назвать аналогичную обычному Flash методику исполнения в онлайн-режиме – результат компилируется в файл .swf и для отображения в браузере требует установленный Adobe Flash Player.
Google Web Toolkit (GWT). В этой технологии разработка осуществляется полностью на языке Java, где часть описания интерфейса компилируется GWT в тщательно оптимизированный Javascript. Файл скрипта подключается к веб-странице и во время загрузки отображает интерфейс приложения. Это делает приложение независимым от установленных расширений браузера и требует только включенного выполнения сценариев, а также в общем случае дает более производительный скрипт-код, нежели написанный вручную. Сама библиотека содержит средства для более привычной навигации по динамически изменяющемуся интерфейсу – например, обработку событий для кнопки «Назад» в браузере в рамках страницы с одним и тем же адресом. Технология по сути не предоставляет ничего особо нового, предлагая использовать популярный язык программирования Java, хотя и многие специализированные веб-разработчики могут не знать его. Нарекания также вызывает и GWT-компилятор за медленную скорость работы, хотя в GWT были предложены альтернативные методы исполнения кода.
JavaFX. Другая Java-based технология предлагает платформу для создания RIA-приложений для ПК и мобильных устройств с использованием не собственно «большой» Java, а специального декларативного языка JavaFX Script. Тесная интеграция при этом соблюдается в полной мере – в
JavaFX script можно обращаться ко всем библиотекам Java, также возможно их совместное использование для написания сложной логики на серверной стороне. В целом, технология еще достаточно новая и находится только на стадии развития.
Microsoft Silverlight. Осознав нарастающую тенденцию «утечки» программного обеспечения в Интернет, компания Microsoft не могла остаться в стороне и решительно включилась в борьбу, представив собственную технологию Silverlight. Она вполне самодостаточна, универсальна и заключает в себе возможности работы с мультимедиа, графикой, анимацией и интерактивностью, реализуемой средствами языков семейства .NET, а также разметку страниц средствами XAML (eXtended Application Markup Language – расширяемый язык разметки на базе известного XML). Ясно, что платформа от гиганта вроде Microsoft не может быть бедной по определению – здесь и огромный выбор средств разработки (можно использовать как простой VB.NET, так и мощный объектно-ориентированный C#), и хорошие средства разметки, и полный набор возможностей, и хорошая производительность. Silverlight напрямую конкурирует с прочно стоящим на ногах Adobe Flash и, если верить тестам, производительность уже сейчас часто оказывается далеко не в пользу последнего. Пока что Flash имеет еще очень большую «инерцию» в сфере RIA-разработки, он может не нравиться, но к нему привыкли, тогда как Microsoft предлагает совершенно другой подход к разработке – языки, обычно ассоциирующиеся с разработкой настольного ПО. Но крупнейшая софтверная корпорация мира вряд ли откажется от своих претензий на сегмент рынка интерактивных веб-приложений и по мере написания этих строк (2 декабря 2010 г.) анонсирована уже 5-я версия Silverlight.
Общее сравнение и анализ.
Конечно, описанные выше технологии далеко не единственные возможности реализации RIA-приложений, но мы решили рассмотреть именно появившиеся недавно и которые в ближайшем будущем могут стать определяющими облик Веба. Наиболее наглядно такое сравнение будет выглядеть в виде табл.
GWT |
Adobe Flex |
Java FX |
Microsoft Silverlight |
HTML 5 |
|
Логика |
Java |
Actionscript |
Java, JavaFX script |
C++, C#, Visual Basic, Object Pascal, другие ООП-языки |
отсутствует (по сути – любой) |
Интер-фейс |
ООП (Java) |
декларативное , на основе XML (MXML) |
декларативное (JavaFX script) |
декларативное, на основе XML (XAML) |
декларативное |
Инстру- менты |
Eclipse, NetBeans |
Flex Builder |
Eclipse, NetBeans, JFXBuilder |
Visual Studio |
любой WYSIWYG- редактор |
Графика |
3D (webGL), векторная ускорение |
векторная |
векторная, ускорение |
3D, векторная, ускорение |
3D (webGL), векторная, ускорение |
Основной вывод, который может сделать читатель из этой табл. – насколько особняком в этом сравнении стоит технология HTML 5. Если все остальные решения предлагают практически полный и законченный пакет для создания веб-приложения (особенно далеко в этом направлении продвинулась Microsoft со своим Silverlight), HTML 5 не изменяет своей сути и остается только языком разметки и проектирования интерфейса. Для описания логики по-прежнему предполагается использовать любые другие сторонние языки и средства, которые позволяют динамически манипулировать разметкой. Налицо борьба двух парадигм разработки за будущее Веба: мощных и монолитных технологий с полным инструментарием практически на все случаи (за это борятся гиганты в лице Adobe и Microsoft) и текущей парадигмы, где разметка, логическая и скриптовая части существуют с точки зрения технологий раздельно и варьируются на усмотрение разработчика. HTML в качестве разметки будет в той или иной степени присутствовать везде, но существует огромная разница – используется ли несколько строк в качестве соблюдения вынужденных стандартов и обрамления для полновесного Flash или Silverlight приложения, или же будет делаться ставка на использование и расширение возможностей самого HTML и разных средств манипуляции им.
По мнению авторов, наиболее вероятным в будущем выглядит все-таки второй вариант – то есть, «старая» парадигма. Почему? Даже в такой динамичной и инновационной отрасли, как IT и веб-технологии, присутствует своя инертность, привычки и наработки текущих проектов и разработчиков. «Новая» парадигма предлагает своего рода революцию, и отторжение рынка может вызвать не столько новый подход к разработке, сколько концепция ведущих игроков на этом поле – привязка к определенным технологиям и сосредоточенность всего пакета в руках единого разработчика-корпорации. Крупные компании, для которых не важна стоимость и сложность разработки, уже сейчас выбирают такие монолитные технологии, но следует признать – в данном случае действует желание компании иметь соответствующее своему уровню «лицо» во Всемирной паутине и поразить посетителя разнообразными «фичами». Но – таких сайтов в сети меньшинство, а перегруженность интерфейса и «дизайнерские находки» зачастую вызывают неприятие даже у самих пользователей, потому что в погоне за технологичностью разработчики часто забывают о целевом назначении ресурса и элементарной эргономике. Самый яркий пример – злоупотребление появившимися достаточно давно и завоевавшим свою нишу Flash – хотя и с другой стороны, без него уже нельзя представить облик современного Интернета. Абсолютное большинство веб-разработчиков сегодня чувствует себя вполне комфортно в рамках текущей парадигмы и существующих технологических решений и хочет лишь эволюционного, но не революционного их развития. Этому же отвечают гласные и негласные стандарты разработки. Стоит только начать «новеньким» хоть немного перетягивать одеяло стандартов на себя – тут же начнутся обвинения (особенно в адрес Microsoft) в попытке со временем захватить рынок веб- разработки и диктовать там свои законы. Насколько справедливы такие обвинения – вопрос риторический. Все покажет время.
ЛИТЕРАТУРА
- Tim Berners-Lee, Mark Fischetti. Weaving the Web; The Original Design and Ultimate Destiny of the World Wide Web by Its Inventor. – Harper Paperbacks, 2000.
- HTML5. Draft standart. http://www.whatwg.org/specs/web-apps/current-work/
- Google Web Toolkit Overview. http://code.google.com/webtoolkit/overview.html
- Adobe Flex Framework Technologies. http://labs.adobe.com/technologies/flex/
- The official Microsoft Silverlight Site. http://www.silverlight.net/
- JavaFX – RIA development. http://javafx.com/