XPCOM is a cross platform component object model, similar to Microsoft COM. It has multiple language bindings, allowing XPCOM components to be used and implemented in JavaScript, Java, and Python in addition to C++. Interfaces in XPCOM are defined in a dialect of IDL called
XPIDL.
XPCOM itself provides a set of core components and classes, e.g. file and memory management, threads, basic data structures (strings, arrays, variants), etc. The majority of XPCOM components are not part of this core set and are provided by other parts of the platform (e.g. Gecko or Necko) or by an application or even by an extension.
Documentation
-
XPCOM API Reference
-
Documentation of core components, interfaces, and functions provided by XPCOM.
-
XPCOM changes in Gecko 2
-
A number of changes in Gecko 2 affect compatibility of XPCOM components. This article details those changes.
-
String, hashtable, array and stream guides
-
Using the basic data structures.
-
XPCOM Glue
-
The XPCOM Glue allows using XPCOM utility functions and classes, without having a dependency on unfrozen parts of XPCOM (xpcom_core.{dll,so,dylib}).
-
Creating XPCOM Components
-
This book provides a tutorial about building an XPCOM component that controls browsing behavior.
-
How to Build an XPCOM Component in Javascript
-
Quick-start guide for writing JavaScript components
-
How to Build an XPCOM Component in C++
-
Don't let extensions in the title fool you - the article is mainly about binary components Linux and Windows HowTo, Windows HowTo, Redux, OS/X HowTo
-
Using XPCOM in JavaScript without leaking
-
Using XPCOM in JavaScript (also known as XPConnect) is an environment where memory management issues are not obvious. Despite this, it's easy to write JavaScript code that leaks, because some of the objects you're dealing with are reference-counted behind the scenes.
View All...
|
- View Mozilla forums...{{DiscussionList("dev-tech-xpcom", "mozilla.dev.tech.xpcom")}}
|
{{LandingPageListSubpages}}
{{CommunityBox("XPCOM", "dev-tech-xpcom", "mozilla.dev.tech.xpcom", "developers", "Tools|https://ted.mielczarek.org/code/mozilla/jscomponentwiz/|JavaScript Component Wizard++https://www.mytools360.com-a.googlepages.com/home#XPComPro|Visual C++ Component Wizard++https://www.yutools.com/wp/tools/yuxpcomwizard/?lang=en|Visual C++ Component Wizard for Visual Studio 2010")}}
{{MakeSimpleQuicklinks("/en-US/docs/XPConnect", "/en-US/docs/Web/JavaScript")}}