Эффект аксолотля или куда движутся браузеры и веб-приложения

Mozilla Prism

В октябре 2007 г. Mozilla запустила весьма примечательный, но не сильно взлетевший проект – Mozilla Prism, базировавшийся на XULRunner. Мне даже довелось использовать его для практических нужд. Позже в 2010 году проект был отмечен как неактивный, а в начале февраля 2011 года идеи проекта перетекли в другой проект Mozilla Labs – Chromeless.

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

Не берусь утверждать, что это первые подобные попытки, но точно есть последующие, и я чуть ниже о них еще скажу.

HTA

Что действительно интересно, так это что попытки использовать клиентские веб-технологии для разработки десктопных приложений имеют довольно давние корни. В случае Windows – это как минимум 1999 год, когда с выходом Internet Explorer 5 была выпущена технология HTML Application (HTA), позволяющая создавать десктопные приложения с помощью привычного стека клиентских веб-технологий, работающих в браузере.

HTA – это, фактически, html-страничка (или набор страниц), CSS-стили, скрипты и другие технологии, работающие в браузере + несколько дополнительных API для взаимодействия с операционной системой.

Хотя технология HTA не обрела большой популярности, она по-прежнему доступна в Windows, и, в принципе, с выходом IE9 (beta) уже сейчас можно создавать десктопные приложения на html5 и сопутствующих технологиях ;)

“Великий веб-раздел”

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

image

Мысль простая: начиная примерно с 2004 года все крупные широко известные проекты – это веб-проекты, работающие в браузере. И отсюда можно услышать отголоски идеи в виде заявлений, что “десктоп умер и будущее за вебом”.

Истина, как говорится, где-то рядом.

Flash и Silverlight

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

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

Встроенное проигрывание аудио/видео, стримминг контента, векторная и растровая графика, API для рисования графики, анимации и трансформации, аппаратное ускорение, шейдеры, 3D манипуляции, полноэкранный режим, продвинутая работа с текстом и шрифтами, скорость выполнения кода и компиляция для той или иной виртуальной машины, расширенный доступ к операционной системе, (в частности к файловой системе) доступ к устройствам ввода (микрофон и камера), проверка наличия соединения с интернетом, расширенные возможности для взаимодействия с удаленным сервером.

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

Хотите знать, что будет нативно поддерживаться в браузерах через несколько лет? Смотрите на современное состояние популярных плагинов. (Взаимотношение плагинов и браузеров – отдельная история.)

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

Браузеры и веб-приложения

(См. также пост “ Веб-приложения: браузер или OS? ”.)

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

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

Знаете почему так? Мне кажется, что ключевым драйвером является практически встроенная монетизация (да-да, те самые аппсторы, маркетплейсы и т.д.).

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

Тут можно вспомнить о мечте создавать кроссплатформенные приложения на базе веб-стандартов – с приходом нового поколения мобильных устройств эта задача даже еще более актуальна, чем в случае десктопных сред – уж сильно велика фрагментация. (Хотя если создавать приложение под ограниченное количество платформ О(1), все намного проще.)

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

Браузер на самом деле меняется, и, сли раньше он был просто средством отображения веб-страничек, умеющим отображать HTML, CSS и выполнять скрипты на JavaScript, то постепенно она начинает усложняться и предлагать новые возможности.

image

Значительная часть этих новых возможностей произрастает из тех самых браузерных плагинов, которые, к примеру, сделали возможными те самые Youtube и Hulu, что обозначены на картинке выше. Плагины эти не только предоставляют новые для браузера возможности, но и, в сущности, расширяют взаимодействие браузера с операционной системой и железом, имеющимся на борту у пользователя.

image

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

image

Фактически, браузер – это полноценная виртуальная машина для выполнения веб-приложений. И в таком разрезе отличие от, скажем, Silverlight/.NET (который может хоститься внутри браузера) в том, что в качестве базовых технологий используются HTML/CSS/JavaScript и ряд других, включая соответствующие API.

В-третьих, и тут характерно не только, к примеру, внедрение в Internet Explorer 9 функциональности Pinned Sites (см. также пост “IE9: Секреты Pinned Sites”), но и те самые движения по созданию десктопных приложений, используя веб-технологии, и превращению браузерных веб-приложений в десктопные веб-приложения, с которых я начал.

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

Такая эволюционная трансформация напоминает “эффект аксолотля”.

Эффект аксолотля

Аксолотль (Axolotl, Ambystoma mexicanum) – это личинка некоторых видов амбистом. Свою известность данная живность приобрела благодаря тому, что может размножаться, еще не перейдя во взрослую фазу. Для взросления аксолотля необходимы определенные условия, например, изменение среды обитания на более сухую и прохладную или повышение уровня определенных гормонов.

  

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

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

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

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

===

Вот и Mozilla Labs говорит о “the movement toward built-in browser support for “installable” Web sites” и “we now want to Make it possible to build desktop applications with Web technologies.”

Десктоп жив и он меняется. Меняются и браузеры.