NPPI (Asociación Nacional de Productores de Productos Alimenticios)

Interfaz de programación de aplicaciones

La interfaz de programación de aplicaciones de complementos de Netscape ( NPAPI ) es una interfaz de programación de aplicaciones (API) obsoleta para complementos de navegadores web , desarrollada inicialmente para Netscape Navigator 2.0 en 1995 y posteriormente adoptada por otros navegadores.

En la arquitectura NPAPI, un complemento declara los tipos de contenido (por ejemplo, "audio/mp3") que puede manejar. Cuando el navegador encuentra un tipo de contenido que no puede manejar de forma nativa, carga el complemento adecuado, reserva espacio dentro del contexto del navegador para que el complemento lo represente y luego le transmite los datos. El complemento es responsable de representar los datos. El complemento se ejecuta en el lugar dentro de la página, a diferencia de los navegadores más antiguos que tenían que iniciar una aplicación externa para manejar tipos de contenido desconocidos. NPAPI requiere que cada complemento implemente y exponga aproximadamente 15 funciones para inicializar, crear, eliminar y posicionar el contenido del complemento. NPAPI también admite scripts, impresión, complementos de pantalla completa, complementos sin ventanas y transmisión de contenido.

NPAPI se usaba frecuentemente para complementos que requerían un rendimiento intensivo y de bajo nivel, como reproductores de video, incluidos Adobe Flash Player y Microsoft Silverlight , así como plataformas para aplicaciones web como Java Runtime Environment .

La compatibilidad con NPAPI entre los principales navegadores comenzó a disminuir en 2015 y se fue descontinuando gradualmente durante los siguientes 7 años. Todos los principales navegadores web eliminaron la compatibilidad con complementos NPAPI de terceros por razones de seguridad y mantenimiento mientras exista tecnología superior. [1]

Soporte de scripts

La creación de scripts es una función que permite que el código JavaScript de una página web interactúe con el complemento. Varias versiones de Netscape y luego de Mozilla admitieron esta función mediante diferentes tecnologías, incluidas LiveConnect, XPConnect y NPRuntime.

Conexión en vivo

LiveConnect es una característica de los navegadores web que permite que el software Java y JavaScript se comuniquen entre sí dentro de una página web. Desde el lado de Java, permite que un subprograma invoque los scripts integrados de una página o acceda al entorno JavaScript integrado, de forma muy similar a como lo hacen los scripts. Por el contrario, desde el lado de JavaScript, permite que un script invoque métodos de subprograma o acceda a bibliotecas de tiempo de ejecución de Java, de forma muy similar a como lo hacen los subprogramas. [2] [3]

LiveConnect se utilizó en Netscape 4 para implementar la capacidad de creación de scripts de complementos NPAPI.

La implementación de LiveConnect, dependiente de Open Java Interface, fue eliminada del árbol de código fuente de Mozilla a fines de junio de 2009 como parte del esfuerzo de limpieza de Mozilla 2. [4] Ya no es necesaria con el lanzamiento de un entorno de ejecución Java rediseñado de Sun Microsystems. Sin embargo, la implementación anterior fue restaurada para Gecko 1.9.2, ya que Apple aún no había portado el JRE más nuevo a Mac OS X. [5]

La funcionalidad Java–JavaScript compatible con el entorno de ejecución Java rediseñado todavía se llama "LiveConnect", a pesar de que se abandonó el enfoque específico de la interfaz Open Java . [6] Con Netscape 4, NPAPI se amplió para permitir la creación de scripts para los complementos. Esta extensión se llama LiveConnect. Un complemento podría implementar una clase Java y exponer una instancia de la misma . La clase podría llamarse desde JavaScript y desde applets Java que se ejecutan dentro de la página.

La desventaja de LiveConnect es que está fuertemente ligado a la versión de Java incorporada en el navegador Netscape. Esto impedía que el navegador usara otros entornos de ejecución de Java y añadía volumen al tamaño de descarga del navegador, ya que requería Java para ejecutar los complementos. Además, LiveConnect es complicado de programar: el desarrollador tiene que definir una clase Java para el complemento, ejecutarlo a través de un compilador de encabezados Java especializado e implementar métodos nativos . El manejo de cadenas , excepciones y otros objetos Java desde C++ no es obvio. Además, LiveConnect utiliza una interfaz de programación de aplicaciones (API) anterior y ahora obsoleta para invocar llamadas nativas de C++ desde Java, llamada JRI. La tecnología JRI ha sido suplantada hace mucho tiempo por JNI .

Conexión XP

XPConnect (Cross Platform Connect) es una tecnología que permite una interoperabilidad sencilla entre XPCOM y JavaScript.

Conexión de objetos

XPConnect permite que los objetos JavaScript accedan y manipulen de forma transparente objetos XPCOM. También permite que los objetos JavaScript presenten interfaces compatibles con XPCOM para que sean llamadas por objetos XPCOM. Un objetivo principal es que los objetos que se comunican desde cualquier lado de una interfaz de estilo XPCOM no deban saber o preocuparse por el lenguaje de implementación del objeto del otro lado de la interfaz.

La razón principal de ser de XPConnect es reemplazar el código escrito a mano que se utiliza en lugares donde el código nativo necesita interactuar con el código JavaScript. Un ejemplo es el módulo DOM .

Seguridad

De forma predeterminada, los privilegios completos solo se conceden a los scripts de Chrome, es decir, a los scripts que forman parte de la aplicación o de una extensión. En el caso de los documentos HTML / XHTML / XUL remotos , la mayoría de los objetos XPCOM no son accesibles a los scripts, ya que tienen privilegios limitados por razones de seguridad. Incluso si son accesibles (por ejemplo, el objeto XMLHttpRequest ), también se pueden encontrar las restricciones de seguridad habituales (por ejemplo, no se pueden abrir URL de otros dominios ).

Mozilla ya utilizaba XPCOM para definir las interfaces de muchos objetos implementados en C++. Cada interfaz se definía mediante un archivo IDL y se ejecutaba a través de un compilador IDL que generaba archivos de encabezado y una biblioteca de tipos independiente del lenguaje que era una representación binaria de la interfaz. Este binario describía la interfaz, los métodos, los parámetros, las estructuras de datos y las enumeraciones .

XPConnect utiliza la información de la biblioteca de tipos para ordenar las llamadas entre diferentes contextos de subprocesos y entre JavaScript y C++ compilado de forma nativa. XPConnect se utiliza ampliamente en Mozilla. A partir de Netscape 6.1 y Mozilla 0.9.2, se amplió NPAPI, de modo que un complemento pudiera devolverse una interfaz programable a sí mismo y XPConnect ordenara las llamadas a él desde JavaScript y la implementación de C++.

XPConnect no tiene dependencia de Java. Sin embargo, la tecnología se basa en XPCOM. Por lo tanto, el desarrollador del complemento debe estar familiarizado con el conteo de referencias , las interfaces y el IDL para implementar la creación de scripts. La dependencia de XPCOM generó ciertos problemas de enlaces dinámicos (por ejemplo, el problema de la clase base frágil ) que se tuvieron que resolver antes de que el complemento funcionara correctamente con diferentes navegadores. Desde entonces, XPCOM se modificó para proporcionar una versión enlazada estáticamente para abordar dichos problemas. Este enfoque también requiere que se instale un archivo .xpt junto a la biblioteca de enlaces dinámicos (DLL); de lo contrario, el complemento parece funcionar, pero los scripts no, lo que genera confusión.

Tiempo de ejecución de NPR

A finales de 2004, todas las principales empresas de navegadores que utilizan NPAPI acordaron que NPRuntime [7] fuera una extensión de la NPAPI original para proporcionar scripts, a través de una API que es similar en estilo a la antigua NPAPI de estilo C y es independiente de otras tecnologías de navegador como Java o XPCOM. Solo es compatible con Firefox ESR (Extended Support Release) y Safari .

Apoyo

Debido a la antigüedad de la API, los problemas de seguridad y la adopción de tecnologías alternativas como HTML5 , muchos proveedores de software comenzaron a eliminar gradualmente el soporte de NPAPI en 2013. [8] [9]

Explorador de Internet

Las versiones 3 a 5.5 SP2 de Internet Explorer admitían NPAPI, lo que permitía que los complementos que funcionaban en Netscape Navigator también lo hicieran en Internet Explorer. La compatibilidad se proporcionaba a través de un pequeño control ActiveXplugin.ocx (llamado " ") que actuaba como un complemento entre ActiveX y el complemento NPAPI. Microsoft dejó de ofrecer compatibilidad a partir de la versión 5.5 SP2 por razones de seguridad. [10] [11] [12] [13]

Google Chrome

En septiembre de 2015, Google Chrome eliminó de forma permanente la compatibilidad con NPAPI en todas las plataformas. [14] En septiembre de 2013, Google anunció que eliminaría gradualmente la compatibilidad con NPAPI en su navegador Google Chrome durante 2014, afirmando que "su arquitectura de la era de los 90 se ha convertido en una de las principales causas de bloqueos, fallas, incidentes de seguridad y complejidad del código". [15] [16] En mayo de 2014, se eliminó la compatibilidad con NPAPI de la versión Linux de Chrome 35 y posteriores. [17] En abril de 2015, Chrome para Windows y OS X (versiones 42 y posteriores) desactivó la compatibilidad con NPAPI de forma predeterminada. Sin embargo, hasta septiembre de 2015 (versión 45), los usuarios podían volver a habilitar NPAPI. [ cita requerida ]

Ópera

Opera dejó de brindar soporte a la versión 37 en mayo de 2016. [ cita requerida ]

Firefox

La versión 52.0 de Mozilla Firefox en marzo de 2017 eliminó todo el soporte para NPAPI excepto para Flash. [18] [19] [20] Mientras tanto, el canal ESR mantuvo el soporte general para esta función, siendo la versión 52 ESR el último recurso para NPAPI. Firefox 69.0 deshabilitó la NPAPI de Flash de forma predeterminada. [21] [22] En Firefox 85.0, lanzado en enero de 2021, se eliminó por completo la compatibilidad con NPAPI. [23] [24] En el canal ESR, la compatibilidad con Flash NPAPI finalizó con la versión 78.15.0, lanzada en octubre de 2021. [25] [26]

Safari

Safari ha dejado de ofrecer soporte para todos los complementos NPAPI excepto Flash con la versión 12 lanzada en septiembre de 2018. [27] La ​​compatibilidad con Flash se ha eliminado de Safari 14, lanzada en septiembre de 2020. [28]

Mono marino

SeaMonkey [29] dejó de admitir complementos NPAPI a partir de la versión 2.53.1, con la excepción de Flash. La compatibilidad con NPAPI se eliminó por completo en SeaMonkey 2.53.7, lanzada en marzo de 2021. [30]

Apoyo

La siguiente lista de navegadores web admiten todos los complementos NPAPI:

Tecnologías similares

ActiveX

Internet Explorer y los navegadores basados ​​en Internet Explorer utilizan controles ActiveX, documentos ActiveX y secuencias de comandos ActiveX para ofrecer una extensibilidad en la página equivalente a NPAPI. Aunque comúnmente se asocia con Internet Explorer, ActiveX es una tecnología de integración que permite que cualquier programa informático integre partes de otros programas informáticos que admitan dicha integración. [38] Sin embargo, Internet Explorer se ha discontinuado y su reemplazo, Microsoft Edge, no admite ActiveX.

PPAPI

El 12 de agosto de 2009, una página en Google Code [39] presentó un nuevo proyecto llamado Pepper, con la API de complemento Pepper asociada (PPAPI); [40] PPAPI es un derivado de NPAPI destinado a hacer que los complementos sean más portátiles y más seguros. [41] Esta extensión está diseñada específicamente para facilitar la implementación de la ejecución de complementos fuera de proceso .

Al principio, PPAPI solo era compatible con Google Chrome y Chromium . Más tarde, otros navegadores basados ​​en Chromium, como Opera y Vivaldi, añadieron compatibilidad con el complemento PPAPI.

En febrero de 2012, Adobe Systems anunció que las futuras versiones de Adobe Flash Player para Linux se proporcionarían únicamente a través de PPAPI. La versión anterior, Flash Player 11.2, con soporte NPAPI, recibiría actualizaciones de seguridad durante cinco años. [42] En agosto de 2016, Adobe anunció que, contrariamente a su declaración anterior, volvería a ofrecer soporte para Flash Player NPAPI en Linux y seguiría lanzando nuevas versiones del mismo. [43]

En agosto de 2020, Google anunció que el soporte para PPAPI se eliminaría de Google Chrome y Chromium en junio de 2022. [44]

Véase también

Referencias

  1. ^ "El fin de los subprogramas". InfoQ . Consultado el 2 de octubre de 2021 .
  2. ^ Flanagan, David. (2006). JavaScript: la guía definitiva. O'Reilly, Sebastopol, California.
  3. ^ Para obtener detalles técnicos, consulte la documentación para desarrolladores de Mozilla sobre LiveConnect.
  4. ^ "442399 – eliminar LiveConnect del árbol". mozilla.org .
  5. ^ "517355 – Restaurar OJI, Liveconnect y JEP en la rama 1.9.2 en OS X". mozilla.org .
  6. ^ "Notas de la versión para la tecnología de complemento Java™ de próxima generación (introducida en Java SE 6 actualización 10)". sun.com .
  7. ^ "Complementos de scripting". Red de desarrolladores de Mozilla .
  8. ^ "Cambio en la compatibilidad con complementos de Acrobat y Reader en navegadores web modernos". Adobe . 8 de febrero de 2016.
  9. ^ "Oracle deja de usar el complemento Java para navegadores y se prepara para su desaparición". Ars Technica . 28 de enero de 2016 . Consultado el 15 de abril de 2016 .
  10. ^ "Los complementos de estilo Netscape no funcionan después de actualizar Internet Explorer". Soporte (3.3 ed.). Microsoft . 27 de julio de 2007.
  11. ^ Giannandrea, J. (4 de septiembre de 2001). "Microsoft rompe los complementos web en Windows XP". meer.net . Archivado desde el original el 16 de octubre de 2007.
  12. ^ "Descripción de la compatibilidad de Internet Explorer con complementos de estilo Netscape". Soporte (3.4 ed.). Microsoft . 31 de enero de 2007.
  13. ^ "Boletín de seguridad de Microsoft MS03-015: crítico". Security TechCenter . Microsoft . 23 de abril de 2003.
  14. ^ "La cuenta regresiva final para NPAPI". Blog de Chromium .
  15. ^ Google comenzará a bloquear la mayoría de los complementos API de Netscape Plug-In en enero de 2014, incluirá en la lista blanca a Silverlight, Unity y otros". TechCrunch . 23 de septiembre de 2013.
  16. ^ "Google planea abandonar la compatibilidad con la API de complementos de Netscape en Chrome, comenzando por bloquear la mayoría de los complementos en enero de 2014". The Next Web . 23 de septiembre de 2013.
  17. ^ "Actualización sobre la descontinuación de NPAPI". Blog de Chromium . 27 de mayo de 2014.
  18. ^ "Firefox 52.0, ver todas las nuevas funciones, actualizaciones y correcciones". Mozilla .
  19. ^ "Firefox dejará de usar complementos NPAPI a finales de 2016, excepto Flash". Compatibilidad de sitios de Firefox . 4 de octubre de 2016. Archivado desde el original el 15 de marzo de 2017 . Consultado el 25 de enero de 2017 .
  20. ^ "¿Por qué Java, Silverlight, Adobe Acrobat y otros complementos ya no funcionan?". Soporte de Mozilla . Archivado desde el original el 2017-03-07 . Consultado el 2017-03-06 .
  21. ^ "1519434 - Deshabilitar el soporte de Flash por defecto en Firefox 69". bugzilla.mozilla.org . Consultado el 14 de enero de 2019 .
  22. ^ "Hoja de ruta de complementos para Firefox: complementos". MDN Web Docs . Consultado el 12 de julio de 2021 .
  23. ^ Jim Mathies (13 de noviembre de 2020). «Eliminación de la compatibilidad del complemento NPAPI en Firefox 85». mozilla.dev.platform (a través de Google Groups) . Consultado el 10 de febrero de 2021 .
  24. ^ "Hoja de ruta de complementos para Firefox". MDN . 19 de enero de 2021. Archivado desde el original el 21 de enero de 2021 . Consultado el 10 de febrero de 2021 .
  25. ^ "Firefox para empresas 91 - Notas de la versión | Ayuda de Firefox para empresas". support.mozilla.org . Consultado el 13 de febrero de 2022 .
  26. ^ "Firefox ESR 78.15.0, ver todas las nuevas funciones, actualizaciones y correcciones". Mozilla . Consultado el 3 de enero de 2022 .
  27. ^ Clover, Juli (17 de septiembre de 2018). "Apple lanza Safari 12 para macOS Sierra y macOS High Sierra". MacRumors .
  28. ^ "Notas de la versión de Safari 14". Documentación para desarrolladores de Apple .
  29. ^ "¿Por qué Oracle Java, Microsoft Silverlight, Adobe Acrobat Reader y otros complementos ya no funcionan?" Complementos NPAPI
  30. ^ "Notas de la versión de SeaMonkey 2.53.7" . Consultado el 14 de marzo de 2021 .
  31. ^ "NPAPI 是重型武器,当别的方法无法到达你的目的时,才建议使用。". NPAPI 插件.
  32. ^ "Compatibilidad con todos los complementos NPAPI (Unity, Silverlight, Flash, Java, complementos de autenticación, etc.)". Características de Basilisk.
  33. ^ "La mayoría de los complementos de terceros diseñados para Mozilla/Netscape también funcionarán con K-Meleon". Complementos de terceros.
  34. ^ "Cargar todos los complementos NPAPI, Java, Silverlight, etc." K-Meleon Hybrid (Goanna sobre Pro).
  35. ^ "Soporte completo y continuo para complementos NPAPI (Java, Silverlight, etc.)". Pale Moon: Detalles técnicos
  36. ^ "Pale Moon es compatible con los complementos NPAPI. A diferencia de Firefox, no vamos a dejar de usar ni eliminar el soporte para este tipo de complementos". Hoja de ruta futura de Pale Moon.
  37. ^ "Utilizamos la arquitectura de complementos NPAPI (al igual que Mozilla), por lo que simplemente instale los complementos normalmente y todo debería funcionar". Preguntas frecuentes de Uzbl.
  38. ^ "Descripción de las tecnologías ActiveX". Soporte . Microsoft . 19 de enero de 2007.
  39. ^ "ppapi". Código de Google . Archivado desde el original el 2 de julio de 2010.
  40. ^ "Introducción: antecedentes y conceptos básicos: los proyectos de Chromium". chromium.org .
  41. ^ "Conceptos - ppapi - Conceptos importantes para trabajar con PPAPI. - API del complemento Pepper - Alojamiento de proyectos de Google". google.com .
  42. ^ "Asociación de Adobe y Google para Flash Player en Linux". adobe.com . Archivado desde el original el 23 de febrero de 2012 . Consultado el 7 de marzo de 2012 .
  43. ^ Campbell, Chris (31 de agosto de 2016). «Novedades de la versión beta: NPAPI de Flash Player para Linux». Blog del equipo de Adobe AIR y Adobe Flash Player . Adobe Systems . Consultado el 8 de septiembre de 2016 .
  44. ^ Anthony Laforge (10 de agosto de 2020). "Cambios en la cronología de compatibilidad de aplicaciones de Chrome". Blog de Chromium .
  • Documentación de desarrollo de complementos Archivado el 3 de agosto de 2012 en Wayback Machine en Mozilla Developer Center, incluida la API NPAPI
  • Un control ActiveX que aloja complementos: un reemplazo de plugin.ocx que se eliminó de Internet Explorer.
  • Libro sobre programación de complementos de Netscape de Zan Oliphant
  • Nixysa: Un marco de generación de código de unión para complementos NPAPI. Licencia Apache 2.0.
  • Tutorial de NPAPI: creación de un complemento para Firefox (segunda parte, tercera parte, cuarta parte)
  • Documentación de extensiones de Opera 15+
Obtenido de "https://es.wikipedia.org/w/index.php?title=NPAPI&oldid=1251825256"