XPCOM (, «кроссплатформенная объектная модель компонентов») — кроссплатформенная компонентно-ориентированная модель разработки ПО от Mozilla. Она схожа с CORBA и Microsoft COM. XPCOM позволяет писать компоненты на различных языках: C++, JavaScript, Java, и др. Осуществляется это через слой абстракции XPConnect, а интерфейсы классов берутся из бинарных библиотек типов ().

Модель XPCOM - одна из основных вещей, делающих прикладную среду Mozilla актуальным фреймворком. Это среда разработки, предоставляющая разработчику кроссплатформенного программного обеспечения следующие возможности:

Управление компонентами Абстракция файлов Передача объектных сообщений Управление памятью Объектно-компонентная модель делает практически всю функциональность Gecko доступной в виде ряда компонентов, или многократно используемых кроссплатформенных библиотек, доступ к которым можно получить из веб-браузера или с помощью сценариев из любого приложения Mozilla. Приложения, которым необходимо обращаться к различным библиотекам Mozilla XPCOM (сетевым, безопасности, DOM и т.д.), используют специальный слой XPCOM под названием XPConnect, который отражает интерфейсы библиотек на JavaScript или других языках. XPConnect приклеивает фронт-энд к компонентам XPCOM, основанным на языках программирования C++, C или Rust, и может быть расширен для включения поддержки сценариев для других языков: 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.

С тех пор компания Mozilla частично устранила раздутость XPCOM. К 2008 году в сочетании с другими усилиями это привело к значительному повышению производительности Gecko.

Примечания

Ссылки на статьи по теме Основной ресурс (en) (русский раздел нуждается в переводе)

XPCOM Part 1: An introduction to XPCOM, переводarchive XPCOM Part 2: XPCOM component basics, переводarchive XPCOM Part 3: Setting up XPCOM, переводarchive XPCOM Part 4, переводarchive XPCOM Part 5: Implementation

Категория:Mozilla Категория:API