XPCOM
Кроссплатформенная объектная модель компонентов ( XPCOM ) — это кроссплатформенная модель компонентов от Mozilla . Она похожа на модель компонентных объектов (COM), общую архитектуру брокера объектных запросов (CORBA) и модель системных объектов (SOM). Он имеет несколько языковых привязок и описания языка описания интерфейса (IDL); таким образом, программисты могут подключать свои собственные функции к платформе и связывать ее с другими компонентами.
Наиболее заметное использование XPCOM происходит в веб-браузере Firefox . Многие из его внутренних компонентов взаимодействуют через интерфейсы XPCOM. Кроме того, Firefox раньше предоставлял надстройкам расширенный доступ к XPCOM, но в 2017 году он был удален и заменен менее разрешительным API WebExtensions . [1] [2] (Две версии Firefox по-прежнему поддерживают дополнительные возможности XPCOM: Pale Moon [3] и Василиск . [4] )
Модель
[ редактировать ]XPCOM — это одна из главных вещей, которая делает среду приложений Mozilla настоящей структурой. Это среда разработки, которая предоставляет разработчику кроссплатформенного программного обеспечения следующие функции:
- Управление компонентами
- Файловая абстракция
- Передача сообщения объекта
- Управление памятью
Эта объектная модель компонентов делает практически все функциональные возможности Gecko доступными в виде ряда компонентов или многоразовых кросс-платформенных библиотек , к которым можно получить доступ из веб-браузера или создать сценарий из любого приложения Mozilla. Приложения, которым необходим доступ к различным библиотекам Mozilla XPCOM ( сети , безопасность , DOM и т. д.), используют специальный уровень XPCOM, называемый XPConnect , который отображает интерфейсы библиотеки в JavaScript или других языках. XPConnect объединяет интерфейс с компонентами на основе языков программирования C++ , C или Rust в XPCOM, и его можно расширить, включив поддержку сценариев для других языков: PyXPCOM. [5] уже предлагает поддержку Python . wxWidgets [6] обеспечить поддержку Perl , и предпринимаются усилия по добавлению инфраструктуры общего языка (CLI) и Ruby поддержки языка для XPConnect.
Разработчикам XPCOM позволяет писать компоненты на C++ , C , JavaScript , Python или других языках, для которых созданы специальные привязки, а также компилировать и запускать эти компоненты на десятках различных платформ, включая эти и другие, где поддерживается Mozilla.
Гибкость повторного использования компонентов XPCOM из библиотеки Gecko и разработки новых компонентов, работающих на разных платформах, способствует быстрой разработке приложений , в результате чего приложение становится более продуктивным и простым в обслуживании. Например, сетевая библиотека представляет собой набор компонентов XPCOM, к которым может получить доступ и использовать их любое приложение Mozilla. Файловый ввод-вывод, безопасность, управление паролями и профили также являются отдельными компонентами XPCOM, которые программисты могут использовать при разработке собственных приложений.
Прошлое чрезмерное использование
[ редактировать ]XPCOM добавляет много кода для сортировки объектов, а в эпоху Netscape XPCOM чрезмерно использовался для внутренних интерфейсов, где это не было действительно необходимо, что приводило к раздуванию программного обеспечения . [7] Это была ключевая причина, по которой в 2001 году Apple создала форк KHTML , а не Gecko, чтобы создать WebKit движок для своего браузера Safari . [8]
С тех пор Mozilla устранила часть раздутого XPCOM. [9] К 2008 году это в сочетании с другими усилиями привело к значительному улучшению производительности Gecko . [10]
Ссылки
[ редактировать ]- ^ Примечания к выпуску Firefox 57
- ^ Кев Нидэм (21 августа 2015 г.). «Будущее разработки дополнений Firefox» . blog.mozilla.org . Проверено 2 апреля 2018 г.
- ^ «Дорожная карта будущего Pale Moon» . Бледная Луна . Проверено 2 апреля 2018 г.
- ^ «Команда Pale Moon выпускает первую версию браузера Basilisk» . ghacks.net . 17.11.2017 . Проверено 2 апреля 2018 г.
- ^ ПиXPCOM [ мертвая ссылка ]
- ^ Кроссплатформенные разработки на основе Perl
- ^ Хорхе О. Кастро (15 июня 2004 г.). «Ars Technica беседует со Скоттом Коллинзом из Mozilla.org» . Арс Техника . Проверено 16 февраля 2017 г.
- ^ Пол Феста (14 января 2003 г.). «Пренебрежение Apple уязвляет Mozilla» . Сети CNET . Архивировано из оригинала 25 октября 2012 г. Проверено 16 февраля 2017 г.
- ^ «Геккон:ДеКОМтаминация» .
- ^ Райан Пол (9 сентября 2008 г.). «Почему Mozilla привержена Gecko по мере роста популярности WebKit» . Проверено 16 февраля 2017 г.