Кажется в декабре позапрошлого года (1.5 года назад) Google объявил о разработке, позволяющей под браузерами запускать приложения, написанные, фактически, на С++ (применяется соотв. SDK, само собой, плюс все это работает в защищенном контексте, мапирование памяти и все такое). И оно уже вышло (ссылка на обзор и полный его текст, на русском - ниже)!
Немного истории и исторических параллелей. Откуда. Что. Зачем.
В свое время Adobe (года 2 - 2.5 назад) объявил о реализации в чем-то подобного проекта, продемонстировал тогда игру Doom, работающую во Flash с довольно высокой скоростью. Идея заключалась в разработке и трансляции С++-кода в виртуальную машину флеша, где оно все и работало. До недавнего времени проект от Adobe был по прежнему в статусе беты, лениво искать ссылку и точное название, если кому нужно - уточню в комментарии.
Ну и в конце такой "преамбулы к вопросу" - напомню про известный проект http://www.quakelive.com/ - который работает под браузерами на большинстве платформ, иногда с удовольствием режусь в эту игру, кто не пробовал - рекомендую!
Так же, на "фоне всего этого" - недавняя новость из "мира Apple" про убийцу флеша - там это все пустое, мягко говоря (см. чуть ранее в моем блоге, если одним словом - там речь идет про JavaScript-фреймворк, при чем тут флеш, не понятно ни разу).
Итак. Что же мы имеем:
"14.05.2010 12:54 Для разработки web-приложений на базе Native Client выпущен специальный SDK"
Полный текст обзора:
"Компания 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."
0 коммент.:
Отправить комментарий