NPAPI

Netscape Plugin Application Programmierschnittstelle (Npapi) ist ein Programmierschnittstelle (API) der Webbrowser, die es zulässt Plugins integriert werden.

Ursprünglich entwickelt für Netscape Browser ab 1995 mit Netscape Navigator 2.0, es wurde anschließend von anderen Browsern übernommen.

In der NPAPI -Architektur erklärt ein Plugin Inhaltstypen (z. B. "Audio/MP3"), das es verarbeiten kann. Wenn der Browser auf einen Inhaltstyp stößt, den er nicht nativ verarbeiten kann, lädt er das entsprechende Plugin, legt den Speicherplatz im Browser -Kontext für das Plugin zum Rendern und Streams anschließend darauf. Das Plugin ist für die Wiedergabe der Daten verantwortlich. Das Plugin läuft innerhalb der Seite an Ort und Stelle im Gegensatz zu älteren Browsern, die eine externe Anwendung starten mussten, um unbekannte Inhaltstypen zu verarbeiten. Bei NPAPI muss jedes Plugin ungefähr 15 Funktionen zum Initialisieren, Erstellen, Löschen und Positionieren von Plugin -Inhalten implementieren und freilegen. NPAPI unterstützt auch Skript-, Druck-, Vollbild-Plugins, fensterlose Plugins und Inhaltsstreaming.

NPAPI wurde häufig für Plugins verwendet Adobe Flash Player und Microsoft Silverlightsowie Plattformen für Webanwendungen wie die Java -Laufzeitumgebung.

Die NPAPI -Unterstützung bei großen Browsern begann seit 2015 zu schwinden und wurde in den folgenden 7 Jahren allmählich veraltet.[1] Mit dem Aufkommen von HTML5Alle großen Webbrowser haben die Unterstützung für NPAPI -Plugins von Drittanbietern aus Sicherheitsgründen entfernt.[1] Es gibt einige kleinere Browser wie Pale Moon und Waterfox Classic, die immer noch NPAPI -Plugins unterstützen.

Scripting -Unterstützung

Scripting ist eine Funktion erlaubt JavaScript Code auf einer Webseite, um mit dem Plugin zu interagieren. Verschiedene Versionen von Netscape und dann Mozilla unterstützte diese Funktion mit verschiedenen Technologien, einschließlich LiveConnect, XPConnect und NPRUNTIME.

LiveConnect

LiveConnect ist eine Funktion von Webbrowsern, die es zulässt Java und JavaScript -Software, die innerhalb einer Webseite interkommuniziert werden kann. Von der Java-Seite ermöglicht es einem Applet, die eingebetteten Skripte einer Seite aufzurufen oder auf die integrierte JavaScript-Umgebung zuzugreifen, so wie Skripte können. Umgekehrt ermöglicht es von der JavaScript -Seite von einem Skript, Applet -Methoden aufzurufen oder auf Java -Laufzeitbibliotheken zuzugreifen, so wie es Applets können.[2][3]

LiveConnect wurde in verwendet Netscape 4 Implementieren der Schriftfähigkeit von NPAPI -Plugins.

Das Öffnen Sie die Java -Schnittstelle-Abhängige Implementierung von LiveConnect wurde Ende Juni 2009 aus dem Mozilla -Quellcodebaum im Rahmen des Mozilla 2 Aufräumarbeiten.[4] Es wird bei der Freigabe eines neu gestalteten nicht mehr benötigt Java -Laufzeitumgebung aus Sun Microsystems. Die alte Implementierung wurde jedoch für Gecko 1.9.2 wiederhergestellt, da Apple den neueren JRE noch nicht auf Mac OS X übertragen musste.[5]

Die von der neu gestaltete Java -Laufzeitumgebung unterstützte Java -JavaScript -Funktionalität wird trotz der Öffnen Sie die Java -Schnittstelle-Spezifischer Ansatz wurde aufgegeben.[6] Mit Netscape 4 wurde NPAPI erweitert, damit Plugins geschrieben werden können. Diese Erweiterung wird als LiveConnect bezeichnet. Ein Plugin könnte a implementieren Java Klasse und entdecken Sie eine Instanz davon. Die Klasse könnte von JavaScript und aus aufgerufen werden Java -Applets Laufen in der Seite.

Der Nachteil von LiveConnect ist, dass es stark an die Version von Java gebunden ist, die in den Netscape -Browser eingebettet ist. Dies verhinderte den Browser daran, andere Java -Laufzeiten zu verwenden, und fügte der Browser -Download -Größe auf, da Java zu Skript -Plugins erforderlich war. Darüber hinaus ist LiveConnect schwierig zu programmieren: Der Entwickler muss eine Java -Klasse für das Plugin definieren und einen speziellen Java durchführen Header Compilerund native implementieren Methoden. Handhabung Saiten, Ausnahmenund andere Java Objekte aus C ++ ist nicht offen. Darüber hinaus verwendet LiveConnect eine frühere und jetzt veraltete Programmierschnittstelle (API) zum Aufrufen nationaler C ++ -Anrufe von Java, genannt JRI. Die JRI -Technologie wurde seit langem durch Jni.

XPConnect

XPConnect (Cross Platform Connect) ist eine Technologie, die eine einfache Interoperation zwischen ermöglicht XPCOM und JavaScript.

Objektverbindung

Mit XPConnect können JavaScript -Objekte transparent auf XPCOM -Objekte zugreifen und manipulieren. Es ermöglicht auch JavaScript -Objekten, XPCOM -konform zu präsentieren Schnittstellen von XPCOM -Objekten aufgerufen werden. Ein Hauptziel ist, dass Objekte, die von beiden Seiten einer Schnittstelle im XPCOM -Stil kommunizieren, im Allgemeinen die Implementierungssprache des Objekts auf der anderen Seite der Schnittstelle nicht kennen oder kümmern müssen.

Der Hauptgrund von XPConnect für die Existenz ist es, handgeschriebenen Code zu ersetzen, der an Orten verwendet wird, an denen der native Code mit JavaScript -Code interagieren muss. Ein Beispiel ist das Dom Modul.

Sicherheit

Vollständige Berechtigungen werden nur standardmäßig an Chrome -Skripte gewährt, d. H. Skripte, die Teil der Anwendung oder einer Erweiterung sind. Für Fernbedienung Html/Xhtml/Xul Dokumente, die meisten XPCOM -Objekte sind von den Skripten nicht zugänglich, da sie aus Sicherheitsgründen nur begrenzte Berechtigungen haben. Auch wenn sie zugänglich sind (z. B. die Xmlhttprequest Objekt) können auch die üblichen Sicherheitsbeschränkungen gefunden werden (z. B. kann sich nicht öffnen URLs von anderen Domänen).

Mozilla verwendete bereits XPCOM, um die zu definieren Schnittstellen zu vielen in c ++ implementierten Objekten. Jede Schnittstelle wurde durch eine definiert Idl Datei und führen Sie einen IDL-Compiler durch, der Header-Dateien und eine lachneutrale Bibliothek erstellt hat, die eine binäre Darstellung der Schnittstelle war. Diese Binärin beschrieb die Schnittstelle, die Methoden, die Parameter, die Datenstrukturen und Aufzählungen.

XPConnect verwendet die Typ -Bibliotheksinformationen, um Aufrufe zwischen verschiedenen Thread -Kontexten und zwischen JavaScript und nativ kompiliert C ++ zu marschieren. XPConnect wird in ganz Mozilla ausgiebig verwendet. Beginnend mit Netscape 6.1 und Mozilla 0.9.2 wurde NPAPI erweitert, so dass ein Plugin eine skriptierbare Schnittstelle an sich selbst zurücksenden kann und XPConnect Anrufe von JavaScript und der C ++ - Implementierung an ihn marschallt.

XPConnect hat keine Java -Abhängigkeit. Die Technologie basiert jedoch auf XPCOM. Somit muss der Plugin -Entwickler mit dem vertraut sein mit Referenzzählung, Schnittstellen und IDL zum Implementieren von Skripten. Die Abhängigkeit von XPCOM führte zu bestimmten dynamischen Verknüpfungsfragen (z. B. die fragile Basisklasse Problem), das gelöst werden musste, bevor das Plugin mit verschiedenen Browsern korrekt funktioniert. XPCOM wurde inzwischen geändert, um eine statisch verknüpfte Version zu liefern, um solche Probleme anzugehen. Dieser Ansatz erfordert auch, dass eine .xpt -Datei neben dem installiert werden soll Dynamische Link Bibliothek (DLL); Andernfalls scheint das Plugin zu funktionieren, aber das Skript nicht verwirrt.

NPruntime

Ende 2004 stimmten alle großen Browserunternehmen, die NPAPI verwendeten[7] Als Erweiterung des ursprünglichen NPAPI zur Lieferung von Skripten über eine API, die im alten C-Stil-NPAPI ähnlich ist und unabhängig von anderen Browser-Technologien wie Java oder XPCOM ist. Es wird nur von Firefox ESR (Extended Support Release) und unterstützt) und Safari.

Die Unterstützung

Wegen des Alters der API, der Sicherheitsfragen und der Einführung alternativer Technologien wie z. HTML5Viele Softwareanbieter begannen 2013, die NPAPI -Unterstützung aus dem Laufenden zu halten.[8][9]

Internet Explorer

Internet Explorer Versionen 3 bis 5.5 SP2 unterstützten NPAPI, sodass Plugins, die im Netscape -Navigator funktionierten, im Internet Explorer funktionieren. Die Unterstützung kam über eine kleine ActiveX Kontrolle (benannt "Plugin.ocx") Das wirkte als a Shim Zwischen ActiveX und dem NPAPI -Plugin. Microsoft hat in Version 5.5 SP2 aus Sicherheitsgründen die Unterstützung gesenkt.[10][11][12][13]

Google Chrome

Google Chrome Im September 2015 dauerhaft alle NPAPI -Support von allen Plattformen fallen.[14] Im September 2013 kündigte Google an, dass es 2014 den NPAPI-Support in seinem Google Chrome-Browser ausführen würde, und erklärte, dass "die Architektur der 90er-Jahre-Ära zu einer Hauptursache für Hänge, Abstürze, Sicherheitsvorfälle und Codekomplexität geworden ist".[15][16] Im Mai 2014 wurde die NPAPI -Unterstützung aus dem entfernt Linux Version von Chrome 35 und später.[17] Im April 2015 Chrome für Fenster und Os x (Versionen 42 und später) Deaktiviert NPAPI -Unterstützung standardmäßig. Bis September 2015 (Version 45) konnten Benutzer jedoch NPAPI wieder aufnehmen.

Oper

Oper Unterstützung bei der Version 37 im Mai 2016.

Feuerfuchs

Mozilla Feuerfuchs Release 52.0 im März 2017 hat alle Unterstützung für NPAPI mit Ausnahme von Flash entfernt.[18][19][20] In der Zwischenzeit behielt der ESR -Kanal allgemeine Unterstützung für diese Funktion bei, wobei Version 52 ESR das letzte NPAPI -Resort war. Firefox 69.0 deaktiviert den Flash NPAPI standardmäßig.[21][22] In Firefox 85.0, veröffentlicht im Januar 2021, wurde die NPAPI -Unterstützung vollständig entfernt.[23][24] Im ESR -Kanal endete die Unterstützung für Flash NPAPI mit Version 78.15.0, die im Oktober 2021 veröffentlicht wurde[25].[26]

Safari

Safari hat die Unterstützung für alle NPAPI -Plugins gesenkt, mit Ausnahme von Flash mit der im September 2018 veröffentlichten Version 12.[27] Die Flash -Unterstützung wurde von Safari 14 entfernt, die im September 2020 veröffentlicht wurde.[28]

Seeaffe

Seeaffe[29] Störungsstörende NPAPI -Plugins von Version 2.53.1, mit Ausnahme von Flash. Die NPAPI -Unterstützung wurde in Seamonkey 2.53.7 vollständig entfernt, veröffentlicht im März 2021.[30]

Die Unterstützung

Die folgende Liste von Internetbrowser Unterstützen Sie alle NPAPI -Plugins:

Ähnliche Technologien

ActiveX

Internet Explorer und Browser basierend auf Internet Explorer Verwenden Sie ActiveX-Steuerelemente, ActiveX-Dokumente und ActiveX-Skripten, um eine auf dem Page-Erweiterungsbarkeit auf NAIL mit NPAPI zu bieten. ActiveX ist zwar häufig mit dem Internet Explorer verbunden, und ermöglicht es jedem Computerprogramm, Teile anderer Computerprogramme zu integrieren, die eine solche Integration unterstützen.[39] Der Internet Explorer wird jedoch eingestellt und sein Ersatz, Microsoft Edge, unterstützt ActiveX nicht.

Ppapi

Am 12. August 2009 eine Seite auf Google Code[40] stellte ein neues Projekt namens Pepper mit der zugehörigen Pfeffer -Plugin -API (PPAPI) ein;[41] PPAPI ist ein Derivat von NPAPI, das Plugins tragbarer und sicherer machen soll.[42] Diese Erweiterung ist speziell ausgelegt, um die Implementierung von außerhalb dessen zu erleichtern.Prozess Plugin -Ausführung.

PPAPI wurde zunächst nur von Google Chrome und unterstützt Chrom. Später andere Browser auf Chrombasis wie z. Oper und Vivaldi PPAPI -Plugin -Unterstützung hinzugefügt.

Im Februar 2012 Adobe Systems kündigte an, dass zukünftige Linux -Versionen von Adobe Flash Player nur über PPAPI bereitgestellt werden. Die vorherige Veröffentlichung, Flash Player 11.2, mit NPAPI -Unterstützung würde fünf Jahre lang Sicherheitsupdates erhalten.[43] Im August 2016 kündigte Adobe an, dass er im Gegensatz zu ihrer vorherigen Erklärung den NPAPI -Flash -Player unter Linux erneut unterstützen und immer wieder neue Versionen davon veröffentlichen würde.[44]

Im August 2020 kündigte Google an, dass die Unterstützung für PPAPI im Juni 2022 von Google Chrome und Chromium entfernt wird.[45]

Siehe auch

Verweise

  1. ^ a b "Das Ende der Applets". Infoq. Abgerufen 2021-10-02.
  2. ^ Flanagan, David. (2006). JavaScript: Der endgültige Handbuch. O'Reilly, Sebastopol, Kalifornien.
  3. ^ Für technische Details finden Sie im Mozilla Entwicklerdokumentation zu LiveConnect.
  4. ^ "442399 - LiveConnect vom Baum entfernen". Mozilla.org.
  5. ^ "517355 - Wiederherstellen von Oji, LiveConnect und dem JEP auf dem 1.9.2 -Zweig unter OS X". Mozilla.org.
  6. ^ "Versionshinweise für die Java ™ Plug-in-Technologie der nächsten Generation (eingeführt in Java SE 6 Update 10)". sun.com.
  7. ^ "Scripting -Plugins". Mozilla Developer Network.
  8. ^ "Änderung der Unterstützung für Acrobat- und Leser-Plug-Ins in modernen Webbrowsern". Adobe. 8. Februar 2016.
  9. ^ "Oracle zerlegt das Java -Browser -Plugin, bereitet sich auf seinen Tod vor.". ARS Technica. 28. Januar 2016. Abgerufen 15. April 2016.
  10. ^ "Plug-Ins im Netscape-Stil funktionieren nicht nach dem Upgrade des Internet Explorer". Die Unterstützung (3.3 ed.). Microsoft. 27. Juli 2007.
  11. ^ Giannandrea, J. (4. September 2001). "Microsoft bricht Web -Plugins in Windows XP". meer.net. Archiviert von das Original am 16. Oktober 2007.
  12. ^ "Beschreibung des Internet Explorer-Supports für Plug-Ins im Netscape-Stil". Die Unterstützung (3.4 ed.). Microsoft. 31. Januar 2007.
  13. ^ "Microsoft Security Bulletin MS03-015-kritisch". SicherheitstechCenter. Microsoft. 23. April 2003.
  14. ^ "Der endgültige Countdown für NPAPI". Chrom -Blog.
  15. ^ Google wird im Januar 2014 die meisten Netscape-Plug-in-API-Plug-Ins blockieren, Will Whitelist Silverlight, Unity und andere". Techcrunch. 23. September 2013.
  16. ^ "Google möchte Netscape Plugin -API -Unterstützung in Chrome fallen lassen, beginnend mit der Blockierung der meisten Plugins im Januar 2014". Das nächste Web. 23. September 2013.
  17. ^ "Update zur NPAPI -Abschaltung". Chrom -Blog. 27. Mai 2014.
  18. ^ "Firefox 52.0, siehe alle neuen Funktionen, Updates und Korrekturen". Mozilla.
  19. ^ "Firefox fallen bis Ende 2016 NPAPI -Plugins ab - außer für Flash". Kompatibilität von Firefox Site. 4. Oktober 2016. Abgerufen 25. Januar 2017.
  20. ^ "Warum funktionieren Java, Silverlight, Adobe Acrobat und andere Plugins nicht mehr?". Mozilla -Unterstützung. Archiviert von das Original Am 2017-03-07. Abgerufen 2017-03-06.
  21. ^ "1519434 - Deaktivieren Sie die Flash -Unterstützung standardmäßig in Firefox 69". bugzilla.mozilla.org. Abgerufen 2019-01-14.
  22. ^ "Plugin Roadmap für Firefox - Plugins". MDN Web Docs. Abgerufen 2021-07-12.{{}}: CS1 Wartung: URL-Status (Link)
  23. ^ Jim Mathies (13. November 2020). "Entfernen der NPAPI -Plugin -Unterstützung in Firefox 85". Mozilla.dev.platform (über Google Groups). Abgerufen 10. Februar 2021.
  24. ^ "Plugin Roadmap für Firefox". Mdn. 19. Januar 2021. archiviert von das Original am 21. Januar 2021. Abgerufen 10. Februar 2021.
  25. ^ "Firefox für Enterprise 91 - Versionshinweise | Firefox für Enterprise -Hilfe". Support.mozilla.org. Abgerufen 2022-02-13.
  26. ^ "Firefox ESR 78.15.0, siehe alle neuen Funktionen, Updates und Korrekturen". Mozilla. Abgerufen 2022-01-03.
  27. ^ Clover, Juli (17. September 2018). "Apple veröffentlicht Safari 12 für Macos Sierra und MacOS High Sierra". Makrumoren.
  28. ^ "Safari 14 Versionsnotizen". Apple Developer -Dokumentation.
  29. ^ "Warum funktionieren Oracle Java, Microsoft Silverlight, Adobe Acrobat Reader und andere Plugins nicht mehr?" NPAPI -Plugins
  30. ^ "Seamonkey 2.53.7 Versionsnotizen". Abgerufen 14. März 2021.
  31. ^ "Npapi 是 重型 武器 , 当 方法 无法 到达 你 的 目的 时 , 才 使用 使用。。。。。。。。。。。。 你 你 你 你 到达。。。。 到达 到达 到达 到达。。。。。。。。。。。。。。。。。。。。 武器 武器 武器 武器 武器 武器。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 的 武器 武器 别的 别的。。。 无法 的 的 目的 当 当 方法 方法 无法 无法 无法 的 的 武器 武器 别的 方法 无法 无法 你 的 武器 武器 方法。. Npapi 插件.
  32. ^ "Unterstützung für alle NPAPI -Plugins (Einheit, Silverlight, Flash, Java, Authentifizierungs -Plugins usw.)". Basilisk -Funktionen.
  33. ^ "Die meisten Plug-Ins von Drittanbietern, die für Mozilla/Netscape entwickelt wurden, werden auch mit K-Meleon arbeiten".Plugins von Drittanbietern.
  34. ^ "Laden Sie alle NPAPI-Plugins, Java, Silverlight usw." K-Meleon Hybrid (Goanna über Pro).
  35. ^ "Vollständige und fortlaufende Unterstützung für NPAPI -Plugins (Java, Silverlight usw.)". Pale Mond: Technische Details
  36. ^ "Pale Moon unterstützt NPAPI-Plug-Ins. Im Gegensatz zu Firefox werden wir diese Art von Plug-Ins nicht abbauen oder entfernen.". Pale Moon Future Roadmap.
  37. ^ "Wir verwenden die NPAPI -Plugin -Architektur (genau wie Mozilla). Installieren Sie also einfach die Plugins normal, und die Dinge sollten funktionieren.". UZBL FAQ.
  38. ^ "Sie sollten verantwortungsbewusst verwendet werden, aber Waterfox unterstützt immer noch die Verwendung von Java- und Silverlight-Plugins sowie alle anderen 64-Bit-NPAPI-Plugins. Unterstützung für NPAPI -Plugins.
  39. ^ "Beschreibung von ActiveX Technologies". Die Unterstützung. Microsoft. 19. Januar 2007.
  40. ^ "ppapi". Google -Code. Archiviert von das Original Am 2010-07-02.
  41. ^ "Erste Schritte: Hintergrund und Grundlagen - die Chromprojekte". chromium.org.
  42. ^ "Konzepte - PPAPI - Wichtige Konzepte für die Arbeit mit PPAPI. - Pfeffer -Plugin -API - Google Project Hosting". Google.com.
  43. ^ "Adobe und Google Partnering für Flash Player unter Linux". Adobe.com. Archiviert von das Original Am 2012-02-23. Abgerufen 2012-03-07.
  44. ^ Campbell, Chris (31. August 2016). "Beta News - Flash Player NPAPI für Linux". Adobe Air und Adobe Flash Player Team Blog. Adobe Systems. Abgerufen 8. September 2016.
  45. ^ Anthony Laforge (10. August 2020). "Änderungen an der Chrome App Support Timeline". Chrom -Blog.

Externe Links