Google Native Client: нативные веб-приложения

В последнее время гиганты по разработке программного обеспечения, такие, как Adobe, Sun, Microsoft, активно разрабатывают собственные решения по созданию десктопных веб-приложений. Не могла остаться в стороне от этого процесса и корпорация Google, которая недавно представила свою технологию Google Native Client, при помощи которой можно внедрять в браузер программы, написанные на заурядном C/C++.


Веб-приложения

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

Сейчас также очень модными становятся так называемые "обогащённые веб-приложения" RIA (Rich Internet Application). Это программные модули, которые могут запускаться в том же интернет-браузере и обладают более богатыми функциональными и мультимедийными возможностями, чем может предоставить классический html+ajax. RIA-приложения могут иметь возможность также запускаться и без браузера, как обычные десктопные программы. Самым доступным примером таких программ являются flash-игрушки.

Как уже было сказано в самом начале, на этом рынке "обогащённых веб-приложений" начинает образовываться весьма серьёзная конкуренция. Лидером в этой области пока однозначно является Adobe с большим набором веб-технологий - Flash, Flex, Air, Alchemy. Амбициозные планы по экспансии на этот рынок вынашивает и "Майкрософт" со своим Silverlight/Moonlight. Конкуренцию может составить и Sun Microsistem, которая выпустила совсем недавно первую версию JavaFX Script.

И вот в эту битву титанов вступила Google, представив для ознакомления на прошлой неделе свою среду Native Client, предназначенную для создания и запуска в интернет-браузере нативных программ для архитектуры x86.


Более подробно

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

В Google решили не изобретать новый велосипед - то есть очередной вариант байт-кода и свою виртуальную машину. Инженеры компании решили просто создать такую среду выполнения приложения, которая позволяла бы создавать и запускать в особом безопасном окружении обычные для PC программы без всякой предварительной компиляции в промежуточный код. Это позволит тем же веб-приложениям напрямую использовать на всю катушку возможности, мощь, специальные инструкции современных процессоров Intel и AMD. То есть Native Client позволят писать веб-приложения даже на Ассемблере, если у разработчика, конечно же, возникнет такое желание. На данный момент поддерживается система команд x86.

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

На уровне системы Native Client состоит из специального плагина к интернет-браузеру для обеспечения работы и отображения RIA-программ непосредственно на html-странице. Это внедрение простое и происходит через элемент embed, например:

<embed src="quake.nexe" type="application/x-nacl-srpc">

Также в Native Client входит специальный "запускатор" RIA-программ. Он обеспечивает работу этих приложений как отдельных обычных программ в отдельном окошке. Ну и для разработчиков, соответственно, прилагаются специальные утилиты сборки и компиляции.


Практикуемся

Для того чтобы оценить новое творение Google, нужно с сайта компании скачать специальный архив размером около 80 мегабайт. В отличие от других, Google не обидела линуксоидов и на сайте имеется версия Native Client и для "Линукс". Мало того, вся работа организована в юниксоидном стиле, через командную строку.

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

Примеры после распаковки архива находятся в каталоге nacl/googleclient/native_client/test. Для начала можно переместиться в каталог earth и насладиться видом вращающейся вокруг своей оси планеты Земля, выполнив простую команду:

$ python run.py 

Нас интересуют, конечно же, нативные приложения для интернет-браузера. Для этого к нему нужно собрать специальный плагин. Переходим в каталог nacl/googleclient/native_client и здесь выполняем сборку плагина через уже настроенный и готовый к употреблению scons:

$ ./scons --prebuilt firefox_install 

Scons - это кроссплатформенная система для сборки программных проектов, которая является альтернативой make. Если всё было правильно, то в каталоге plugin для "Огнелиса" появится плагин для нативных RIA-приложений.

Для проверки плагина заходим в директорию scons-out/nacl/staging и загружаем в браузер страницу index.html, на которой представлена таблица с парой десятков различных примеров, начиная с обязательного в таких случаях hello world.

А самым интересным примером для линуксоидов, думаю, будет сборка и запуск в браузере бессмертного Quake 1. Это такой ответ инженеров Google "алхимикам" из Adobe, что скомпилировали первый Doom из оригинальных исходников во флэш-программу при помощи технологии Alchemy.

Подробный README по сборке находится непосредственно в каталоге примеров в директории quake. Нужно будет скачать сами файлы игры с сайта www.libsdl.org/projects/quake, распаковать всё это хозяйство в данную папку, запустить патч и затем выполнить прямо здесь:

$ make debug nacl 

Скомпилируется готовый бинарный файл nacl_quake, который тут же можно запустить через уже готовую страницу quake.html. Даже для начинающего линуксоида данная процедура не составит большого труда.

Пользователи Windows и MacOS должны, соответственно, прочитать в руководстве к Native Client о нюансах работы на своих системах.


Заключение

Следующий год обещает быть интересным в плане конкуренции в области "насыщенных веб-приложений". Лидеры разработок программного обеспечения предлагают в данной области очень любопытные решения. Каждое решение имеет на этом рынке свои преимущества: Adobe Flash - это проверенный временем продукт; Silverlight "Майкрософт" имеет большую армию пользователей Windows; JavaFX могут легко освоить традиционные java-кодеры; Google Native Client отличает от конкурентов новизна и оригинальность. Так что конечным пользователям однозначно скучно не будет.

Михаил АСТАПЧИК

Версия для печатиВерсия для печати

Номер: 

49 за 2008 год

Рубрика: 

Технологии программирования
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!