Google Native Client
Разработчик (ы) | Google , другие |
---|---|
Первоначальный выпуск | 16 сентября 2011 года [ 1 ] |
Стабильный релиз | SDK: Pepper 45 /10 июля 2015 года
Клиенты: так же, как Google Chrome |
Репозиторий | |
Написано в | C , C ++ |
Операционная система | Windows , Linux , MacOS , Chromeos |
Платформа | x86 , рука , mips |
Преемник | Webassembly |
Тип | Песочница в веб -браузерах для нативного кода |
Лицензия | Новый BSD |
Веб -сайт | разработчик |
Google Native Client ( NaCl ) - это снятая технология песочницы для запуска подмножества Intel X86 , ARM или MIPS нативного кода, либо портативного исполняемого исполняемого файла в песочнице. Он позволяет безопасно запускать натуральный код из веб-браузера пользователя , независимо от операционной системы , позволяя веб-приложениям работать на почти коренных скоростях, что соответствует планам Google по ChromeOS . Он также может использоваться для защиты плагинов браузера , а также части других приложений или полных приложений [ 2 ] такие как Zerovm . [ 3 ]
Чтобы продемонстрировать готовность этой технологии, 9 декабря 2011 года, Google объявил о наличии нескольких новых версий игр хрома, известных своей богатой и процессорной только для графикой , включая бастион (больше не поддерживается в веб -магазине Chrome ). NaCl запускает 3D -графику с аппаратной ускорением (через OpenGL ES 2.0), локальное хранилище файлов в песочке, динамическую загрузку , полноэкранную режим и захват мыши . Были также планы сделать NACL доступным на портативных устройствах. [ 4 ] [ 5 ]
Портативный нативный клиент (PNACL) является независимой от архитектуры версией. Приложения PNACL собираются заранее . PNACL рекомендуется над NaCl для большинства вариантов использования. [ 6 ] Общая концепция NaCl (запуск нативного кода в веб-браузере) была реализована ранее в ActiveX , которая, пока используется, имеет полный доступ к системе (диск, память, пользовательский интерфейс, реестр и т. Д.). Нативный клиент избегает этой проблемы, используя песочницу.
Альтернативой Mozilla была ASM.JS , которая также позволяет приложениям, написанным в C или C ++ , собираться для работы в браузере, а также поддерживает компиляцию заранее, но является подмножеством JavaScript и, следовательно, обратно совместимы с браузерами, которые представляют собой подмножество JavaScript и, следовательно. Не поддерживайте его напрямую.
12 октября 2016 года комментарий о трекере выпуска Chromium показал, что команды Google Pepper и Native Clients были предприняты. [ 7 ] 30 мая 2017 года Google объявил о том, как PNACL в пользу Webassembly . [ 8 ] Хотя изначально Google планировал удалить PNACL в первом квартале 2018 года, [ 8 ] а позже во втором квартале 2019 года, [ 9 ] Он был удален в июне 2022 года (вместе с приложениями Chrome ). [ 10 ] [ 11 ]
Обзор
[ редактировать ]Наземный клиент был проектом с открытым исходным кодом, разработанным Google . [ 12 ] Такие игры, как Quake , [ 13 ] Xaos , битва за Wesnoth , [ 14 ] Рок , [ 15 ] Лара Крофт и Страж Света , [ 16 ] Из пыли , [ 17 ] и MAME , а также система обработки звука CSOUND , была перенесена на собственного клиента. Native Client был доступен в веб -браузере Google Chrome с версии 14 и был включен по умолчанию с версии 31, когда был выпущен портативный собственный клиент (PNACL, произносится: pinnacle). [ 18 ] [ 19 ] [ 20 ]
Реализация ARM была выпущена в марте 2010 года. [ 21 ] x86-64 , IA-32 и MIPS также были поддержаны.
Чтобы запустить приложение, переносимое под PNACL, оно должно быть составлено в архитектуру-агрессию и стабильное подмножество LLVM представления промежуточного . [ 22 ] Исполнители называются исполняемыми файлами PNACL (PEXES). PNACL Toolchain производит файлы .pexe; NaCl Toolchain. Волшебное количество файлов . В Chrome они переводятся на исполняемые архитектуру, чтобы их можно было запустить.
NaCl использует обнаружение неисправности программного обеспечения и изоляцию для песочницы на x86-64 и ARM. [ 23 ] архитектуры x86 Реализация x86-32 нативного клиента известна своим новым методом песочницы, в котором используется редко используемый сегментационную установку . [ 24 ] Натуральный клиент устанавливает сегменты x86 для ограничения диапазона памяти, к которому может получить код из песочницы. Он использует проверку кода для предотвращения использования небезопасных инструкций, таких как те, которые выполняют системные вызовы. Чтобы код не прыгнул на небезопасную инструкцию, скрытую в середине безопасной инструкции, нативный клиент требует, чтобы все косвенные прыжки были прыжками до начала 32-байтооданных блоков, а инструкции не разрешались переоценить эти блоки. [ 24 ] Из -за этих ограничений код C и C ++ должен быть перекомпилирован, чтобы запустить под нативным клиентом, который предоставляет индивидуальные версии инструментального оборудования GNU , в частности, коллекция компиляторов GNU (GCC), GNU Binutils и LLVM .
Нативный клиент лицензирован по лицензии в стиле BSD .
Native Client использует Newlib в качестве библиотеки C порт библиотеки GNU C (GNU LIBC). , но также доступен [ 25 ]
Перец
[ редактировать ]NaCl обозначает хлорид натрия , общую столовую соль ; Как каламбур , название перца также использовалось. Pepper API-это кроссплатформенный API с открытым исходным кодом для создания нативных клиентских модулей. [ 26 ] Pepper Plugin API или PPAPI [ 27 ] [ 28 ] является кроссплатформенным API для нативных плагинов веб-браузеров, получивших клиент, сначала на основе NPAPI NetScape , а затем переписывается с нуля. Он использовался в Chromium и Google Chrome , чтобы включить версию PPAPI Adobe Flash [ 29 ] и встроенный просмотрщик PDF . [ 30 ]
PPAPI
[ редактировать ]12 августа 2009 года на странице по коду Google представила новый проект, Pepper и API -API -плагин Pepper (PPAPI), [ 31 ] «Набор модификаций NPAPI, чтобы сделать плагины более портативными и безопасными». [ 32 ] Это расширение предназначено специально для облегчения реализации выполнения плагинов из процесса . Кроме того, цели проекта-обеспечить основу для создания плагинов полностью кроссплатформенным. Рассматриваются темы: включают:
- Единая семантика для NPAPI в браузерах.
- Выполнение в отдельном процессе от рендеринга-браузера.
- Стандартизация рендеринга с использованием процесса композиции браузера.
- Определение стандартизированных событий и 2D Rasterizing функции.
- Первоначальная попытка предоставить 3D -доступ к графическому доступу.
- Реестр плагинов.
Pepper API также поддерживает геймпады (версию 19) и веб -питания (версия 18). [ 33 ]
По состоянию на 13 мая 2010 г. [update]Браузер Google с открытым исходным кодом, Chromium , был единственным веб-браузером, который использовал новую модель плагина браузера. [ 34 ] По состоянию на 2020 год Pepper поддерживается браузами на основе двигателя Chrome, Chromium и Blink Mayout, такими как Opera и Microsoft Edge.
В августе 2020 года Google объявил, что поддержка PPAPI будет удалена из Google Chrome и Chromium в июне 2022 года. [ 35 ]
PPAPI в Firefox
[ редактировать ]Разработчики Firefox заявили в 2014 году, что они не будут поддерживать перец, так как не было никакой полной спецификации API после его реализации в Chrome, которая была разработана только для использования только с двигателем макета Blink , и имел личный API, специфичный для плагина Flash Play не были задокументированы. [ 36 ] В октябре 2016 года Mozilla объявила, что переосмыслена и изучала, следует ли включать Pepper API и PDFIUM в будущие выпуски Firefox, [ 37 ] Однако таких шагов не было. В июле 2017 года Adobe установила Flash и объявила о своем окончании жизни в конце 2020 года. [ 38 ] К январе 2021 года Adobe Flash Player, Google Chrome, Firefox, Safari и Windows [ 39 ] Полученные обновления отключили или полностью удаляют вспышку.
Приложения
[ редактировать ]Один веб -сайт [ 40 ] использовал NaCl на сервере, чтобы позволить пользователям экспериментировать с языком программирования GO из своих браузеров. [ 41 ]
Прием
[ редактировать ]Некоторые группы разработчиков браузеров поддерживали технологию нативных клиентов, а другие - нет.
Сторонники
[ редактировать ]Чад Остин (из IMVU ) похвалил, как нативный клиент может предоставить высокопроизводительные приложения в Интернет (примерно на 5% штрафа по сравнению с нативным кодом) безопасным образом, а также ускоряет эволюцию приложений на стороне клиента, предоставив выбор выбора используемого языка программирования (помимо JavaScript ). [ 42 ]
Id Software из Джон Д. Кармак похвалил нативного клиента на Quakecon 2012, сказав: «Если вам нужно что -то сделать в браузере, нативный клиент гораздо интереснее, как нечто, что начиналось как действительно чертовски умный взлом x86 на пути что они могли бы садиться в песочницу в режиме пользователя. На местный код. [ 43 ]
Хулители
[ редактировать ]Другие ИТ -специалисты более критиковали эту технологию песочницы, поскольку у нее были существенные или существенные проблемы взаимодействия.
Mozilla Вице -президент по продуктам, Джей Салливан , сказал, что Mozilla не планирует запускать нативный код в браузере, так как «эти нативные приложения - это лишь маленькие черные ящики на веб -странице. [...] мы действительно верим в HTML, И здесь мы хотим сосредоточиться ». [ 44 ]
из Mozilla Кристофер-Близзард критиковала NaCl, утверждая, что нативный код не может развиваться так же, как может быть основанная на исходном коде. Он также сравнил NaCl с технологией Microsoft ActiveX , страдающего от DLL Hell . [ 2 ]
Håkon Wium Lie , технический директор Opera, полагал, что «NaCl, кажется,« стремится к плохим старым временам, перед сетью », и что« нативный клиент - это создание новой платформы - или переносить старую платформу в Интернет [. ..] Это принесет проблемы сложности и безопасности, и это отнимает фокус с веб -платформы ». [ 2 ]
Второе поколение
[ редактировать ]Второе поколение песочницы , разработанное в Google, - GVISOR . [ 45 ] [ 46 ] Он предназначен для замены NaCl в Google Cloud , чтобы быть более точным в Google App Engine . Google также продвигает Webassembly . [ 47 ]
Смотрите также
[ редактировать ]- Виртуализация приложения
- Эмисс
- Sandboxie , запуск программ Windows в песочнице
- Webassembly , стандарт байт -кодов для веб -браузеров
- Приложения браузера XAML (XBAP)
Ссылки
[ редактировать ]- ^ «Нативный клиент Google идет в жизнь в Chrome» . Реестр . 16 сентября 2011 года . Получено 12 марта 2016 года .
- ^ Jump up to: а беременный в Метц, Кейд (12 сентября 2011 г.). "Google Native Client: сеть будущего - или прошлое?" Полем Реестр . Получено 17 сентября 2011 года .
- ^ «Архитектура Zerovm» . Архивировано из оригинала 8 февраля 2014 года . Получено 16 марта 2014 года .
- ^ Розенблатт, Сет (9 декабря 2011 г.). «Нативный клиент превращает Chrome в высококлассную игровую платформу» . CNET. Архивировано из оригинала 28 августа 2012 года . Получено 9 декабря 2011 года .
- ^ «Блог Google Code: игры, приложения и время бега приходят к нативному клиенту» . Googlecode.blogspot.com. 9 декабря 2011 года . Получено 25 апреля 2012 года .
- ^ "NaCl и Pnacl" .
- ^ "Bugs.chromium.org" . 12 октября 2016 года . Получено 12 октября 2016 года .
- ^ Jump up to: а беременный "Прощай, pnacl, Привет, webassembly!" Полем Блог хрома . Получено 31 мая 2017 года .
- ^ «Руководство по миграции Webassembly - Google Chrome» . Developer.chrome.com . Получено 20 декабря 2018 года .
- ^ «Изменения в временной шкале поддержки приложения Chrome» . Блог хрома . 10 августа 2020 года.
- ^ Ли, Абнер (10 августа 2020 г.). «Google задерживает снижение приложений Chrome на всех платформах» . 9to5google . Получено 2 октября 2021 года .
- ^ «Google Native Client в Google Code» . Получено 25 апреля 2012 года .
- ^ Дэвемичэл (3 октября 2020 г.). «Github - Davemichael/NaCl -Quake: Quake for Kind Client (на основе порта Quake SDL)» . GitHub .
- ^ «Битва за Уэснот» .
- ^ "Индекс /" .
- ^ "Chrome Web Store - Лара Крофт и Страж Света" . Архивировано из оригинала 8 декабря 2013 года . Получено 26 ноября 2013 года .
- ^ «Из пыли» . Архивировано с оригинала 12 марта 2016 года . Получено 24 февраля 2016 года .
- ^ Чен, Брэд (8 декабря 2008 г.). «Нативный клиент: технология запуска нативного кода в Интернете» . Google-Code-updates.blogspot.com . Получено 25 апреля 2012 года .
- ^ «Блог Chromium: Native Client привносит нативный код в песочнице в приложения Chrome Web Store» . Blog.chromium.org. 18 августа 2011 года . Получено 25 апреля 2012 года .
- ^ «Блог Google Code: портативный нативный клиент:« вершина »скорости, безопасности и переносимости» . blog.chromium.org. 12 ноября 2013 года . Получено 16 марта 2014 года .
- ^ «Нативный клиент Google идет рукой и за его пределами» . H. 18 марта 2010 года . Получено 19 мая 2010 года .
- ^ «PNACL: портативные исполняемые файлы нативного клиента» (PDF) . Архивировано из оригинала (PDF) 2 мая 2012 года . Получено 25 апреля 2012 года .
- ^ Сер, Дэвид; Мут, Роберт; Biffle, Cliff L.; Хименко, Виктор; Паско, Эгор; Да, Беннет; Шимпф, Карл; Чен, Брэд (2010). «Адаптирование изоляции ошибки программного обеспечения к современным архитектурам процессора» . 19 -й Симпозиум безопасности Усеникс . Получено 31 июля 2011 года .
- ^ Jump up to: а беременный Да, Беннет; Сер, Дэвид; Дардик, Грег; Чен, Брэд; Мут, Роберт; Орманди, Тавис; Окасака, Шики; Нарула, Неха; Fullagar, Nicholas (2009). «Нативный клиент: песочница для портативного, ненадежного нативного кода x86» . Симпозиум IEEE по безопасности и конфиденциальности (Oakland'09) . Получено 31 июля 2011 года .
- ^ «Наземный клиент: строительство» . Developer.chrome.com . Получено 16 марта 2014 года .
- ^ «Технический обзор» . [ Постоянная мертвая ссылка ]
- ^ "Pepper Plugin API Project at" . Архивировано с оригинала 9 сентября 2016 года . Получено 25 апреля 2012 года .
- ^ «Источник Chrome: индекс/trunk/src/ppapi» . Src.chromium.org . Получено 25 апреля 2012 года .
- ^ «Дорога к более безопасной, более стабильной и яркой вспышке» . 8 августа 2012 года . Получено 10 августа 2013 года .
- ^ Метц, Кейд (18 июня 2010 г.). «Google обнимает Adobe сильнее с Crome-PDF слиянием» . Реестр . Получено 25 апреля 2012 года .
- ^ «Начало работы: фон и основы - проекты хрома» . Chromium.org . Получено 25 апреля 2012 года .
- ^ "Pepper.wiki" . 24 февраля 2012 года . Получено 25 апреля 2012 года .
- ^ «Выпуск заметок» .
- ^ Метц, Кейд (13 мая 2010 г.). «Google нагревает натуральный код для Chrome OS» . Thesgister.co.uk . Получено 25 апреля 2012 года .
- ^ Энтони Лафордж (10 августа 2020 г.). «Изменения в временной шкале поддержки приложения Chrome» . Блог хрома .
- ^ Збарский, Борис. «Bug 729481 - Поддержите API плагина" Pepper " . Получено 15 апреля 2016 года .
- ^ Метц, Кейд (3 октября 2016 г.). "Проект раствор" . Мозилла . Получено 30 октября 2016 года .
- ^ «Флэш и будущее интерактивного контента» . Adobe Inc. 25 июля 2017 года. Архивировано с оригинала 2 декабря 2017 года . Получено 31 июля 2023 года .
- ^ Солтер, Джим (4 мая 2021 г.). «Прощай, снова, Flash - Microsoft делает удаление с Windows 10 обязательным» . Ars Technica . Получено 1 августа 2023 года .
- ^ "Go Playground" .
- ^ «Внутри игровой площадки Go - блог Go» . blog.golang.org . Получено 27 августа 2016 года .
- ^ Остин, Чад (8 января 2011 г.). «Чад Остин: В защиту языковой демократии (или: почему браузер нуждается в виртуальной машине)» . Chadaustin.me . Получено 25 апреля 2012 года .
- ^ Кармак, Джон (3 августа 2012 г.). "Quakecon 2012" . youtube.com . Получено 26 августа 2012 года .
- ^ Метц, Кейд (24 июня 2010 г.). «Mozilla: наш браузер не будет запускать натуральный код» . Реестр . Получено 25 апреля 2012 года .
- ^ «Бета -версия PHP 7.2 в стандартной среде Google App Engine | Hacker News» .
- ^ "Google/Gvisor" . GitHub . 15 октября 2021 года.
- ^ Аврам, Абель (31 мая 2017 г.). «Google должен удалить поддержку PNACL» . Infoq . Получено 1 августа 2020 года .
В качестве замены Google теперь продвигает веб -ассемблерию.
Внешние ссылки
[ редактировать ]- Официальный сайт
- «Проблемы - NativeClient» . bugs.chromium.org . Получено 2 июля 2022 года .
- Google I/O 2013 - Введение в портативный нативный клиент (PNACL) на YouTube
- Google I/O Native Code для вычисления интенсивных веб -приложений на YouTube - Технический разговор в Google I/O 2009
- Список проектов OSS, переносимых на родного клиента
- Натуральный клиентский исходный код в GIT
Примеры
[ редактировать ]- Склад@домой
- Примеры PNACL (работает в Chrome 31+, PNACL, т.е. не требуется установка)
- Галерея SDK нативного клиента
- Torapp.info , векторный редактор, особенно мощный для печати безопасности (не Pnacl)
- NaClbox , порт Dosbox для нативного клиента (PNACL)
- Sodasynth , синтезатор для нативного клиента (не PNACL)
- Криминальное аббатство , порт версии Vigasoco SDL (ремейк Аббатства преступности ) для родного клиента (PNACL)
- Беннугд , порт Bennugd VideoGames Примеры для нативного клиента (PNACL)