НАППИ
Интерфейс прикладного программирования подключаемых модулей Netscape ( NPAPI ) — устаревший интерфейс прикладного программирования (API) для подключаемых модулей веб-браузера , первоначально разработанный для Netscape Navigator 2.0 в 1995 году и впоследствии принятый другими браузерами.
В архитектуре NPAPI плагин объявляет типы контента (например, «аудио/mp3»), которые он может обрабатывать. Когда браузер встречает тип контента, который он не может обработать изначально, он загружает соответствующий плагин, выделяет пространство в контексте браузера для рендеринга плагина, а затем передает в него данные. Плагин отвечает за рендеринг данных. Плагин работает прямо на странице, в отличие от старых браузеров, которым приходилось запускать внешнее приложение для обработки неизвестных типов контента. NPAPI требует, чтобы каждый плагин реализовывал и предоставлял примерно 15 функций для инициализации, создания, удаления и позиционирования содержимого плагина. NPAPI также поддерживает сценарии, печать, полноэкранные плагины, плагины без окон и потоковую передачу контента.
NPAPI часто использовался для плагинов, которые требовали интенсивной низкоуровневой производительности, таких как видеоплееры, включая Adobe Flash Player и Microsoft Silverlight , а также платформы для веб-приложений, такие как среда выполнения Java .
Поддержка NPAPI среди основных браузеров начала ослабевать с 2015 года и постепенно устарела в течение следующих 7 лет. Все основные веб-браузеры удалили поддержку сторонних плагинов NPAPI по соображениям безопасности и обслуживания, пока существуют передовые технологии.
Поддержка сценариев
[ редактировать ]Сценарии — это функция, позволяющая коду JavaScript на веб-странице взаимодействовать с плагином. Различные версии Netscape, а затем Mozilla поддерживали эту функцию с использованием разных технологий, включая LiveConnect, XPConnect и NPRuntime.
LiveConnect
[ редактировать ]LiveConnect — это функция веб-браузеров, которая позволяет программному обеспечению Java и JavaScript взаимодействовать внутри веб-страницы. Со стороны Java он позволяет апплету вызывать встроенные сценарии страницы или получать доступ к встроенной среде JavaScript, как это могут делать сценарии. И наоборот, со стороны JavaScript он позволяет сценарию вызывать методы апплета или получать доступ к библиотекам времени выполнения Java, как это могут делать апплеты. [ 1 ] [ 2 ]
LiveConnect использовался в Netscape 4 для реализации возможности сценариев в плагинах NPAPI.
Реализация LiveConnect, зависящая от открытого интерфейса Java, была удалена из дерева исходного кода Mozilla в конце июня 2009 года в рамках Mozilla 2 . очистки [ 3 ] В этом больше нет необходимости с выпуском обновленной среды выполнения Java от Sun Microsystems. Однако старая реализация была восстановлена для Gecko 1.9.2, поскольку Apple еще не портировала новую JRE на Mac OS X. [ 4 ]
Функциональность Java – JavaScript, поддерживаемая обновленной средой выполнения Java, по-прежнему называется «LiveConnect», несмотря на то, что подход, специфичный для открытого интерфейса Java, был заброшен. [ 5 ] В Netscape 4 NPAPI был расширен и теперь позволяет создавать сценарии для плагинов. Это расширение называется LiveConnect. Плагин может реализовать Java класс и предоставить его экземпляр . Класс можно вызывать из JavaScript и из Java-апплетов, работающих на странице.
Недостатком LiveConnect является то, что он сильно привязан к версии Java, встроенной в браузер Netscape. Это не позволяло браузеру использовать другие среды выполнения Java и увеличивало размер загрузки браузера, поскольку для скриптовых плагинов требовалась Java. Кроме того, LiveConnect сложно программировать: разработчик должен определить класс Java для плагина, запустить его через специализированный заголовков компилятор Java и реализовать собственные методы . Обработка строк , исключений и других объектов 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); в противном случае кажется, что плагин работает, а скрипты — нет, что приводит к путанице.
NPRвремя выполнения
[ редактировать ]В конце 2004 года все крупные компании-браузеры, использующие NPAPI, согласились на NPRuntime. [ 6 ] как расширение исходного NPAPI для реализации сценариев через API, который по стилю похож на старый NPAPI в стиле C и не зависит от других технологий браузера, таких как Java или XPCOM. Он поддерживается только Firefox ESR (выпуск с расширенной поддержкой) и Safari .
Поддерживать
[ редактировать ]Из-за возраста API, проблем безопасности и внедрения альтернативных технологий, таких как HTML5 , многие поставщики программного обеспечения начали постепенно отказываться от поддержки NPAPI в 2013 году. [ 7 ] [ 8 ]
Интернет Эксплорер
[ редактировать ]Internet Explorer версий с 3 по 5.5 SP2 поддерживал NPAPI, позволяя плагинам, которые работали в Netscape Navigator, работать в Internet Explorer. Поддержка осуществлялась через небольшой элемент управления ActiveX (названный " plugin.ocx
"), который выступал в качестве прокладки между ActiveX и плагином NPAPI. Microsoft отказалась от поддержки начиная с версии 5.5 SP2 по соображениям безопасности. [ 9 ] [ 10 ] [ 11 ] [ 12 ]
Гугл Хром
[ редактировать ]В сентябре 2015 года Google Chrome окончательно прекратил поддержку NPAPI на всех платформах. [ 13 ] В сентябре 2013 года Google объявила, что в 2014 году прекратит поддержку NPAPI в своем браузере Google Chrome, заявив, что «[его] архитектура эпохи 90-х годов стала основной причиной зависаний, сбоев, инцидентов безопасности и сложности кода». [ 14 ] [ 15 ] В мае 2014 года поддержка NPAPI была удалена из для Linux . версии Chrome 35 и более поздних версий [ 16 ] В апреле 2015 года Chrome для Windows и OS X (версии 42 и более поздних) по умолчанию отключил поддержку NPAPI. Однако до сентября 2015 г. (версия 45) пользователи могли повторно включить NPAPI.
Опера
[ редактировать ]Opera прекратила поддержку версии 37 в мае 2016 года. [ нужна ссылка ]
Firefox
[ редактировать ]В выпуске Mozilla Firefox 52.0 в марте 2017 года вся поддержка NPAPI, кроме Flash, удалена. [ 17 ] [ 18 ] [ 19 ] Между тем, канал ESR сохранил общую поддержку этой функции, причем версия 52 ESR стала последним средством NPAPI. Firefox 69.0 по умолчанию отключил Flash NPAPI. [ 20 ] [ 21 ] В Firefox 85.0, выпущенном в январе 2021 года, поддержка NPAPI была полностью удалена. [ 22 ] [ 23 ] На канале ESR поддержка Flash NPAPI закончилась в версии 78.15.0, выпущенной в октябре 2021 года. [ 24 ] [ 25 ]
Сафари
[ редактировать ]Safari прекратил поддержку всех плагинов NPAPI, кроме Flash, в версии 12, выпущенной в сентябре 2018 года. [ 26 ] Поддержка Flash удалена из Safari 14, выпущенного в сентябре 2020 года. [ 27 ]
SeaMonkey
[ редактировать ]SeaMonkey [ 28 ] прекратил поддержку плагинов NPAPI с версии 2.53.1, за исключением Flash. Поддержка NPAPI была полностью удалена в SeaMonkey 2.53.7, выпущенном в марте 2021 года. [ 29 ]
Поддерживать
[ редактировать ]Следующий список веб-браузеров поддерживает все плагины NPAPI:
- 360 Browser Secure Extreme 360 или : 360极速浏览器Explorer [ 30 ]
- Василиск [ 31 ]
- К-Мелеон [ 32 ] ( Гоанна ) двигатель [ 33 ]
- Бледная луна [ 34 ] Pale Moon (Будущая дорожная карта ) [ 35 ]
- Узбл [ 36 ]
Похожие технологии
[ редактировать ]ActiveX
[ редактировать ]Internet Explorer и браузеры на его основе используют элементы управления ActiveX, документы ActiveX и сценарии ActiveX, чтобы обеспечить внутристраничную расширяемость наравне с NPAPI. Хотя ActiveX обычно ассоциируется с Internet Explorer, он представляет собой технологию интеграции, которая позволяет любой компьютерной программе интегрировать части других компьютерных программ, поддерживающих такую интеграцию. [ 37 ] Однако выпуск Internet Explorer прекращен, а его замена Microsoft Edge не поддерживает ActiveX.
ППАПИ
[ редактировать ]12 августа 2009 г. страница Google Code. [ 38 ] представил новый проект под названием Pepper со связанным API-интерфейсом плагина Pepper (PPAPI); [ 39 ] PPAPI — это производная от NPAPI, призванная сделать плагины более портативными и безопасными. [ 40 ] Это расширение разработано специально для упрощения реализации внепроцессного выполнения плагинов.
PPAPI изначально поддерживался только Google Chrome и Chromium . Позже другие браузеры на базе Chromium, такие как Opera и Vivaldi, добавили поддержку плагинов PPAPI.
В феврале 2012 года Adobe Systems объявила, что будущие версии Adobe Flash Player для Linux будут предоставляться только через PPAPI. Предыдущий выпуск Flash Player 11.2 с поддержкой NPAPI будет получать обновления безопасности в течение пяти лет. [ 41 ] В августе 2016 года Adobe объявила, что, вопреки своему предыдущему заявлению, она снова будет поддерживать NPAPI Flash Player в Linux и продолжит выпускать его новые версии. [ 42 ]
В августе 2020 года Google объявил, что поддержка PPAPI будет удалена из Google Chrome и Chromium в июне 2022 года. [ 43 ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Фланаган, Дэвид. (2006). JavaScript: полное руководство. О'Рейли, Севастополь, Калифорния.
- ^ Технические подробности см. в документации разработчика Mozilla на LiveConnect .
- ^ «442399 – удалить LiveConnect из дерева» . сайт mozilla.org .
- ^ «517355 — Восстановите OJI, Liveconnect и JEP в ветке 1.9.2 в OS X» . сайт mozilla.org .
- ^ «Примечания к выпуску технологии подключаемых модулей Java™ нового поколения (представленной в обновлении 10 для Java SE 6)» . Sun.com .
- ^ «Скриптовые плагины» . Сеть разработчиков Mozilla .
- ^ «Изменение в поддержке плагинов Acrobat и Reader в современных веб-браузерах» . Adobe . 8 февраля 2016 г.
- ^ «Oracle объявляет устаревшим плагин Java для браузера и готовится к его прекращению» . Арс Техника . 28 января 2016 года . Проверено 15 апреля 2016 г.
- ^ «Плагины в стиле Netscape не работают после обновления Internet Explorer» . Поддержка (3.3 изд.). Майкрософт . 27 июля 2007 г.
- ^ Джаннандреа, Дж. (4 сентября 2001 г.). «Microsoft ломает веб-плагины в Windows XP» . meer.net . Архивировано из оригинала 16 октября 2007 года.
- ^ «Описание поддержки Internet Explorer плагинов в стиле Netscape» . Поддержка (3,4 изд.). Майкрософт . 31 января 2007 г.
- ^ «Бюллетень по безопасности Microsoft MS03-015 — критично» . Техцентр безопасности . Майкрософт . 23 апреля 2003 г.
- ^ « Последний отсчет для NPAPI ». Блог Хрома .
- ^ Google начнет блокировать большинство плагинов Netscape Plug-In API в январе 2014 года, внесет в белый список Silverlight, Unity и другие ». TechCrunch . 23 сентября 2013 г.
- ^ « Google планирует отказаться от поддержки Netscape Plugin API в Chrome, начиная с блокировки большинства плагинов в январе 2014 года ». Следующая сеть . 23 сентября 2013 г.
- ^ « Обновление об устаревании NPAPI ». Блог Хрома . 27 мая 2014 г.
- ^ «Firefox 52.0: все новые функции, обновления и исправления» . Мозилла .
- ^ «Firefox откажется от плагинов NPAPI к концу 2016 года, за исключением Flash» . Совместимость сайтов Firefox . 4 октября 2016 г. Архивировано из оригинала 15 марта 2017 г. Проверено 25 января 2017 г.
- ^ «Почему Java, Silverlight, Adobe Acrobat и другие плагины больше не работают?» . Поддержка Мозиллы . Архивировано из оригинала 07 марта 2017 г. Проверено 6 марта 2017 г.
- ^ «1519434 — отключить поддержку Flash по умолчанию в Firefox 69» . bugzilla.mozilla.org . Проверено 14 января 2019 г.
- ^ «Дорожная карта плагинов для Firefox — Плагины» . Веб-документы MDN . Проверено 12 июля 2021 г.
- ^ Джим Мэтис (13 ноября 2020 г.). «Удаление поддержки плагина NPAPI в Firefox 85» . mozilla.dev.platform (через группы Google) . Проверено 10 февраля 2021 г.
- ^ «Дорожная карта плагинов для Firefox» . МДН . 19 января 2021 года. Архивировано из оригинала 21 января 2021 года . Проверено 10 февраля 2021 г.
- ^ «Firefox для предприятия 91 — Примечания к выпуску | Справка Firefox для предприятия» . support.mozilla.org . Проверено 13 февраля 2022 г.
- ^ «Firefox ESR 78.15.0, см. все новые функции, обновления и исправления» . Мозилла . Проверено 3 января 2022 г.
- ^ Клевер, Джули (17 сентября 2018 г.). «Apple выпускает Safari 12 для macOS Sierra и macOS High Sierra» . МакСлухи .
- ^ «Примечания к выпуску Safari 14» . Документация разработчика Apple .
- ^ «Почему Oracle Java, Microsoft Silverlight, Adobe Acrobat Reader и другие плагины больше не работают?» Плагины NPAPI
- ^ «Примечания к выпуску SeaMonkey 2.53.7» . Проверено 14 марта 2021 г.
- ^ — это тяжелое оружие. Его рекомендуется использовать только в том случае, если другие методы не могут достичь вашей цели» . « NPAPI
- ^ «Поддержка всех плагинов NPAPI (Unity, Silverlight, Flash, Java, плагины аутентификации и т. д.)» . Особенности василиска.
- ^ «Большинство сторонних плагинов, разработанных для Mozilla/Netscape, также будут работать с K-Meleon» . Сторонние плагины.
- ^ «Загрузите все плагины NPAPI, Java, Silverlight и т. д.» К-Мелеон Гибрид (Гоанна вместо Про).
- ^ « Полная и постоянная поддержка плагинов NPAPI (Java, Silverlight и т. д.) ». Бледная Луна: технические подробности
- ^ «Pale Moon поддерживает плагины NPAPI. В отличие от Firefox, мы не будем прекращать поддержку таких плагинов или удалять их» . Дорожная карта будущего Pale Moon.
- ^ «Мы используем архитектуру плагинов NPAPI (так же, как Mozilla), поэтому просто установите плагины как обычно, и все должно работать» . Узбл FAQ.
- ^ «Описание технологий ActiveX» . Поддерживать . Майкрософт . 19 января 2007 г.
- ^ «ппапи» . Гугл-код . Архивировано из оригинала 2 июля 2010 г.
- ^ «Начало работы: предыстория и основы – проекты Chromium» . хромиум.орг .
- ^ «Концепции — ppapi — Важные понятия для работы с PPAPI. — API плагина Pepper — Хостинг проектов Google» . гугл.com .
- ^ «Сотрудничество Adobe и Google в области Flash Player для Linux» . Adobe.com . Архивировано из оригинала 23 февраля 2012 г. Проверено 7 марта 2012 г.
- ^ Кэмпбелл, Крис (31 августа 2016 г.). «Бета-новости – Flash Player NPAPI для Linux» . Блог группы разработчиков Adobe AIR и Adobe Flash Player . Системы Adobe . Проверено 8 сентября 2016 г.
- ^ Энтони Лафорж (10 августа 2020 г.). «Изменения в графике поддержки приложений Chrome» . Блог Хрома .
Внешние ссылки
[ редактировать ]- Документация по разработке плагина. Архивировано 3 августа 2012 г. в Wayback Machine в Центре разработчиков Mozilla, включая API NPAPI.
- Элемент управления ActiveX, в котором размещаются плагины – замена плагина.ocx, который был удален из Internet Explorer.
- Книга Зана Олифанта «Программирование плагинов Netscape»
- Nixysa: среда генерации связующего кода для плагинов NPAPI. Лицензия Апач 2.0.
- Учебное пособие по NPAPI Создание плагина Firefox ( часть вторая , часть третья , часть четвертая )
- Документация по расширениям Opera 15+