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 a la Arquitectura de agente de solicitud de objetos común (CORBA). [1] Presenta múltiples enlaces de idiomas y descripciones de lenguaje de descripción de interfaz (IDL); por lo tanto, los programadores pueden conectar sus funciones personalizadas al marco y conectarlo con otros componentes.
El uso más destacado de XPCOM es dentro del 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] (Dos bifurcaciones de Firefox aún admiten la capacidad adicional de XPCOM: Pale Moon [4] y Basilisk . [5] )
XPCOM es una de las principales cosas que hacen que el entorno de aplicaciones Mozilla sea un marco real. Es un entorno de desarrollo que proporciona las siguientes características para el desarrollador de software multiplataforma:
Este modelo de objetos componentes hace que prácticamente todas las funciones de Gecko estén disponibles como una serie de componentes, o bibliotecas multiplataforma reutilizables , a las que se puede acceder desde el navegador web o mediante script desde cualquier aplicación Mozilla. Las aplicaciones que deben acceder a las distintas 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 la interfaz a los componentes basados en el lenguaje de programación C++ , C o Rust en XPCOM, y se puede ampliar para incluir soporte de secuencias de comandos para otros lenguajes: PyXPCOM [6] ya ofrece soporte para Python . PerlConnect y plXPCOM [7] brindan soporte para Perl , y se están realizando esfuerzos para agregar soporte para Common Language Infrastructure (CLI) y Ruby para XPConnect.
Para los desarrolladores, XPCOM permite escribir componentes en C++ , C , JavaScript , Python u otros lenguajes para los cuales se han creado enlaces especiales, y compilar y ejecutar esos componentes en docenas de plataformas diferentes, incluidas éstas y otras donde se admite Mozilla.
La flexibilidad para reutilizar los componentes XPCOM de la biblioteca Gecko y desarrollar nuevos componentes que se ejecuten en diferentes plataformas facilita el desarrollo rápido de aplicaciones y da como resultado una aplicación 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 cualquier aplicación Mozilla puede acceder y utilizar. La E/S de archivos, la seguridad, la administración de contraseñas y los perfiles también son componentes XPCOM separados que los programadores pueden usar en el desarrollo de sus propias aplicaciones.
XPCOM agrega una gran cantidad de código para ordenar objetos, y en la era de Netscape , XPCOM se usaba en exceso para interfaces internas donde no era realmente necesario, lo que resultaba en un exceso de software . [8] 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 . [9]
Desde entonces, Mozilla ha limpiado parte del problema de XPCOM. [10] En 2008, esto, combinado con otros esfuerzos, resultó en grandes mejoras de rendimiento para Gecko . [11]