NPAPI

редактировать
Интерфейс прикладного программирования (API), позволяющий разрабатывать подключаемые модули браузера

Интерфейс прикладного программирования подключаемого модуля Netscape (NPAPI ) - это интерфейс прикладного программирования (API), который позволяет разрабатывать плагины для браузера. Впервые он был разработан для браузеров Netscape, начиная с 1995 года с Netscape Navigator 2.0, но впоследствии был принят другими браузерами. С появлением HTML5 все основные веб-браузеры удалили поддержку сторонних плагинов NPAPI по соображениям безопасности.

В архитектуре NPAPI плагин объявляет типы контента (например, «audio / mp3»), которые он может обрабатывать. Когда браузер обнаруживает тип контента, который не может обработать изначально, он загружает соответствующий плагин, выделяет пространство в контексте браузера для плагина для рендеринга, а затем передает ему данные. Плагин отвечает за рендеринг данных. Плагин запускается на странице внутри, в отличие от старых браузеров, которым приходилось запускать внешнее приложение для обработки неизвестных типов контента. NPAPI требует, чтобы каждый плагин реализовывал и предоставлял примерно 15 функций для инициализации, создания, удаления и позиционирования содержимого плагина. NPAPI также поддерживает сценарии, печать, полноэкранные плагины, плагины без окон и потоковую передачу контента.

NPAPI часто использовался для подключаемых модулей, требующих интенсивной низкоуровневой производительности, таких как видеоплееры, включая Adobe Flash Player и Microsoft Silverlight, а также платформы для веб-приложения, такие как Java Runtime Environment.

Содержание
  • 1 Поддержка сценариев
    • 1.1 LiveConnect
    • 1.2 XPConnect
      • 1.2.1 Подключение объекта
      • 1.2.2 Безопасность
    • 1.3 NPRuntime
  • 2 Поддержка / устаревание
  • 3 Подобные технологии
    • 3.1 ActiveX
    • 3.2 PPAPI
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки
Поддержка сценариев

Сценарии - это функция, позволяющая коду JavaScript на веб-странице взаимодействовать с плагином. Различные версии Netscape, а затем Mozilla поддерживали эту функцию с использованием различных технологий, включая LiveConnect, XPConnect и NPRuntime.

LiveConnect

LiveConnect - это функция веб-браузеров, которая позволяет программному обеспечению Java и JavaScript взаимодействовать внутри веб-страницы. Со стороны Java он позволяет апплету вызывать встроенные сценарии страницы или получать доступ к встроенной среде JavaScript, как и сценарии. И наоборот, со стороны JavaScript он позволяет сценарию вызывать методы апплета или получать доступ к библиотекам времени выполнения Java, так же как и апплеты.

LiveConnect использовался в Netscape 4 для реализации сценариев Плагины NPAPI.

Реализация LiveConnect, зависящая от Open Java Interface, была удалена из дерева исходного кода Mozilla в конце июня 2009 года в рамках работ по очистке Mozilla 2. Он больше не нужен с выпуском переработанной Java Runtime Environment от Sun Microsystems. Однако старая реализация была восстановлена ​​для Gecko 1.9.2, поскольку Apple еще не перенесла новую JRE на Mac OS X.

Функциональность Java – JavaScript, поддерживаемая переработанной средой выполнения Java, по-прежнему называется «LiveConnect». ", несмотря на отказ от подхода, ориентированного на Open Java Interface. В Netscape 4 NPAPI был расширен и теперь позволяет создавать сценарии надстройки. Это расширение называется LiveConnect. Плагин может реализовать класс Java и предоставить его экземпляр. Класс может быть вызван из JavaScript и из Java-апплетов, запущенных на странице.

Недостатком LiveConnect является то, что он сильно привязан к версии Java, встроенной в браузер Netscape. Это не позволяло браузеру использовать другие среды выполнения Java и увеличивало размер загружаемого файла браузера, поскольку для создания сценариев плагинов требовалась Java. Кроме того, LiveConnect сложно программировать: разработчик должен определить класс Java для подключаемого модуля, запустить его через специализированный Java header компилятор и реализовать собственные методы. Обработка строк, исключений и других объектов Java из C ++ неочевидна. Кроме того, LiveConnect использует более ранний и устаревший интерфейс прикладного программирования (API) для вызова собственных вызовов C ++ из Java, называемых JRI. Технология JRI давно была вытеснена JNI.

XPConnect

XPConnect (Cross Platform Connect) - это технология, которая обеспечивает простое взаимодействие между XPCOM и JavaScript.

Подключение объектов

XPConnect позволяет объектам JavaScript прозрачно получать доступ к объектам XPCOM и управлять ими. Он также позволяет объектам JavaScript представлять XPCOM-совместимые интерфейсы , которые будут вызываться объектами XPCOM. Основная цель состоит в том, чтобы объекты, взаимодействующие с любой стороны интерфейса в стиле XPCOM, обычно не знали или не заботились о языке реализации объекта на другой стороне интерфейса.

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

Безопасность

Полные права по умолчанию предоставляются только скриптам Chrome, то есть скриптам, которые являются частью приложения или расширения. Для удаленных документов HTML / XHTML / XUL большинство объектов XPCOM недоступны для сценариев, поскольку они имеют ограниченные привилегии по соображениям безопасности. Даже если они доступны (например, объект XMLHttpRequest ), обычные ограничения безопасности также могут быть обнаружены (например, невозможно открыть URL-адреса других доменов ).

Mozilla уже использовала XPCOM для определения интерфейсов для многих объектов, реализованных на C ++. Каждый интерфейс определялся файлом IDL и проходил через компилятор IDL, который создавал файлы заголовков и не зависящую от языка библиотеку типов, которая была двоичным представлением интерфейса. Этот двоичный файл описывает интерфейс, методы, параметры, структуры данных и перечисления..

XPConnect использует информацию библиотеки типов для маршалинга вызовов между различными контекстами потоков и между JavaScript и скомпилированным в исходном коде C ++. XPConnect широко используется в Mozilla. Начиная с Netscape 6.1 и Mozilla 0.9.2, NPAPI был расширен, так что плагин мог возвращать сам себе скриптовый интерфейс, а XPConnect маршалировал вызовы к нему из JavaScript и реализации C ++.

XPConnect не имеет зависимости от Java. Однако технология основана на XPCOM. Таким образом, разработчик подключаемого модуля должен быть знаком с подсчетом ссылок, интерфейсами и IDL для реализации сценариев. Зависимость от XPCOM привела к определенным проблемам динамического связывания (например, проблема хрупкого базового класса ), которые необходимо было решить до того, как плагин будет правильно работать с разными браузерами. С тех пор XPCOM был изменен для предоставления статически связанной версии для решения таких проблем. Этот подход также требует, чтобы файл.xpt был установлен рядом с библиотекой динамической компоновки (DLL); в противном случае кажется, что плагин работает, а скрипт - нет, вызывая путаницу.

NPRuntime

В конце 2004 года все основные браузерные компании, использующие NPAPI, согласовали NPRuntime как расширение исходного NPAPI для предоставления сценариев через API, который по стилю похож на старый NPAPI в стиле C и не зависит от других браузерных технологий, таких как Java или XPCOM. Он поддерживается только Firefox ESR (расширенная версия поддержки) и Safari.

Поддержка / прекращение поддержки

Из-за возраста API, проблем с безопасностью и принятия альтернативных технологий, таких как HTML5, поставщики программного обеспечения начали постепенно отказываться от поддержки NPAPI в 2013 году.

  • Internet Explorer версий с 3 по 5.5 SP2 поддерживал NPAPI, что позволяло подключаемым модулям, работающим в Netscape Navigator, работать в Internet Explorer. Поддержка осуществлялась через небольшой элемент управления ActiveX (названный «plugin.ocx»), который действовал как прокладка между ActiveX и подключаемым модулем NPAPI. Microsoft прекратила поддержку в версии 5.5 SP2 по соображениям безопасности.
  • Google Chrome 45, в сентябре 2015 года окончательно прекратил поддержку NPAPI на всех платформах. В сентябре 2013 года Google объявила, что в течение 2014 года прекратит поддержку NPAPI в своем браузере Google Chrome, заявив, что «архитектура эпохи 90-х стала основной причиной зависаний, сбоев, инцидентов безопасности и сложности кода». В мае 2014 года поддержка NPAPI была удалена из версии Chrome 35 и новее для Linux Linux. В апреле 2015 года Chrome для Windows и OS X (версии 42 и новее) по умолчанию отключил поддержку NPAPI. Однако до сентября 2015 года пользователи могли повторно включить NPAPI.
  • Opera прекратила поддержку с версии 37 в мае 2016 года.
  • Firefox выпуск 52.0 в марте 2017 года удалил всю поддержку NPAPI, кроме Flash. Между тем, канал ESR сохранил общую поддержку этой функции с версией 52esr, являющейся последним средством NPAPI. Firefox 69.0 по умолчанию отключит Flash NPAPI.
  • Safari прекратил поддержку всех подключаемых модулей NPAPI, кроме Flash версии 12, выпущенной в сентябре 2018 года.
  • SeaMonkey прекратил поддержку подключаемых модулей NPAPI версии 2.53.1, за исключением Flash.

. Следующий список веб-браузеров поддерживает все плагины NPAPI:

Аналогичный технологии

ActiveX

Internet Explorer и браузеры на основе Internet Explorer используют элементы управления ActiveX, документы ActiveX и сценарии ActiveX, чтобы предложить расширяемость внутри страницы наравне с NPAPI. Связанный с Internet Explorer, ActiveX - это технология интеграции, которая позволяет любой компьютерной программе интегрируйте части других компьютерных программ, поддерживающие такую ​​интеграцию. Однако Internet Explorer больше не выпускается, и его замена, Microsoft Edge, не поддерживает ActiveX.

PPAPI

12 августа 2009 года на странице в Google Code был представлен новый проект под названием Pepper со связанным API плагина Pepper (PPAPI); PPAPI - это производная от NPAPI, цель которой - сделать плагины более портативными и безопасными. Это расширение разработано специально для того, чтобы упростить реализацию выполнения внешнего процесса плагина.

PPAPI изначально поддерживался только Google Chrome и Chromium. Позже другие браузеры на основе Chromium, такие как Opera и Vivaldi, добавили поддержку плагина PPAPI.

В феврале 2012 года Adobe Systems объявила, что будущие версии Adobe Flash Player для Linux будут предоставляться только через PPAPI. Предыдущий выпуск Flash Player 11.2 с поддержкой NPAPI будет получать обновления безопасности в течение пяти лет. В августе 2016 года Adobe объявила, что, вопреки своему предыдущему заявлению, она снова будет поддерживать NPAPI Flash Player в Linux и будет продолжать выпускать новые его версии.

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

См. также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-31 07:16:46
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте