Cross Platform Component Object Model
# Cross Platform Component Object Model

Cross Platform Component Object Model (XPCOM) ist ein plattformunabhängiges Komponentenmodell von Mozilla. Es funktioniert ähnlich wie CORBA oder COM mit Hilfe von Schnittstellen. Es verfügt über verschiedene Sprachanbindungen und Schnittstellenbeschreibungen, so dass Programmierer ihre eigene Funktionalität in das Framework einbauen und mit anderen Komponenten verbinden können. Mit Firefox 57 (November 2017) wurde die Unterstützung für XPCOM entfernt und durch WebExtensions ersetzt.

## Das Modell

Das Cross Platform Component Object Model ist eines von vielen Dingen, die die Mozilla-Anwendungsumgebung zu einem Framework machen. Es ist eine Entwicklungsumgebung, die folgende Merkmale für Entwickler plattformübergreifender Software liefert:

* Komponentenverwaltung
* Datei-Abstraktion
* Nachrichtenaustausch
* Speicherverwaltung

Dieses Komponentenmodell macht fast die gesamte Funktionalität von Gecko durch eine Menge von Komponenten oder alternativ als wiederverwendbare plattformübergreifend verfügbare Bibliotheken verfügbar. Anwendungen, die auf die verschiedenen XPCOM-Bibliotheken (Networking, Security, DOM etc.) zugreifen wollen, benutzen eine XPConnect genannte serielle Schicht von XPCOM, die die verschiedenen Bibliotheksschnittstellen nach JavaScript (oder andere (Skript-)Sprachen) reflektiert. XPConnect verbindet das Frontend mit C++- oder C-basierten Komponenten in XPCOM, und es kann einschließlich Scripting-Unterstützung für andere Sprachen erweitert werden: PyXPCOM bietet Support für Python, PerlConnect und plXPCOM liefern Unterstützung für Perl, und es werden Anstrengungen unternommen, .Net-Framework- und Ruby-Sprachunterstützung für XPConnect zur Verfügung zu stellen (Stand Januar 2007).

Mit XPCOM lassen sich Komponenten in Sprachen, für die spezielle Anbindungen geschaffen wurden, schreiben und kompilieren. Diese Komponenten laufen auf vielen verschiedenen Plattformen.

Die Flexibilität, die XP-Komponenten der Gecko-Bibliothek wiederzuverwenden und neue Komponenten zu entwickeln, die auf verschiedenen Plattformen laufen, wird durch das Rapid Application Development erleichtert. Die Netzwerk-Komponenten zum Beispiel können von jeder Mozilla-Anwendung benutzt werden. Ein-/Ausgabe, Security, Passwort-Management und Profile sind ebenso separate XPCOM-Komponenten, die ein Entwickler in seiner eigenen Anwendung benutzen kann.

