Компания Google выпустила предварительную версию SDK для упрощения разработки полноценных web-приложений, функционирующих в среде Native Client, позволяющей выполнять в окне web-браузера обычные бинарные программы, ограниченные в специальном изолированном окружении. Изначально Native Client был создан для адаптации существующих программ для работы в браузере, но теперь продвигается и как платформа для создания универсальных web-приложений, написанных на языке C/C++ и использующих для выполнения свойственных web-приложениям действий специальный API.
По заявлению разработчиков, web-приложения, созданные с использованием технологии Native Client, значительно превосходят по производительности программы на JavaScript и Flash, являясь при этом более надежными и безопасными. В отличие от традиционных web-приложений, в программах для Native Client могут без потери производительности выполняться действия, требующие интенсивных вычислений, производиться рендеринг 2D/3D-графики и проигрывание звука, организовываться более полное взаимодействие с клавиатурой и мышью.
В качестве примера web-приложений на базе Native Client в презентации приводятся программы для обработки фотографий и редактирования видео в online. Поддерживается создание комбинированных приложений, например, для web-сервиса по обработке видео, предлагается перенести с серверной стороны базовый костяк функций обработки данных в виде модуля Native Client, для клиентской части задействовать HTML/JavaScript и организовать отправку на сервер изменений или готовых результатов работы.
SDK базируется на GCC и стандартных инструментах разработки GNU. Пакет доступен для платформ Linux, Windows и MacOS X. Для тестирования созданных в SDK программ требуется последняя экспериментальная версия плагина Native Client, которая пока доступна только для браузера Chromium.
Тестирование производительности показало, что собранные с использованием Native Client приложения выполняются в виртуальном окружении внутри браузера всего на 3% медленнее по сравнению с производительностью работы немодифицированных версий тех же программ. Инструкции при работе программы в Native Client не преобразуются в байткод виртуальной машины, а выполняются как есть, с максимально возможной производительностью. Безопасность в Native Client достигается через изоляцию системных вызовов и прерываний - разрешено выполнение 46 системных вызовов, остальное либо запрещено, либо эмулируется специальным runtime-кодом. Сетевые и дисковые функции, а также операции для работы с памятью, обрабатываются специальной подсистемой. Обращение за пределы дозволенных областей памяти блокируются через задействования системы обработки исключений CPU.
В настоящее время Native Client поддерживает платформы x86 и ARM, дополнительно ведется работа по использованию для сборки программ системы LLVM, что позволит разработчикам создавать универсальные приложения, без пересборки работающие на всех поддерживаемых аппаратных архитектурах (программа будет поставляться в виде байткода, который будет транслироваться на лету в машинный код целевой платформы средствами LLVM).
С точки зрения разработчика окружение Native Client выглядит как небольшая операционная система со своим, основанным на GCC, инструментарием для кросс-компиляции, частичной поддержкой POSIX и базовым мультимедийным API, который можно использовать для работы с аудио и видео, обрабатываться события от мыши и клавиатуры. Также доступен ряд свойственных web-приложениям функций, таких как загрузка внешней страницы. В этом плане Native Client позволяет организовать выполнение тех же функций, что может обычное web-приложение на JavaScript. Клиентская часть Native Client состоит из универсального плагина, который поддерживает браузеры Firefox, Safari, Opera и Google Chrome на платформах Linux, Mac OS X и Windows.
|