XPCOM - XPCOM
Cross Platform Platform Component Object Model (XPCOM) je napříč platformami model součásti z Mozilla. Je to podobné jako u Microsoftu Komponentní objektový model (COM) a Společná architektura zprostředkovatele požadavků na objekty (CORBA).[1] Má několik jazykové vazby a jazyk popisu rozhraní (IDL) popisy; programátoři tak mohou do rámce zapojit své vlastní funkce a propojit je s dalšími komponentami.
Nejvýznamnější použití XPCOM je v rámci Firefox webový prohlížeč. Mnoho z jeho interních komponent interaguje prostřednictvím rozhraní XPCOM. Firefox navíc umožňoval doplňky rozsáhlý přístup XPCOM, ale ten byl ve Firefoxu 57 odstraněn a nahrazen méně tolerantním WebExtensions API.[2][3] (Tři vidličky Firefox stále podporuje starší možnosti doplňků: Bledý měsíc,[4] Bazilišek,[5] Waterfox.[6])
Model
XPCOM je jednou z hlavních věcí, které vytvářejí Mozilla prostředí aplikace skutečný rámec. Jedná se o vývojové prostředí, které poskytuje následující funkce pro vývojáře softwaru pro různé platformy:
- Správa komponent
- Soubor abstrakce
- Předávání zpráv o objektu
- Správa paměti
Tento komponentový objektový model umožňuje prakticky všechny funkce Gekon k dispozici jako řada komponent nebo opakovaně použitelná platforma knihovny, které jsou přístupné z webový prohlížeč nebo skriptované z jakékoli aplikace Mozilla. Aplikace, které musí přistupovat k různým knihovnám Mozilla XPCOM (síťování, bezpečnostní, DOM atd.) použijte speciální vrstvu XPCOM s názvem XPConnect, který odráží rozhraní knihovny do JavaScript nebo jiné jazyky. XPConnect lepí přední konec na C ++ nebo C komponenty založené na programovacím jazyce v XPCOM a lze jej rozšířit o podporu skriptování pro další jazyky: PyXPCOM[7] již nabízí podporu pro Krajta. PerlConnect a plXPCOM[8] poskytovat podporu pro Perl a v současné době probíhají snahy o přidání Společná jazyková infrastruktura (CLI) a Rubín jazyková podpora pro XPConnect.
Pro vývojáře umožňuje XPCOM zápis komponent C ++, C, JavaScript, Krajta nebo jiné jazyky, pro které byly vytvořeny speciální vazby, a tyto komponenty zkompilovat a spustit na desítkách různých platforem, včetně těchto a dalších, kde je Mozilla podporována.
Flexibilita pro opětovné použití komponent XPCOM z knihovny Gecko a vývoj nových komponent, které běží na různých platformách, usnadňuje rychlý vývoj aplikací a vede k aplikaci, která je produktivnější a snadněji se udržuje. Síťová knihovna je například sada komponent XPCOM, ke kterým může přistupovat a používat kterákoli aplikace Mozilla. Vstupy / výstupy souborů, zabezpečení, správa hesel a profily jsou také samostatnými součástmi XPCOM, které mohou programátoři použít při vývoji svých vlastních aplikací.
Minulé nadužívání
XPCOM přidává spoustu kódu pro seřaďování objekty a v Netscape éra XPCOM byla nadměrně využívána pro interní rozhraní tam, kde to nebylo skutečně nutné, což vedlo k softwarový nadýmání.[9] To byl hlavní důvod, proč v roce 2001 Jablko rozeklaný KHTML, ne Gecko, k vytvoření WebKit motor pro jeho Safari prohlížeč.[10]
Mozilla od té doby vyčistila některé nadýmání XPCOM.[11] Do roku 2008 to v kombinaci s dalšími snahami vyústilo ve velké zlepšení výkonu pro Gekon.[12]
Reference
- ^ Porovnání s COM, GObject, SOM, Objective-C, Windows Runtime
- ^ Poznámky k verzi Firefoxu 57
- ^ Kev Needham (2015-08-21). „Budoucnost vývoje doplňků pro Firefox“. blog.mozilla.org. Citováno 2018-04-02.
- ^ „Budoucí cestovní mapa Pale Moon“. Bledý měsíc. Citováno 2018-04-02.
- ^ „Tým Pale Moon vydává první verzi prohlížeče Basilisk“. ghacks.net. 2017-11-17. Citováno 2018-04-02.
- ^ „Waterfox, jeho dědictví a pohled do budoucnosti“. Waterfox blog. 2018-04-28. Citováno 2018-06-20.
- ^ PyXPCOM
- ^ Projekt Perl XPCOM
- ^ Jorge O. Castro (15. 06. 2004). „Ars Technica si sedá se Scottem Collinsem z Mozilla.org“. Ars Technica. Citováno 2017-02-16.
- ^ Paul Festa (2003-01-14). „Apple snub sting Mozilla“. Sítě CNET. Archivovány od originál dne 2012-10-25. Citováno 2017-02-16.
- ^ „Gecko: DeCOMtamination“.
- ^ Ryan Paul (09.09.2008). „Proč se Mozilla zavázala ke Geckovi, jak roste popularita WebKit“. Citováno 2017-02-16.