Native Client

Материал из OpenWiki
Перейти к: навигация, поиск

Фреймворк Native Client позволяет выполнять в окне web-браузера обычные бинарные приложения, ограниченные в специальном изолированном окружении. В отличии от похожих проектов, инструкции при работе программы в Native Client не преобразуются в байткод виртуальной машины, а выполняются как есть, с максимально возможной производительностью (потеря производительности не более 5%). Безопасность в Native Client достигается через изоляцию системных вызовов и прерываний - разрешено выполнение 46 системных вызовов, остальное либо запрещено, либо эмулируется специальным runtime кодом. Сетевые и дисковые функции, а также операции для работы с памятью, обрабатываются специальной подсистемой. Обращение за пределы дозволенных областей памяти блокируются через задействования системы обработки исключений CPU.

С точки зрения разработчика окружение Native Client выглядит как небольшая операционная система со своим, основанным на GCC, инструментарием для кросс-компиляции, частичной поддержкой POSIX и базовым мультимедийным API, который можно использовать для работы с аудио и видео, обрабатываться события от мыши и клавиатуры. Также доступен ряд свойственных web-приложениям функций, таких как загрузка внешней страницы. В этом плане Native Client позволяет организовать выполнение тех же функций, что может обычное web-приложение на JavaScript.

На стороне клиента, управление выполнением программ в Native Client производится через универсальный плагин к web-браузеру. Плагин поддерживает браузеры Firefox, Safari, Opera и Google Chrome на платформах Linux, Mac OS X и Windows. В скором времени будет доступна версия для архитектур ARM и PPC. Исходные тексты разработки распространяются в рамках лицензии BSD.

Из примеров портирования традиционных технологий для работы внутри браузера при помощи Native Client можно привести порт библиотеки Qt и систему для выполнения скриптов на языке Python в web-браузере.