1. Главная страница » Компьютеры » Native client что это за плагин

Native client что это за плагин

Автор: | 16.12.2019
Native Client
Разработчик Google
Написана на Си и C++
Операционная система кроссплатформенность
Первый выпуск 16 сентября2011[1]
Аппаратная платформа x86 , x86-64 , ARM[2] и MIPS
Последняя версия
  • 49 [3]
Состояние Разрабатывается
Лицензия модифицированная лицензия BSD[d]
Сайт developers.google.com/na…

Native Client (NaCl) — технология песочницы для запуска кода на платформах x86, x86-64, ARM и MIPS, позволяющая безопасно запускать машинный код непосредственно в браузере независимо от операционной системы со скоростью, приближённой к запуску машинного кода. Эта технология также может быть использована для создания защищённых плагинов для браузера, частей какого-либо приложения либо самих приложений [4] , например ZeroVM [en] .

Чтобы показать готовность технологии, 9 декабря 2011 года Google представила игру [5] с богатой графикой (на данный момент игра уже недоступна). NaCl использует аппаратное ускорение 3D-графики через OpenGL ES 2.0, запускаясь в песочнице local storage с возможностью полноэкранного режима и взаимодействием с мышью. [6] [7]

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

Существует альтернатива NaCl под названием asm.js, которая так же позволяет компилировать приложения, написанные на Си или C++, для запуска непосредственно в браузере (со скоростью, приближенной к машинному коду), поддерживает AOT-компиляцию и притом является подмножеством языка JavaScript, т. е. обратно совестима с браузерами, не имеющими её встроенной поддержки. Ещё одной альтернативой NaCl (хотя и изначально основанной на PNaCl) является WebAssembly.

12 октября 2016 в баг-трекере проекта Chromium появился комментарий [8] , упоминающий о роспуске команд, работающих над Google’s Pepper и Native Client.

30 мая 2017 Google объявила об отказе от PNaCl в пользу WebAssembly. [9]

Содержание

Описание [ править | править код ]

Native Client является проектом с открытым исходным кодом. К настоящему времени Quake [10] , XaoS [en] , Battle for Wesnoth, Doom, Lara Croft and the Guardian of Light, From Dust и MAME, а также система программного синтезирования звука Csound были портированы на Native Client. Технология доступна в браузере Google Chrome начиная с версии 14 [11] и активирована по умолчанию начиная с версии 31, в которой был официально представлен Portable Native Client (PNaCl). [12]

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

Для запуска при помощи технологии PNaCl приложение должно быть скомпилировано в архитектурно-независимый байт-код формата LLVM. [14] Созданные таким образом исполняемые файлы называются PNaCl executable (pexe). Средства сборки PNaCl производят .pexe файлы; NaCl — .nexe. .nexe файлы имеют сигнатуру 0x7F ‘E’ ‘L’ ‘F’ (т.е. являются ELF файлами). Chrome для запуска транслирует pexe в архитектурно-зависимые исполняемые файлы.

NaCl использует программное обнаружение ошибок и защиту песочницы в платформах x86-64 и ARM. [15] Реализация в x86-32 отличается новым способом организации песочницы. [16] По технологии песочницы Native Client устанавливает свои сегменты памяти в архитектуре x86. Также используется верификатор кода для предотвращения вызова небезопасных системных вызовов. Для предотвращения перехода в незащищённую часть вызова Native Client требует, чтобы все косвенные переходы начинались с 32-байт-выровненных блоков, кроме того, инструкциям не разрешается покидать данные блоки. [16] Из-за этих ограничений код, написанный на Си или C++, должен быть перекомпилирован особым образом для запуска с применением технологии Native Client, что может быть сделано с помощью специализированных версий GNU toolchain, в частности, GNU Compiler Collection, GNU Binutils и LLVM.

Native Client использует Newlib в качестве стандартной библиотеки языка Си, однако порт GNU C Library также доступен. [17]

Pepper [ править | править код ]

Pepper API — кроссплатформенное свободное API для создания модулей для Native Client. Плагин Pepper API (англ. Pepper Plugin API , сокр. PPAPI) — кроссплатформенное API для защищённых технологией Native Client плагинов, основанное на NPAPI, но полностью переписанное. На данный момент используется в Chromium-подобных браузерах для запуска PPAPI-версии Adobe Flash [18] и встроенной программы просмотра PDF-файлов [19] .

PPAPI [ править | править код ]

12 августа 2009 на странице Google Code был представлен проект Pepper, связанный с разработкой плагина Pepper API, [20] на которой было написано, что PPAPI — набор модификаций NPAPI для создания подобных плагинов более переносными и безопасными [21] . Плагин был создан для лёгкой реализации запуска вне процесса. В дальнейшем целью проекта стало обеспечивание основы для создания полностью кроссплатформенных плагинов. Планировалось реализовать данные технологии:

  • Универсальная семантика NPAPI для всех браузеров.
  • Запуск в отдельном процессе от самого браузера.
  • Стандартизация процесса рендеринга, используя браузер.
  • Определение стандартных событий и растеризация 2D функций.
  • Основа для 3D графики.
  • Плагин регистраций.

В дальнейшем использование PPAPI помогло реализовать поддержку геймпадов и WebSocket. [ источник не указан 1201 день ]

Начиная с 13 мая 2010 года Chromium стал единственным браузером, поддерживающим новую модель плагинов. [22] Mozilla Firefox не поддерживает Pepper, так как нет полной спецификации API за пределами её реализации в Chrome, которая была создана только для браузерного движка Blink. По состоянию на 2016 год Pepper поддерживается в Chrome, Chromium и браузерах на Blink, например Opera.

Читайте также:  Icloud сервис для хранения данных

Проекты на Native Client [ править | править код ]

Существует сайт The Go Playground, использующий данную технологию для того, чтобы позволить экспериментировать с Go прямо в браузере.

  • Folding@home Проект Folding@home прямо в браузере используя технологию nacl

Реакция общества [ править | править код ]

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

Джон Кармак, совладелец компании Id Software, упомянул Native Client на QuakeCon 2012:

Вице-президент Mozilla Джей Салливан (англ. Jay Sullivan ) сообщил, что у Mozilla нет планов запускать машинный код в браузере, так как

Джей Салливан (англ. Jay Sullivan ) [25]

Сотрудник Mozilla Кристофер Близзард [en] раскритиковал технологию NaCl, утверждая, что машинный код ни в коей мере не должен быть использован в вебе. Также он сравнил NaCl с технологией Microsoft ActiveX, которая достигла ситуации DLL hell. [4]

Хокон Виум Ли (норв. Håkon Wium Lie ) , технический директор Opera, верит, что

Хокон Виум Ли (норв. Håkon Wium Lie ) [4]

Брендан Эйх, технический директор Mozilla, сказал, что ECMAScript 6 вполне достаточно, чтобы удовлетворить все потребности в создании приложения для веб. [26]

Как видите, тут нет ничего сложного — при загрузке страницы сначала с помощью JavaScript производится проверка наличия модуля, и в случае успеха он загружается в контейнер с /> Рисунок 4. Файлы примера Как нетрудно догадаться, сценарий run.py запускает приложение, но нам это совсем не нужно. Вместо этого откроем в браузере html-страницу earth.html. и… получим то самое сообщение (см. рис. 5). Как же так? Ведь плагин мы установили? Рисунок 5. Модуль не загружен Дело в том, что, несмотря на наличие Native Сlient-плагина, модуль не грузится по той простой причине, что он не собран, не откомпилирован, а представлен только исходным кодом (файл earth.сс), на языке С++. Впрочем, в той же папке мы видим файл Makefile, и это позволяет надеяться, что ситуацию можно исправить. Сначала соберём и запустим Standalone-приложение: make debug run После этого запустится самостоятельное приложение, представляющее собой вращающееся изображение земного шара, а в папки примера появится исполняемый файл — earth_debug. Теперь соберём Native client-модуль: make release nacl Если все прошло нормально, появятся ещё два файла — earth.nexe и earth_release.nexe. Можно опять открыть earth.html в браузере, и теперь картинка должна быть совсем другой (см. рис. 6). Рисунок 6. Земля. Рассмотрим пример посложнее. В папке googleclient/native_client/tests/xaos находятся исходники и сценарий сборки известного фрактального конструктора Xaos. Правда, не исходники самого Xaos, их сборочный скрипт скачает отдельно. Собирать просто: ./xaos_tool.sh all И, раскрыв браузером xaos.html, наслаждаемся результатом (см. рис. 7). Рисунок 7. Редактируем фракталы На самом деле в этом и предыдущем примере мы выступаем в роли разработчика. Конечному пользователю приложения достаются уже откомпилированные модули, и всё, что ему нужно, — оснастить браузер Native client плагином. Ну а мы продолжим развлекаться. Теперь приступим к обещанной quake. Тут готового сценария нет, поэтому будем действовать вручную. Заходим в папку googleclient/native_client/tests/quake/ и скачиваем исходные коды игры: wget http://www.libsdl.org/projects/quake/src/sdlquake-1.0.9.tar.gz … wget http://www.libsdl.org/projects/quake/data/quakesw-1.0.6.tar.gz … Теперь их разархивируем: tar -x —strip-components=1 -f sdlquake-1.0.9.tar.gz … tar -x -f quakesw-1.0.6.tar.gz … Должно образоваться множество файлов — исходников и одна директория — /> Рисунок 8. Наши победят! И пока всё… Да, на этом, к сожалению, пока всё. К сожалению, технология пока действительно сырая, и автору не удалось последовательно написать с нуля и запустить Google Native Client-приложение ни на одной платформе. Более того, на данный момент времени NaCL отказывается собираться с Python 2.6.x, браузер с установленным NaCL-плагином неоднократно замечен в неадекватном поведении, некоторые тесты не запускаются под платформой Windows. С другой стороны, API NaCL открыт и документирован (/googleclient/native_client/scons-out/doc/html), поэтому для настоящего энтузиаста нет препятствий попробовать свои силы в написании приложений «невзирая на». Трудно сейчас сказать, насколько перспективным окажется это занятие, но интересным — наверняка. 1. Домашняя страница проекта — http://code.google.com/p/nativeclient. 2. Описания архитектуры GoogleNative Client (PDF) — http://nativeclient.googlecode.com/svn/trunk/nacl/googleclient/native_client/documentation/nacl_paper.pdf

Пользователи текущей стабильной версии Google Chrome могут заметить, что в списке установленных плагинов (на chrome:plugins) появился новый — Widevine Content Decryption Module. В Google Chrome OS он появился еще в 26 версии, а до браузера дошел только сейчас. Что это за зверь?

Плагин Widevine Content Decryption Module (Widevine CDM) добавлен в браузер для поддержки Encrypted Media Extensions (EME) API, который в свою очередь появился в спецификации HTML5 для работы с DRM (технические средства защиты авторских прав).

А теперь простыми словами.

Welcome to Native Client

Владельцы аудио- и видео-контента хотят транслировать его в сети средствами HTML5, но не хотят давать право его копировать. Для этого организация W3C добавила EME в спецификацию HTML5. А на стороне браузера поддержкой этого дела должен заниматься специальный плагин (в случае с Google Chrome, это Widevine CDM).

François Beaufort (ç — это французская буква, а не битый пиксель у вас на мониторе), евангелист проекта Chromium и сотрудник Google, объяснил поддержку EME следующим образом. Крупные компании, продвигающие идею защиты онлайн-контента от копирования, не отстанут (для поддержки DRM уже сейчас используют плагины Flash и Silverlight). А EME это хороший способ внедрить единый стандарт, который не потребует от пользователя самостоятельно устанавливать различные плагины.

Читайте также:  Nikon z 7 тест

Другого мнения придерживается Brendan Eich, создатель языка Javascript и технический директор Mozilla.

По его словам, решение поддержать EME подрывает открытость Web и ущемляет права пользователей. А еще он считает, что EME открывает дорогу для появления бесконечного числа нестандартизированных CDM-плагинов, которые по сути являются аналогами ActiveX и создаются под конкретные ОС.

Кстати, Widevine CDM не является частью проекта Chromium, а представляет из себя такой же закрытый плагин Google, как и Flash (PPAPI) и PDF Viewer. Т.е. встраивается исключительно в Chrome. В мобильную версию Google Chrome плагин встроить планируют в 32 версии.

Строго говоря, Google не позиционировало свою технологию Native Client как платформу для Rich Internet Applications, но по формальным признакам она вполне вписывается в этот класс ПО.

Ее суть — запуск в браузере модулей, написанных на нативном коде (увы, адекватного перевода на родной язык термина «native code» в голову не приходит) для архитектуры x86.

В отличие от JavaFX или Silverlight, в этой технологии нет компиляции в байт-код и какой-либо виртуальной машины. Была создана среда выполнения, позволяющая запускать обычные, «родные» для этой платформы программы в безопасном для данной системы окружении.

Отключаем плагины и ускоряем Google Chrome

Разработчики идеально выдержали модель «песочницы».

Во избежание взаимодействия Native Client непосредственно операционной системой весь код исполняется в отдельном, изолированном контейнере. Это позволяет модулю использовать системные ресурсы, но в то же время ограждает ОС от возможного случайного или злонамеренного повреждения.

В целом Native Client (NaCL) состоит из контейнера, играющего роль песочницы, и среды исполнения (runtime) нативного кода. Третьим элементом выступает плагин для веб-браузера. Для коммуникации между браузером и NaCL-модулем предоставлены два варианта: simple RPC-интерфейс (SRPC) и давно известный Netscape Plugin Application Programming Interface (NPAPI).

Писать модули для Google Native Client предполагается на любом компилируемом на данной системе языке программирования.

Native Client распространяется под лицензией BSD, имеет реализации для различных браузеров и платформ.

Еще несколько лет назад Native Client многими рассматривался как веб-платформа будущего. Сейчас новости об этой технологии занимают довольно скромное место на фоне известий о новых API HTML5, но Google от него отказываться явно не собирается. Так, начиная с 14-й версии браузера Google Chrome, Natve Client включен в состав обозревателя, и его пользователям больше не требуется устанавливать никаких дополнительных плагинов.

Вам также могут быть интересны следующие статьи:

Разработчики из проекта Chromium сообщают, что уже в 31 версии их браузера поддерживается Portable Native Client (PNaCl, произносится «pinnacle»). Что это за зверь такой, и в чем его отличия от простого NaCl вы можете прочитать дальше…

Для начала напомним, что такое обычный NaCl.

От браузера к ОС: что такое Native Client и чем он может быть полезен?

Это технология, которая позволяет браузеру исполнять нативный код, а разработчикам — писать свои веб-приложения, например, на C или C++. Применение NaCl позволяет добиться высокой производительности и низкоуровневого контроля за работой приложения. С применением NaCl созданы такие игры как Mini Ninjas и Bastion.

Можете, кстати, обратить внимание, что плагин NaCl встроен в браузер и отображается на странице chrome:plugins.

К сожалению, NaCl не дает возможность подготовить приложение, которое будет работать на любой платформе. В результате разработчики должны компилировать исполняемые nexe-модули под каждую архитектуру. Собрать по модулю на каждую платформу еще можно, но как их распространять? Особенно это актуально, если веб-приложения встроены в сайт, а не устанавливаются из того же Chrome Web Store.

PNaCl решает эту проблему и позволяет создавать действительно портативные и независимые от архитектур приложения. Как это происходит? Процесс компиляции разбивается на два этапа:

  • компиляция исходного кода в байткод, который не зависит от архитектуры;
  • перевод байткода в нативный код под каждую архитектуру.

В результате первого этапа разработчик получает специальный pexe-модуль, который можно использовать в приложениях также, как и любые другие HTML, JS и CSS вставки. Этот же компонент можно распространять через сайт.

А вот второй этап уже происходит в браузере. Chrome сам преобразовывает байткод в нативный код, который будет актуален для конкретной платформы и ОС.

В результате разработчик создает одно приложение, которое будет работать на x86, ARM и MIPS. А чтобы приложения, созданные на PNaCl, работали и в других браузерах, а не только в Chrome, можно использовать pepper.js.

Если вы разработчик, то добро пожаловать в документацию.

А если вы просто любопытный пользователь, то вот вам PNaCl-демки.

Модули расширяют функциональные границы обозревателей, в том числе и Yandex. По умолчанию многие из них активированы, однако бывают случаи, когда плагин отключается вследствие какого-либо сбоя, что сказывается на его работе. Рассмотрим, как включить плагин в Яндекс Браузере.

Кратко о плагинах

По-другому плагины ещё называют модулями. Это небольшие программы, которые, так же как и дополнения, встраиваются в браузер для расширения его функциональных возможностей. Отличие между ними в том, что плагины не имеют своего интерфейса.

Что именно они дают?

  • Возможность смотреть видео и слушать музыку.
  • Совершенствование работы веб-служб.
  • Просмотр файлов в формате PDF и многое другое.

Где найти модули?

Прежде чем производить какие-либо действия с плагинами, нужно узнать, где они находятся. Открыть их можно двумя способами.

Способ № 1

1.Перейти в Настройки через меню обозревателя (иконка с тремя горизонтальными линиями в правом верхнем углу). Дойти до конца страницы и открыть раздел «Показать дополнительные настройки», который будет подсвечен голубым цветом.

2. В блоке «Личные данные» щёлкнуть по первой кнопке «Настройки содержимого».

3. Перейти в раздел «Плагины», а затем по ссылке «Управление отдельными плагинами».

Читайте также:  Lg webos tv lf640v

Откроется новая вкладка, в которой вы увидите установленные плагины.

4. Чтобы узнать больше информации о модуле, кликните по кнопке «Подробнее».

Способ № 2

Чтобы быстро перейти на страницу, на которой можно посмотреть плагины, в строке обозревателя вводим адрес: browser://plugins. Таким вот образом можно сразу попасть в окно со списком плагинов в Яндекс Браузере.

Скачать и установить

Когда вам потребуется определённый плагин для просмотра содержимого страницы или же обновление устаревшего модуля, обозреватель вас об этом сам оповестит, предложив тут же его скачать и установить.

Одним из главных плагинов считается Flash Player. Скачивать его нужно на официальном ресурсе, как и все другие программы. Система сама вас переведёт на безопасный сайт. Нужно только нажать на кнопку «Установить».

Если системе требуется обновить модуль, в верхней части экрана вы увидите оповещение:

Нажмите на «Обновить модуль». Лучше сделать это как можно раньше, чтобы браузер смог дальше функционировать в прежнем режиме.

Включение и отключение

Что делать, если вдруг возникла острая необходимость включить определённые плагины в Яндексе? Можно ли, наоборот, отключить плагины, которые тормозят работу обозревателя? Исполнить всё это легко.

  1. Перейти в меню плагинов любым из способов, указанных выше.
  2. Кликнуть по «Включить», если плагин не работает, или «Отключить», если необходимо приостановить его работу.

Можно отключить модуль, но важно помнить, что останавливая его работу, пользователь лишает обозревателя возможности выполнять те или иные действия с медиа. Вполне вероятно, что у вас может перестать загружать видеозаписи на сайтах. Это касается плагинов, а не расширений. Первые можно назвать служебными дополнениями браузера, а вторые – пользовательскими, то есть опциональными или необязательными.

Как удалить?

Вопрос должен звучать по-другому: можно ли удалить модуль? Такой возможности у пользователя нет. Удаление модулей из системы обозревателей – дело разработчиков. Происходит это, как правило, в связи с тем, что плагины устаревают. Вместо них появляется более современные решения. Например, NPAPI. Этот плагин уже не поддерживается. Сейчас вместо него используют его усовершенствованную версию – PPAPI.

Плагины и блокировка рекламы

Реклама на сайтах мешает большинству пользователей. Какие есть дополнения для её блокировки?

Яндекс Браузер в прошлом году запустил новую тестовую функцию в версиях для Android. Каждый пользователь мобильного браузера найдёт в настройках строку "Скрыть мешающую рекламу".

Для блокировки рекламы используют также дополнительные меры – модули AdBlock, AdGuard и многие другие. Скачать их можно бесплатно на официальных ресурсах.

В Дополнениях Яндекс Браузера вы также найдёте расширение «Блокировка флеш-баннеров и видео». Настройка этих дополнений сводится к изменению списка фильтров, а также к его отключению и включению на определённых страницах.

Однако используйте какой-то один плагин, иначе программа будет зависать.

Обходим блокировку на сайтах с FriGate

Некоторые ресурсы могут быть недоступны пользователям по тем или иным причинам. В них мы углубляться не будем. Скажем лишь одно: блокировку можно легко обойти с уже встроенным в обновлённый Яндекс Браузер плагином по имени FriGate. Он использует прокси-сервер для доступа к запретным сайтам.

Открываем вкладку «Дополнения». Ищем расширение и ставим на положение «Вкл».

Ошибки в работе плагинов

Как мы уже подчеркивали, главным модулем в обозревателе является Flash Player. Без него не было бы проигрывания видео.

Каким бы надёжным не был Яндекс.Браузер, в его работе также возникают сбои. Одна из распространённых проблем – ошибка с флешем. Иногда при попытке запустить в браузере видео или игру, появляется серое окно с уведомлением, что не удалось загрузить плагин. Почему так происходит?

Проблема, скорее всего, связана с тем, что в компьютере уже есть другой Flash Player (устаревшая версия, которая была установлена для работы других обозревателей). Происходит конфликт одновременно двух работающих плееров. Что предпринять в такой ситуации?

Проверьте, стоит ли у вас актуальная версия
1.Зайти в Меню и в выпадающем списке нажать на пункт «Дополнительно».

2.Далее, выбрать «О браузере».

3.Если во вкладке будет кнопка «Обновить», то кликаем по ней. Это означает, что у вас стоит неактуальная версия браузера. Отсюда могут, естественно, возникать проблемы и с другими модулями. Загружается обновление быстро и тут же устанавливается.

4.Нажать на «Перезапустить».

Так как Яндекс Браузер сейчас обновляется автоматически, может стоять сообщение: «Вы используете последнюю версию Яндекс.Браузера». В таком случае дело не в обновлении. Удалите второй устаревший плеер.

Избавляемся от устаревшего плагина

Ели вы пользуетесь только Яндексом на своём ПК, вы вправе удалить плагин Adobe Flash Player, установленный ранее.

1.Запустить Панель управления через Пуск или иным образом.

2.Найти радел «Удаление программ».

3.Отыскать Adobe Flash Player и удалить его. Перезапустить браузер.

Чистим кэш и историю обозревателя

Часто плагины для Яндекс Браузера не запускаются должным образом на сайте из-за переполненного кэша. Произвести чистку вы можете посредством специальных программ, например, CCleaner, или же через инструменты самого браузера. Рассмотрим второй вариант.

1.Зайти в Настройки браузера.

2.Дойти до конца страницы и нажать на кнопку «Показать дополнительные настройки».

3.Кликнуть по второй кнопке «Очистить историю загрузки».

4.Поставить параметр «За всё время».

5.Оставить все отмеченные пункты как есть, и нажать на «Очистить историю».

Если проблема продолжает беспокоить время от времени, то можете воспользоваться следующей уловкой: отключить встроенный модуль и установить плагин Adobe Flash Player из официального ресурса.

Плагины – неотъемлемая часть браузеров. Крайне не рекомендуется самостоятельно проводить их отключение, если браузер работает стабильно. Следите также за тем, чтобы ваш браузер регулярно получал обновления.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

code