Jump to content

Собственный клиент Google

(Перенаправлено с PPAPI )

Собственный клиент Google
Разработчик(и) Гугл , другие
Первоначальный выпуск 16 сентября 2011 г .; 12 лет назад ( 16 сентября 2011 ) [1]
Стабильная версия
SDK: Pepper 45/10 июля 2015 г .; 9 лет назад ( 10.07.2015 )

Клиенты: такие же, как Google Chrome.

Репозиторий
Написано в С , С++
Операционная система Windows , Linux , macOS , ChromeOS
Платформа x86 , ARM , MIPS
Преемник Веб-сборка
Тип Песочница в веб-браузерах для нативного кода
Лицензия Новый БСД
Веб-сайт разработчик .хром /документы /родной-клиент / Отредактируйте это в Викиданных

Google Native Client ( NaCl ) — это устаревшая технология изолированной программной среды, позволяющая запускать в изолированной программной среде либо подмножество собственного кода Intel x86 , ARM или MIPS , либо переносимый исполняемый файл. Он позволяет безопасно запускать собственный код из веб-браузера пользователя независимо от операционной системы , позволяя веб-приложениям работать со скоростью, близкой к исходной, что соответствует планам Google в отношении ChromeOS . Его также можно использовать для защиты плагинов браузера и частей других приложений или полных приложений. [2] например, ZeroVM . [3]

Чтобы продемонстрировать готовность технологии, 9 декабря 2011 года Google объявил о доступности нескольких новых версий игр Chrome, известных своей богатой и ресурсоемкой только для графикой , включая Bastion (больше не поддерживается в Интернет-магазине Chrome ). NaCl запускает 3D -графику с аппаратным ускорением (через OpenGL ES 2.0), изолированное локальное хранилище файлов, динамическую загрузку , полноэкранный режим и захват мыши . Также планировалось сделать NaCl доступным для портативных устройств. [4] [5]

Portable Native Client (PNaCl) — это версия, независимая от архитектуры. Приложения PNaCl компилируются заранее . В большинстве случаев использования PNaCl рекомендуется вместо NaCl. [6] Общая концепция NaCl (запуск собственного кода в веб-браузере) ранее была реализована в ActiveX , который, пока еще используется, имеет полный доступ к системе (диск, память, пользовательский интерфейс, реестр и т. д.). Native Client позволяет избежать этой проблемы за счет использования песочницы.

Альтернативой Mozilla был asm.js , который также позволяет компилировать приложения, написанные на C или C++ , для запуска в браузере, а также поддерживает упреждающую компиляцию, но является подмножеством JavaScript и, следовательно, обратно совместим с браузерами, которые не поддерживайте его напрямую.

12 октября 2016 года в комментарии к системе отслеживания проблем Chromium указывалось, что команды Google Pepper и Native Client были сокращены. [7] 30 мая 2017 года Google объявил об отказе от PNaCl в пользу WebAssembly . [8] Хотя изначально Google планировал удалить PNaCl в первом квартале 2018 года, [8] и позднее во втором квартале 2019 г. [9] он был удален в июне 2022 года (вместе с приложениями Chrome ). [10] [11]

Native Client — проект с открытым исходным кодом, разработанный Google . [12] Такие игры, как Quake , [13] XaoS , Битва за Веснот , [14] Рок , [15] Лара Крофт и Хранитель Света , [16] Из пыли , [17] и MAME , а также система обработки звука Csound были портированы на Native Client. Native Client доступен в веб-браузере Google Chrome с версии 14 и включен по умолчанию с версии 31, когда был выпущен Portable Native Client (PNaCl, произносится: вершина). [18] [19] [20]

Реализация ARM была выпущена в марте 2010 года. [21] x86-64 , IA-32 и MIPS Также поддерживались .

Для переносимого запуска приложения под PNaCl его необходимо скомпилировать в независимое от архитектуры и стабильное подмножество LLVM промежуточного представления байт-кода . [22] Исполняемые файлы называются исполняемыми файлами PNaCl (пексами). PNaCl Toolchain создает файлы .pexe; Файлы .nexe NaCl Toolchain. Магическое число файлов .nexe — 0x7F 'E' 'L' 'F', что соответствует ELF . В Chrome они преобразуются в исполняемые файлы, зависящие от архитектуры, чтобы их можно было запускать.

NaCl использует обнаружение и изоляцию программных ошибок для изолированной программной среды на x86-64 и ARM. [23] Реализация Native Client для x86-32 отличается новым методом песочницы, в котором используется редко используемая функция сегментации архитектуры x86 . [24] Native Client настраивает сегменты x86, чтобы ограничить диапазон памяти, к которому может получить доступ изолированный код. Он использует средство проверки кода, чтобы предотвратить использование небезопасных инструкций, например тех, которые выполняют системные вызовы. Чтобы предотвратить переход кода к небезопасной инструкции, скрытой в середине безопасной инструкции, Native Client требует, чтобы все косвенные переходы были переходами к началу блоков, выровненных по 32 байта, и инструкциям не разрешалось располагаться между этими блоками. [24] Из-за этих ограничений код C и C++ необходимо перекомпилировать для работы под управлением Native Client, который предоставляет настроенные версии набора инструментов GNU , в частности GNU Compiler Collection (GCC), GNU Binutils и LLVM .

Native Client лицензируется по лицензии BSD .

Native Client использует Newlib в качестве библиотеки C порт библиотеки GNU C (GNU libc). , но также доступен [25]

NaCl означает хлорид натрия , поваренную соль ; в качестве каламбура название перца использовалось и . Pepper API — это кроссплатформенный API с открытым исходным кодом для создания модулей Native Client. [26] API плагина Pepper или PPAPI [27] [28] Netscape — это кросс-платформенный API для плагинов веб-браузера, защищенных Native Client, сначала основанный на NPAPI , а затем переписанный с нуля. Он использовался в Chromium и Google Chrome для включения PPAPI-версии Adobe Flash. [29] и встроенный просмотрщик PDF . [30]

12 августа 2009 года на странице Google Code был представлен новый проект Pepper и связанный с ним API плагина Pepper (PPAPI). [31] «набор модификаций NPAPI, чтобы сделать плагины более портативными и безопасными». [32] Это расширение разработано специально для упрощения реализации внепроцессного выполнения плагинов. Кроме того, цели проекта — предоставить основу для создания полностью кроссплатформенных плагинов. Рассматриваемые темы включают:

  • Единая семантика для NPAPI во всех браузерах.
  • Выполнение в отдельном процессе от рендерера-браузера.
  • Стандартизируйте рендеринг с помощью процесса композитинга браузера.
  • Определение стандартизированных событий и функций растрирования 2D.
  • Первоначальная попытка предоставить доступ к 3D-графике.
  • Реестр плагинов.

Pepper API также поддерживает геймпады (версия 19) и WebSockets (версия 18). [33]

По состоянию на 13 мая 2010 г. Браузер Google с открытым исходным кодом Chromium был единственным веб-браузером, который использовал новую модель подключаемого модуля браузера. [34] По состоянию на 2020 год Pepper поддерживается браузерами на основе механизмов компоновки Chrome, Chromium и Blink, такими как Opera и Microsoft Edge.

В августе 2020 года Google объявил, что поддержка PPAPI будет удалена из Google Chrome и Chromium в июне 2022 года. [35]

PPAPI в Firefox

[ редактировать ]

В 2014 году разработчики Firefox заявили, что они не будут поддерживать Pepper, поскольку не было полной спецификации API, кроме его реализации в Chrome, который сам был разработан для использования только с механизмом компоновки Blink и имел частные API, специфичные для плагина Flash Player, который не были документально подтверждены. [36] В октябре 2016 года Mozilla объявила, что пересмотрела и изучает возможность включения Pepper API и PDFium в будущие выпуски Firefox. [37] однако никаких подобных шагов предпринято не было. В июле 2017 года Adobe прекратила поддержку Flash и объявила о прекращении его поддержки в конце 2020 года. [38] К январю 2021 года Adobe Flash Player, Google Chrome, Firefox, Safari и Windows [39] получены обновления, отключающие или полностью удаляющие Flash.

Приложения

[ редактировать ]

Один сайт [40] использовал NaCL на сервере, чтобы позволить пользователям экспериментировать с языком программирования Go из своих браузеров. [41]

Некоторые группы разработчиков браузеров поддерживали технологию Native Client, а другие — нет.

Сторонники

[ редактировать ]

Чад Остин (из IMVU ) высоко оценил то, как Native Client может безопасно выводить высокопроизводительные приложения в Интернет (со штрафом около 5% по сравнению с собственным кодом), одновременно ускоряя эволюцию клиентских приложений, предоставляя возможность выбора. используемого языка программирования (кроме JavaScript ). [42]

id Software из Джон Д. Кармак похвалил Native Client на QuakeCon 2012, сказав: «Если вам нужно что-то сделать внутри браузера, Native Client гораздо интереснее, так как он начинался как чертовски умный хак x86. Интересно, что они могут помещать все это в песочницу в пользовательском режиме. Теперь это динамическая перекомпиляция, но вы программируете на C или C++ и компилируете что-то, что не будет вашим уровнем оптимизации -O4 для полностью нативного кода, но чертовски близко к этому. в собственный код. Вы можете выполнять все свои злые погони за указателями и делать все, что захотите, будучи опытным разработчиком игр». [43]

Недоброжелатели

[ редактировать ]

Другие ИТ-специалисты более критично относились к этой технологии «песочницы», поскольку у нее были существенные проблемы с совместимостью.

Джей Вице-президент Mozilla по продуктам Салливан заявил, что Mozilla не планирует запускать собственный код внутри браузера, поскольку «эти нативные приложения представляют собой просто маленькие черные ящики на веб-странице. [...] Мы действительно верим в HTML, и именно на этом мы хотим сосредоточиться». [44]

из Mozilla Кристофер Близзард раскритиковал NaCl, заявив, что собственный код не может развиваться так же, как веб, управляемый исходным кодом. Он также сравнил NaCl с технологией Microsoft ActiveX , пораженной DLL Hell . [2]

Хокон Виум Ли , технический директор Opera, считал, что «NaCl, похоже, «тоскует по старым плохим временам, до появления Интернета»», и что «Native Client — это создание новой платформы или перенос старой платформы в Интернет [. ..] это создаст сложности и проблемы с безопасностью, а также отвлечет внимание от веб-платформы». [2]

Второе поколение

[ редактировать ]

Второе поколение песочницы, разработанное в Google, — gVisor . [45] [46] Он призван заменить NaCl в Google Cloud , точнее в Google App Engine . Google также продвигает WebAssembly . [47]

См. также

[ редактировать ]
  1. ^ «Нативный клиент Google доступен в Chrome» . Регистр . 16 сентября 2011 года . Проверено 12 марта 2016 г.
  2. ^ Jump up to: а б с Мец, Кейд (12 сентября 2011 г.). «Google Native Client: сеть будущего или прошлого?» . Регистр . Проверено 17 сентября 2011 г.
  3. ^ «Архитектура ZeroVM» . Архивировано из оригинала 8 февраля 2014 года . Проверено 16 марта 2014 г.
  4. ^ Розенблатт, Сет (9 декабря 2011 г.). «Native Client превращает Chrome в высококлассную игровую платформу» . CNET. Архивировано из оригинала 28 августа 2012 года . Проверено 9 декабря 2011 года .
  5. ^ «Блог Google Code: игры, приложения и среды выполнения теперь доступны в Native Client» . Googlecode.blogspot.com. 9 декабря 2011 года . Проверено 25 апреля 2012 г.
  6. ^ «NaCl и PNaCl» .
  7. ^ «Bugs.chromium.org» . 12 октября 2016 г. Проверено 12 октября 2016 г.
  8. ^ Jump up to: а б «Прощай, PNaCl, здравствуй, WebAssembly!» . Блог Хрома . Проверено 31 мая 2017 г.
  9. ^ «Руководство по миграции WebAssembly — Google Chrome» . разработчик.chrome.com . Проверено 20 декабря 2018 г.
  10. ^ «Изменения в графике поддержки приложений Chrome» . Блог Хрома . 10 августа 2020 г.
  11. ^ Ли, Абнер (10 августа 2020 г.). «Google откладывает прекращение поддержки приложений Chrome на всех платформах» . 9to5Google . Проверено 2 октября 2021 г.
  12. ^ «Нативный клиент Google в Google Code» . Проверено 25 апреля 2012 г.
  13. ^ Дэвемайкл (3 октября 2020 г.). «GitHub — davemichael/NaCl-Quake: Quake для собственного клиента (на основе порта Quake SDL)» . Гитхаб .
  14. ^ «Битва за Веснот» .
  15. ^ «Индекс /» .
  16. ^ «Интернет-магазин Chrome — Лара Крофт и Хранитель Света» . Архивировано из оригинала 8 декабря 2013 года . Проверено 26 ноября 2013 г.
  17. ^ «Из праха» . Архивировано из оригинала 12 марта 2016 года . Проверено 24 февраля 2016 г. .
  18. ^ Чен, Брэд (8 декабря 2008 г.). «Нативный клиент: технология запуска собственного кода в Интернете» . Google-code-updates.blogspot.com . Проверено 25 апреля 2012 г.
  19. ^ «Блог Chromium: Native Client добавляет изолированный нативный код в приложения Интернет-магазина Chrome» . Блог.chromium.org. 18 августа 2011 года . Проверено 25 апреля 2012 г.
  20. ^ «Блог Google Code: Портативный собственный клиент: «вершина» скорости, безопасности и переносимости» . blog.chromium.org. 12 ноября 2013 года . Проверено 16 марта 2014 г.
  21. ^ «Нативный клиент Google выходит за рамки ARM» . Х. 18 марта 2010 г. Проверено 19 мая 2010 г.
  22. ^ «PNaCl: переносимые исполняемые файлы собственного клиента» (PDF) . Архивировано из оригинала (PDF) 2 мая 2012 года . Проверено 25 апреля 2012 г.
  23. ^ Сер, Дэвид; Мут, Роберт; Биффл, Клифф Л.; Хименко Виктор; Пасько, Егор; Да, Беннет; Шимпф, Карл; Чен, Брэд (2010). «Адаптация изоляции ошибок программного обеспечения к современным архитектурам ЦП» . 19-й симпозиум USENIX по безопасности . Проверено 31 июля 2011 г.
  24. ^ Jump up to: а б Да, Беннет; Сер, Дэвид; Дардик, Грег; Чен, Брэд; Мут, Роберт; Орманди, Тэвис; Окасака, Сики; Нарула, Неха; Фуллагар, Николас (2009). «Родной клиент: песочница для переносимого, ненадежного собственного кода x86» . Симпозиум IEEE по безопасности и конфиденциальности (Окленд, 2009 г.) . Проверено 31 июля 2011 г.
  25. ^ «Родной клиент: Строительство» . разработчик.chrome.com . Проверено 16 марта 2014 г.
  26. ^ «Технический обзор» . [ постоянная мертвая ссылка ]
  27. ^ «Проект API плагина Pepper» . Архивировано из оригинала 9 сентября 2016 года . Проверено 25 апреля 2012 г.
  28. ^ «Источник Chrome: индекс /trunk/src/ppapi» . Сайт chromium.org . Проверено 25 апреля 2012 г.
  29. ^ «Путь к более безопасному, стабильному и яркому Flash» . 8 августа 2012 года . Проверено 10 августа 2013 г.
  30. ^ Мец, Кейд (18 июня 2010 г.). «Google сильнее обнимает Adobe благодаря слиянию Chrome-PDF» . Регистр . Проверено 25 апреля 2012 г.
  31. ^ «Начало работы: предыстория и основы – проекты Chromium» . Хром.орг . Проверено 25 апреля 2012 г.
  32. ^ «Пеппер.вики» . 24 февраля 2012 года . Проверено 25 апреля 2012 г.
  33. ^ «Примечания к выпуску» .
  34. ^ Мец, Кейд (13 мая 2010 г.). «Google нагревает нативный код Chrome OS» . Thereregister.co.uk . Проверено 25 апреля 2012 г.
  35. ^ Энтони Лафорж (10 августа 2020 г.). «Изменения в графике поддержки приложений Chrome» . Блог Хрома .
  36. ^ Збарский Борис. «Ошибка 729481 — Поддержка API плагина Pepper» . Проверено 15 апреля 2016 г.
  37. ^ Мец, Кейд (3 октября 2016 г.). «Проект Миномет» . Мозилла . Проверено 30 октября 2016 г.
  38. ^ «Flash и будущее интерактивного контента» . Adobe Inc. , 25 июля 2017 г. Архивировано из оригинала 2 декабря 2017 г. Проверено 31 июля 2023 г.
  39. ^ Солтер, Джим (4 мая 2021 г.). «Еще раз до свидания, Flash — Microsoft делает удаление из Windows 10 обязательным» . Арс Техника . Проверено 1 августа 2023 г.
  40. ^ «Игровая площадка Го» .
  41. ^ «Внутри игровой площадки для го — блог о го» . blog.golang.org . Проверено 27 августа 2016 г.
  42. ^ Остин, Чад (8 января 2011 г.). «Чад Остин: В защиту языковой демократии (или: Зачем браузеру виртуальная машина)» . Чадаустин.me . Проверено 25 апреля 2012 г.
  43. ^ Кармак, Джон (3 августа 2012 г.). «КвейкКон 2012» . youtube.com . Проверено 26 августа 2012 г.
  44. ^ Мец, Кейд (24 июня 2010 г.). «Mozilla: Наш браузер не запускает собственный код» . Регистр . Проверено 25 апреля 2012 г.
  45. ^ «Бета-версия PHP 7.2 в стандартной среде Google App Engine | Hacker News» .
  46. ^ «Гугл/Гвизор» . Гитхаб . 15 октября 2021 г.
  47. ^ Аврам, Авель (31 мая 2017 г.). «Google прекратит поддержку PNaCl» . ИнфоQ . Проверено 1 августа 2020 г. В качестве замены Google теперь продвигает WebAssembly.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 584f89f5243dc9c012fca6d3d4f557da__1718269860
URL1:https://arc.ask3.ru/arc/aa/58/da/584f89f5243dc9c012fca6d3d4f557da.html
Заголовок, (Title) документа по адресу, URL1:
Google Native Client - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)