<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=XPCOM</id>
	<title>XPCOM - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=XPCOM"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=XPCOM&amp;action=history"/>
	<updated>2026-07-13T15:56:55Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=XPCOM&amp;diff=2801163&amp;oldid=prev</id>
		<title>imported&gt;SchlurcherBot：​Bot: http → https</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=XPCOM&amp;diff=2801163&amp;oldid=prev"/>
		<updated>2025-12-13T16:02:27Z</updated>

		<summary type="html">&lt;p&gt;Bot: http → https&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{NoteTA&lt;br /&gt;
|G1=IT&lt;br /&gt;
|1=zh-hans:内存管理;zh-hant:記憶體管理;zh-tw:記憶體管理;zh-hk:記憶體管理;zh-sg:内存管理;zh-cn:内存管理;&lt;br /&gt;
}}&lt;br /&gt;
{{校对翻译}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;跨平台组件对象模型&amp;#039;&amp;#039;&amp;#039;（{{langx|en|&amp;#039;&amp;#039;&amp;#039;Cross Platform Component Object Model&amp;#039;&amp;#039;&amp;#039;}}，简称&amp;#039;&amp;#039;&amp;#039;XPCOM&amp;#039;&amp;#039;&amp;#039;）是[[Mozilla]]的一个[[跨平台]][[基于组件的软件工程|组件模型]]。它类似微软的[[组件对象模型]]（COM）和[[CORBA|公共对象请求代理体系结构]]（CORBA）。&amp;lt;ref&amp;gt;[//en.wikipedia.org/wiki/IBM_System_Object_Model#Comparison_of_support_for_compiled_class_libraries Comparison with COM, GObject, SOM, Objective-C, Windows Runtime]&amp;lt;/ref&amp;gt;它有多个[[綁紮|语言绑定]]和[[接口描述语言]]（IDL）描述符，因此程序员可以将自己的自定义函数插入到框架中并与其他组件连接。&lt;br /&gt;
&lt;br /&gt;
2015年8月，Mozilla宣布将放弃为创建[[附加组件_(Mozilla)|Firefox附加组件]]而使用的XPCOM，未来将支持[[WebExtensions]]。&amp;lt;ref&amp;gt;{{Cite web|url=https://blog.mozilla.org/addons/2015/08/21/the-future-of-developing-firefox-add-ons/|title=The Future of Developing Firefox Add-ons|accessdate=2015-09-07|author=Kev Needham|date=2015-08-21|archive-date=2015-09-05|archive-url=https://web.archive.org/web/20150905081430/https://blog.mozilla.org/addons/2015/08/21/the-future-of-developing-firefox-add-ons/|dead-url=no}}&amp;lt;/ref&amp;gt;Firefox的[[复刻 (软件工程)|分支]][[苍月浏览器]]（Pale Moon）则将继续无限期的支持XPCOM。&amp;lt;ref&amp;gt;{{Cite web|url=https://www.palemoon.org/roadmap.shtml|title=Pale Moon future roadmap|accessdate=2016-06-08|date=2016-05-09|publisher=Pale Moon|archive-date=2021-04-01|archive-url=https://web.archive.org/web/20210401105732/https://www.palemoon.org/roadmap.shtml}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 模型 ==&lt;br /&gt;
XPCOM的一项主要目的是将[[Mozilla]]应用程序环境做成一个实际的框架。它为跨平台软件的开发人员提供一个有下列特性的开发环境：&lt;br /&gt;
* 组件管理&lt;br /&gt;
* 文件抽象&lt;br /&gt;
* [[訊息傳遞 (軟體)|对象消息传递]]&lt;br /&gt;
* [[記憶體管理|内存管理]]&lt;br /&gt;
组件对象模型使[[Gecko]]的几乎所有功能可作为一系列组件或可重用的跨平台[[函式庫]]使用，它可以通过[[网页浏览器]]或任何Mozilla应用程序的脚本使用。应用程序必须访问各个Mozilla XPCOM程式库（[[计算机网络|网络]]、[[计算机安全|安全]]、[[文档对象模型|DOM]]等）以使用XPCOM的一个被称为[[NPAPI|XPConnect]]的特殊层，这将程式库反射到[[JavaScript]]或其他语言。XPConnect基于XPCOM中的组件，将前端胶合为[[C++]]或[[C语言|C]]编程语言，并且可以扩展为包含对其他脚本语言的支持：{{tsl|en|PyXPCOM}}已提供对[[Python]]的支持。PerlConnect&amp;lt;ref&amp;gt;{{Cite web |url=http://www.mozilla.org/owners.html#perlconnect |title=module ownership governance system |access-date=2016-12-12 |archive-date=2009-07-01 |archive-url=https://web.archive.org/web/20090701093656/http://www.mozilla.org/owners.html#perlconnect }}&amp;lt;/ref&amp;gt;和plXPCOM&amp;lt;ref&amp;gt;{{Cite web |url=http://plxpcom.mozdev.org/ |title=Perl XPCOM project |access-date=2016-12-12 |archive-date=2018-12-04 |archive-url=https://web.archive.org/web/20181204114245/http://plxpcom.mozdev.org/ }}&amp;lt;/ref&amp;gt; 提供对[[Perl]]的支持，并且仍在努力增加[[通用语言架构]]（CLI）和[[Ruby]]语言对XPConnect支持。&lt;br /&gt;
&lt;br /&gt;
对开发者来说，XPCOM允许使用[[C++]]、[[C语言|C]]、[[JavaScript]]、[[Python]]等已提供“绑定”的语言编写组件，并可在几十个Mozilla支持的平台上编译和运行这些组件。&lt;br /&gt;
&lt;br /&gt;
灵活的重用来自Gecko程式库的XPCOM组件和开发能运行在不同平台的新组件有助于[[快速應用程式開發]]，并能使应用程序更高效和易于维护。例如，XPCOM组件集中的网络程式库就可以被任何Mozilla应用程序访问和使用。文件I/O、安全、密码管理以及配置文件也都有单独的XPCOM组件，程序员可以在开发自己的应用程序时使用。&lt;br /&gt;
&lt;br /&gt;
== 批评 ==&lt;br /&gt;
XPCOM为不同使用上下文（例如不同语言）下的{{tsl|en|Marshalling (computer science)||编组}}对象添加了大量代码。这导致XPCOM中基于系统的代码出现{{tsl|en|Software bloat||膨胀}}。这也是[[蘋果公司]][[复刻 (软件工程)|复刻]][[KHTML]]（现在已被多个网页浏览器使用，包括[[Safari]]）来创建[[WebKit]]引擎而非在其浏览器中采用基于XPCOM的[[Gecko]]渲染引擎的原因之一。&amp;lt;ref&amp;gt;{{Cite web|url=http://arstechnica.com/open-source/news/2004/06/collins-interview.ars|title=Ars Technica sits down with Scott Collins from Mozilla.org|author=Jorge O. Castro|date=June 15, 2004|publisher=[[Ars Technica]]|accessdate=2016-12-12|archive-date=2011-12-23|archive-url=https://web.archive.org/web/20111223065820/http://arstechnica.com/open-source/news/2004/06/collins-interview.ars|dead-url=no}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite web|url=http://arstechnica.com/open-source/news/2008/09/mozilla-committed-to-gecko.ars|title=Why Mozilla is committed to Gecko as WebKit popularity grows|author=Ryan Paul|date=September 9, 2008|publisher=[[Ars Technica]]|accessdate=2016-12-12|archive-date=2012-02-11|archive-url=https://web.archive.org/web/20120211144043/http://arstechnica.com/open-source/news/2008/09/mozilla-committed-to-gecko.ars|dead-url=no}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gecko的开发人员目前正在尝试减少Gecko排版引擎中XPCOM的过剩使用。此过程在Mozilla内通常被称为&amp;#039;&amp;#039;deCOMtamination&amp;#039;&amp;#039;。&amp;lt;ref&amp;gt;{{Cite web|url=https://wiki.mozilla.org/Gecko:DeCOMtamination|title=Gecko:DeCOMtamination|access-date=2016-12-12|archive-date=2021-03-29|archive-url=https://web.archive.org/web/20210329020549/https://wiki.mozilla.org/Gecko:DeCOMtamination}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 参见 ==&lt;br /&gt;
{{Portal|自由软件}}&lt;br /&gt;
* [[XULRunner]] – XULRunner是一个运行时，它的用途是启动多个像Firefox和Thunderbird那样的XUL + XPCOM的应用程序。&lt;br /&gt;
&lt;br /&gt;
== 参考资料 ==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
{{Wiktionary}}&lt;br /&gt;
* [https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference XPCOM API Reference] {{Wayback|url=https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference |date=20210614222443 }}&lt;br /&gt;
* [https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM XPCOM Project Homepage] {{Wayback|url=https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM |date=20210622201138 }}&lt;br /&gt;
* [http://books.mozdev.org/html/mozilla-chp-8.html A slightly out-of-date but still useful book that talks about XPCOM] {{Wayback|url=http://books.mozdev.org/html/mozilla-chp-8.html |date=20090429054406 }}&lt;br /&gt;
* [https://www.codeproject.com/Articles/87465/A-Simple-XPCOM-Tutorial A Simple XPCOM Tutorial] {{Wayback|url=https://www.codeproject.com/Articles/87465/A-Simple-XPCOM-Tutorial |date=20211229171437 }}&lt;br /&gt;
{{Mozilla}}&lt;br /&gt;
&lt;br /&gt;
[[Category:应用程序接口]]&lt;br /&gt;
[[Category:Mozilla]]&lt;/div&gt;</summary>
		<author><name>imported&gt;SchlurcherBot</name></author>
	</entry>
</feed>