El modelo de objetos componentes multiplataforma ( XPCOM ) es un modelo de componentes multiplataforma de Mozilla . Es similar al Modelo de objetos componentes (COM) de Microsoft y la Arquitectura de agente de solicitud de objetos comunes (CORBA). [1] Cuenta con enlaces de múltiples idiomas y descripciones de lenguaje de descripción de interfaz (IDL); por lo tanto, los programadores pueden conectar sus funciones personalizadas en el marco y conectarlo con otros componentes.
El uso más destacado de XPCOM se encuentra en el navegador web Firefox . Muchos de sus componentes internos interactúan a través de interfaces XPCOM. Además, Firefox solía permitir a los complementos un amplio acceso a XPCOM, pero esto se eliminó en 2017 y se reemplazó con la API WebExtensions menos permisiva . [2] [3] (Tres bifurcaciones de Firefox aún admiten la capacidad de complemento heredado: Pale Moon , [4] Basilisk , [5] Waterfox . [6] )
El modelo
XPCOM es una de las cosas principales que hace que el entorno de aplicaciones de Mozilla sea un marco real. Es un entorno de desarrollo que proporciona las siguientes características para el desarrollador de software multiplataforma:
- Gestión de componentes
- Abstracción de archivos
- Paso de mensaje de objeto
- Gestión de la memoria
Este modelo de objeto componente hace que prácticamente toda la funcionalidad de Gecko esté disponible como una serie de componentes, o bibliotecas multiplataforma reutilizables , a las que se puede acceder desde el navegador web o mediante un script desde cualquier aplicación de Mozilla. Las aplicaciones que deben acceder a las diversas bibliotecas XPCOM de Mozilla ( redes , seguridad , DOM , etc.) utilizan una capa especial de XPCOM llamada XPConnect , que refleja las interfaces de la biblioteca en JavaScript u otros lenguajes. XPConnect pega el front-end a los componentes basados en lenguaje de programación C ++ o C en XPCOM, y se puede ampliar para incluir soporte de scripting para otros lenguajes: PyXPCOM [7] ya ofrece soporte para Python . PerlConnect y plXPCOM [8] brindan soporte para Perl , y se están realizando esfuerzos para agregar Common Language Infrastructure (CLI) y soporte de lenguaje Ruby para XPConnect.
Para los desarrolladores, XPCOM permite escribir componentes en C ++ , C , JavaScript , Python u otros lenguajes para los que se han creado enlaces especiales, y compilar y ejecutar esos componentes en docenas de plataformas diferentes, incluidas estas y otras en las que se admite Mozilla.
La flexibilidad para reutilizar los componentes XPCOM de la biblioteca Gecko y desarrollar nuevos componentes que se ejecutan en diferentes plataformas facilita el desarrollo rápido de aplicaciones y da como resultado una aplicación que es más productiva y más fácil de mantener. La biblioteca de redes, por ejemplo, es un conjunto de componentes XPCOM a los que puede acceder y utilizar cualquier aplicación de Mozilla. La E / S de archivos, la seguridad, la gestión de contraseñas y los perfiles también son componentes XPCOM independientes que los programadores pueden utilizar en el desarrollo de su propia aplicación.
Uso excesivo pasado
XPCOM añade una gran cantidad de código de cálculo de referencias de objetos, y en el Netscape era XPCOM fue usado en exceso para las interfaces internas en las que no era realmente necesario, lo que resulta en software inflado . [9] Esta fue una razón clave por la que en 2001 Apple bifurcó KHTML , no Gecko, para crear el motor WebKit para su navegador Safari . [10]
Desde entonces, Mozilla ha limpiado parte de la hinchazón de XPCOM. [11] Para 2008, esto combinado con otros esfuerzos resultó en grandes mejoras de rendimiento para Gecko . [12]
Referencias
- ^ Comparación con COM, GObject, SOM, Objective-C, Windows Runtime
- ^ Notas de la versión de Firefox 57
- ↑ Kev Needham (21 de agosto de 2015). "El futuro del desarrollo de complementos de Firefox" . blog.mozilla.org . Consultado el 2 de abril de 2018 .
- ^ "Hoja de ruta futura de Pale Moon" . Luna pálida . Consultado el 2 de abril de 2018 .
- ^ "El equipo de Pale Moon lanza la primera versión del navegador Basilisk" . ghacks.net . 2017-11-17 . Consultado el 2 de abril de 2018 .
- ^ "Waterfox, su legado y mirando al futuro" . Blog de Waterfox . 2018-04-28 . Consultado el 20 de junio de 2018 .
- ^ PyXPCOM
- ^ Proyecto Perl XPCOM
- ^ Jorge O. Castro (15 de junio de 2004). "Ars Technica se sienta con Scott Collins de Mozilla.org" . Ars Technica . Consultado el 16 de febrero de 2017 .
- ^ Paul Festa (2003-01-14). "Apple desaire pica a Mozilla" . Redes CNET . Archivado desde el original el 25 de octubre de 2012 . Consultado el 16 de febrero de 2017 .
- ^ "Gecko: Descontaminación" .
- ^ Ryan Paul (9 de septiembre de 2008). "Por qué Mozilla está comprometido con Gecko a medida que crece la popularidad de WebKit" . Consultado el 16 de febrero de 2017 .
enlaces externos
- Referencia de la API de XPCOM
- Página de inicio del proyecto XPCOM
- Un libro un poco desactualizado pero útil que habla sobre XPCOM
- Un sencillo tutorial de XPCOM