XPCOM

XPCOM

XPCOM(Cross Platform Component Object Model)은 Mozilla의 크로스 플랫폼 구성 요소 모델입니다.Microsoft Component Object Model(COM) 및 Common Object Request Broker Architecture(CORBA)[1]와 유사합니다.이것은 여러 언어 바인딩과 인터페이스 기술 언어(IDL) 설명을 특징으로 하므로 프로그래머는 자신의 커스텀 함수를 프레임워크에 삽입하여 다른 컴포넌트와 연결할 수 있습니다.

XPCOM의 가장 중요한 사용 방법은 Firefox 웹 브라우저입니다.내부 컴포넌트의 대부분은 XPCOM 인터페이스를 통해 상호 작용합니다.또한 Firefox는 애드온에 대한 광범위한 XPCOM 액세스를 허용했지만 2017년에 삭제되어 허용도가 낮은 WebExtensions [2][3]API로 대체되었습니다(Firefox의 세 포크는 여전히 레거시 애드온 기능을 지원합니다: Pale Moon,[4] Basilisk,[5] Waterfox).[6]

모델

XPCOM은 Mozilla 애플리케이션 환경을 실제 프레임워크로 만드는 주요 요소 중 하나입니다.크로스 플랫폼 소프트웨어 개발자에게 다음과 같은 기능을 제공하는 개발 환경입니다.

이 컴포넌트 오브젝트 모델은 웹 브라우저에서 액세스하거나 Mozilla 응용 프로그램에서 스크립트로 작성할 수 있는 일련의 컴포넌트 또는 재사용 가능한 크로스 플랫폼 라이브러리로 Gecko의 거의 모든 기능을 제공합니다.다양한 Mozilla XPCOM 라이브러리(네트워킹, 보안, DOM 등)에 액세스해야 하는 응용 프로그램에서는 라이브러리 인터페이스를 JavaScript 또는 기타 언어로 반영하는 XPCOM의 특별한 레이어를 사용합니다.XPConnect는 프론트 엔드를 XPCOM의 C++, C 또는 Rust 프로그래밍 언어 기반 컴포넌트에 연결하여 다른 언어에 대한 스크립트 지원을 포함하도록 확장할 수 있습니다.PyXPCOM은[7] 이미 Python에 대한 지원을 제공하고 있습니다.PerlConnect 및[8] plXPCOM은 Perl을 지원하고 있으며, XPConnect에 대한 Common Language Infrastructure(CLI; 공통 언어 인프라스트럭처) Ruby 언어 지원을 추가하는 작업이 진행 중입니다.

개발자들에게 XPCOM은 C++, C, JavaScript, Python 또는 특별한 바인딩이 생성된 다른 언어로 구성 요소를 작성하고 이러한 구성 요소를 Mozilla가 지원되는 이러한 구성 요소 및 기타 플랫폼을 포함하여 수십 개의 다른 플랫폼에서 컴파일 및 실행할 수 있도록 합니다.

Gecko 라이브러리의 XPCOM 컴포넌트를 재사용하고 다른 플랫폼에서 실행되는 새로운 컴포넌트를 개발할 수 있는 유연성을 통해 신속한 애플리케이션 개발을 촉진하고 보다 생산적이고 유지보수가 용이한 애플리케이션을 만들 수 있습니다.예를 들어 네트워킹 라이브러리는 모든 Mozilla 응용 프로그램에서 액세스하여 사용할 수 있는 XPCOM 구성 요소 세트입니다.파일 I/O, 보안, 비밀번호 관리 및 프로파일도 프로그래머가 자체 애플리케이션 개발에 사용할 수 있는 개별 XPCOM 컴포넌트입니다.

과거의 과잉 사용

XPCOM은 오브젝트를 마샬링하기 위해 많은 코드를 추가하였고 Netscape 시대에는 실제로 필요하지 않은 내부 인터페이스에 XPCOM이 과도하게 사용되어 소프트웨어 부피가 [9]발생하였습니다.이것은 2001년에 애플이 Gecko가 아닌 KHTML자사의 Safari [10]브라우저용 WebKit 엔진을 만들기 위해 포크를 한 중요한 이유였다.

그 후 Mozilla는 XPCOM의 블러트 [11]중 일부를 제거했습니다.2008년까지, 이러한 노력과 다른 노력들이 결합되어 [12]Gecko의 성능이 크게 향상되었습니다.

레퍼런스

  1. ^ COM, GObject, SOM, Objective-C, Windows 런타임과의 비교
  2. ^ 파이어폭스 57 릴리즈 노트
  3. ^ Kev Needham (2015-08-21). "The Future of Developing Firefox Add-ons". blog.mozilla.org. Retrieved 2018-04-02.
  4. ^ "Pale Moon future roadmap". Pale Moon. Retrieved 2018-04-02.
  5. ^ "Pale Moon team releases first version of Basilisk browser". ghacks.net. 2017-11-17. Retrieved 2018-04-02.
  6. ^ "Waterfox, Its Legacy and Looking to the Future". Waterfox blog. 2018-04-28. Retrieved 2018-06-20.
  7. ^ PyXPCOM
  8. ^ Perl XPCOM 프로젝트
  9. ^ Jorge O. Castro (2004-06-15). "Ars Technica sits down with Scott Collins from Mozilla.org". Ars Technica. Retrieved 2017-02-16.
  10. ^ Paul Festa (2003-01-14). "Apple snub stings Mozilla". CNET Networks. Archived from the original on 2012-10-25. Retrieved 2017-02-16.
  11. ^ "Gecko:DeCOMtamination".
  12. ^ Ryan Paul (2008-09-09). "Why Mozilla is committed to Gecko as WebKit popularity grows". Retrieved 2017-02-16.

외부 링크