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.
Das Modell
XPCOM ist eines von vielen Dingen, die die Mozilla-Anwendungsumgebung zu einem Framework macht. 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, auf die via Webbrowser zugegriffen werden kann oder die von jeder Mozilla-Anwendung aus gescripted werden können. Anwendungen, die auf die verschiedenen XPCOM-Bibliotheken (Networking, Security, DOM, etc.) zugreifen wollen, benutzen einen XPConnect genannte serielle Schicht von XPCOM, die die verschiedenen Bibliothekenschnittstellen nach JavaScript (oder anderen (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- und Ruby-Sprachunterstützung für XPConnect zur Verfügung zu stellen (Stand Januar 2007).
Mit XPCOM lassen sich Komponenten in C++, C, JavaScript, Python oder anderen Sprachen, für die spezielle Anbindungen geschaffen wurden, schreiben und compilieren. Diese Komponenten laufen auf dutzenden verschiedenen Plattformen.
Die Flexibilität, die XP-Komponenten der Gecko-Bibilithek wiederzuverwenden und neue Komponenten zu entwickeln, die auf verschiedenen Plattformen laufen, erleichtert Rapid Application Development. Die Netzwerk-Komponenten zum Beispiel können von jeder Mozilla-Anwendung benutzt werden. File I/O, Security, Password Management und Profile sind ebenso separate XPCOM-Komponenten, die ein Entwickler in seiner eigenen Anwendung benutzen kann.