Кросс-платформенная компонентная объектная модель (XPCOM ) - это кроссплатформенная компонентная модель из Mozilla. Он похож на Microsoft Component Object Model (COM) и Common Object Request Broker Architecture (CORBA). Он имеет несколько привязок языков и описаний языка описания интерфейса (IDL); таким образом программисты могут включать свои пользовательские функции в структуру и соединять ее с другими компонентами.
Наиболее широко XPCOM используется в веб-браузере Firefox. Многие из его внутренних компонентов взаимодействуют через интерфейсы XPCOM. Кроме того, Firefox раньше разрешал надстройкам расширенный доступ к XPCOM, но это было удалено в Firefox 57 и заменено менее разрешающим WebExtensions API. (Три вилки Firefox по-прежнему поддерживают устаревшие надстройки: Pale Moon, Basilisk, Waterfox.)
XPCOM - одна из основных составляющих Mozilla среда приложения актуальная структура. Это среда разработки, которая предоставляет разработчику кроссплатформенного программного обеспечения следующие функции:
Эта объектная модель компонента делает практически вся функциональность Gecko доступна в виде серии компонентов или многоразовых межплатформенных библиотек, к которым можно получить доступ из веб-браузера или через скрипт из любое приложение Mozilla. Приложения, которые должны обращаться к различным библиотекам Mozilla XPCOM (сеть, безопасность, DOM и т. Д.), Используют специальный уровень XPCOM под названием XPConnect, который отражает интерфейсы библиотеки на JavaScript или другие языки. XPConnect приклеивает интерфейс к компонентам на основе языка программирования C ++ или C в XPCOM, и его можно расширить, включив поддержку сценариев для других языков: PyXPCOM уже предлагает поддержку Python. PerlConnect и plXPCOM обеспечивают поддержку Perl, и в настоящее время предпринимаются попытки добавить поддержку языка Common Language Infrastructure (CLI) и Ruby для XPConnect.
Для разработчиков XPCOM позволяет писать компоненты на C ++, C, JavaScript, Python или других языках, для которых были созданы специальные привязки, а также компилировать и запускать их компоненты на десятках различных платформ, включая те и другие, на которых поддерживается Mozilla.
Гибкость повторного использования компонентов XPCOM из библиотеки Gecko и разработки новых компонентов, работающих на разных платформах, облегчает быструю разработку приложений и приводит к тому, что приложение становится более продуктивным и простым в обслуживании. Сетевая библиотека, например, представляет собой набор компонентов XPCOM, к которым можно получить доступ и которые могут использоваться любым приложением Mozilla. Файловый ввод-вывод, безопасность, управление паролями и профили также являются отдельными компонентами XPCOM, которые программисты могут использовать при разработке собственных приложений.
XPCOM добавляет много кода для маршалинга объектов, а в эпоху Netscape XPCOM чрезмерно использовался для внутренних интерфейсов, где он не использовался. не является действительно необходимым, что приводит к раздуванию программного обеспечения. Это была ключевая причина, по которой в 2001 году Apple разделила KHTML, а не Gecko, чтобы создать движок WebKit для своего Safari. browser.
С тех пор Mozilla устранила некоторые излишки XPCOM. К 2008 году это в сочетании с другими усилиями привело к значительному повышению производительности для Gecko.