XPCOM
Cross Platform Component Object Model (XPCOM) is a
The most prominent usage of XPCOM is within the
)Model
XPCOM is one of the main things making the Mozilla application environment an actual framework. It is a development environment that provides the following features for the cross-platform software developer:
- Component management
- File abstraction
- Object message passing
- Memory management
This component object model makes virtually all of the functionality of
For developers, XPCOM allows writing components in C++, C, JavaScript, Python, or other languages for which special bindings have been created, and compile and run those components on dozens of different platforms, including these and others where Mozilla is supported.
The flexibility to reuse the XPCOM components from the Gecko library and develop new components that run on different platforms facilitates rapid application development and results in an application that is more productive and easier to maintain. The networking library, for example, is a set of XPCOM components that can be accessed and used by any Mozilla application. File I/O, security, password management, and profiles are also separate XPCOM components that programmers can use in their own application development.
Past overuse
XPCOM adds a lot of code for marshalling objects, and in the Netscape era XPCOM was overused for internal interfaces where it wasn't truly necessary, resulting in software bloat.[8] This was a key reason why in 2001 Apple forked KHTML, not Gecko, to create the WebKit engine for its Safari browser.[9]
Mozilla has since cleaned up some of the XPCOM bloat.[10] By 2008, this combined with other efforts resulted in big performance improvements for Gecko.[11]
References
- ^ Comparison with COM, GObject, SOM, Objective-C, Windows Runtime
- ^ Firefox 57 release notes
- ^ Kev Needham (2015-08-21). "The Future of Developing Firefox Add-ons". blog.mozilla.org. Retrieved 2018-04-02.
- Pale Moon. Retrieved 2018-04-02.
- ^ "Pale Moon team releases first version of Basilisk browser". ghacks.net. 2017-11-17. Retrieved 2018-04-02.
- ^ PyXPCOM[dead link]
- ^ Perl Based Cross Platforms Developments
- ^ Jorge O. Castro (2004-06-15). "Ars Technica sits down with Scott Collins from Mozilla.org". Ars Technica. Retrieved 2017-02-16.
- CNET Networks. Archived from the originalon 2012-10-25. Retrieved 2017-02-16.
- ^ "Gecko:DeCOMtamination".
- ^ Ryan Paul (2008-09-09). "Why Mozilla is committed to Gecko as WebKit popularity grows". Retrieved 2017-02-16.