맨위로가기

XPCOM

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

XPCOM은 모질라 애플리케이션 환경을 위한 프레임워크를 구성하는 주요 요소 중 하나이다. 구성 요소 관리, 파일 추상화, 객체 메시지 전달, 메모리 관리 등의 기능을 제공하여 크로스 플랫폼 소프트웨어 개발을 지원한다. XPCOM은 게코의 기능을 재사용 가능한 컴포넌트나 라이브러리로 만들어 웹 브라우저에서 접근하거나 모질라 응용 프로그램에서 스크립트로 작성할 수 있게 한다. XPConnect를 통해 자바스크립트 또는 다른 언어로 라이브러리 인터페이스를 연결하며, 파이썬, 펄 등 다양한 프로그래밍 언어를 지원한다. 과거에는 내부 인터페이스에 과도하게 사용되어 소프트웨어 팽창을 초래하기도 했지만, 모질라는 XPCOM 팽창의 일부를 정리했다. 모노에서의 COM 상호 운용은 MS COM 및 XPCOM을 기반으로 한다. 모질라는 파이어폭스와 썬더버드에서 XUL/XPCOM 기반 애드온의 단계적 폐지를 발표하고, WebExtensions를 사용하도록 전환했다.

더 읽어볼만한 페이지

  • 모질라 - 모질라 재단
    모질라 재단은 넷스케이프 사업부 축소 후 모질라 프로젝트의 독립 운영을 위해 2003년 설립된 비영리 단체로, 파이어폭스 개발 지원, 개방형 웹 생태계 유지, 그리고 인터넷 자유 수호를 위한 활동을 전개한다.
  • 모질라 - 모질라 차이나
    모질라 차이나는 한국에서의 역사와 관련된 주제를 다루며, 특정 시대별 주요 사건 및 변화, 쟁점, 사회적 영향, 관련 인물 및 단체, 그리고 미래에 대한 내용을 포함한다.
  • API - Tk (소프트웨어)
    Tk는 Tcl 스크립팅 언어의 크로스 플랫폼 GUI 툴킷으로, 다양한 플랫폼 이식과 여러 프로그래밍 언어 바인딩을 지원하며 사용자 정의 가능한 위젯들을 제공한다.
  • API - ASIO
    ASIO는 독일 스타인버그에서 개발한 오디오 입출력 API 규격으로, 낮은 지연 시간과 멀티 채널 I/O를 지원하며 윈도우 운영체제에서 주로 사용된다.
XPCOM

2. 모델

XPCOM은 모질라 애플리케이션 환경을 구성하는 핵심 요소이자 개발 환경으로, 다음과 같은 기능을 제공한다.



XPCOM은 게코의 거의 모든 기능을 일련의 컴포넌트 또는 재사용 가능한 교차 플랫폼 라이브러리로 만들어, 웹 브라우저에서 접근하거나 모질라 응용 프로그램에서 스크립트로 작성할 수 있게 해준다.

2. 1. 다양한 프로그래밍 언어 지원

XPCOM은 개발자가 C++, C, 자바스크립트, 파이썬 등 다양한 프로그래밍 언어를 사용하여 컴포넌트를 작성하고, 모질라가 지원되는 여러 플랫폼에서 해당 컴포넌트를 컴파일하고 실행할 수 있도록 지원한다.[5]

XPConnect라는 XPCOM의 특수 계층을 통해 다양한 모질라 XPCOM 라이브러리(네트워킹, 보안, DOM 등)에 접근하는 응용 프로그램은 라이브러리 인터페이스를 자바스크립트나 다른 언어로 반사할 수 있다. PyXPCOM[5]은 파이썬을, wxWidgets[6]을 지원하며, CLI 및 루비 언어 지원을 추가하기 위한 노력도 진행 중이다.

2. 2. 게코 라이브러리 활용

XPCOM은 게코의 기능을 재사용 가능한 교차 플랫폼 라이브러리로 만들어 웹 브라우저나 모질라 응용 프로그램에서 스크립트로 접근할 수 있게 해준다.

XPConnect는 다양한 모질라 XPCOM 라이브러리(네트워킹, 보안, DOM 등)에 접근해야 하는 응용 프로그램에서 사용되는 XPCOM의 특수 계층이다. XPConnect는 라이브러리 인터페이스를 자바스크립트나 다른 언어로 반사한다. 프런트 엔드를 XPCOM의 C++, C, 러스트 기반 컴포넌트에 연결하며, 다른 언어 지원을 위해 확장될 수 있다. PyXPCOM[5]은 파이썬을, wxWidgets[6]을 지원하며, 공통 언어 인프라 (CLI) 및 루비 지원 추가 작업도 진행 중이다.

개발자는 XPCOM을 통해 C++, C, 자바스크립트, 파이썬 등으로 컴포넌트를 작성하고, 모질라가 지원되는 여러 플랫폼에서 컴파일하고 실행할 수 있다.

게코 라이브러리의 XPCOM 컴포넌트 재사용 및 새 컴포넌트 개발 유연성은 빠른 애플리케이션 개발을 가능하게 하여 생산성과 유지보수성이 높은 응용 프로그램을 만들 수 있게 한다. 예를 들어, 네트워킹 라이브러리는 모든 모질라 응용 프로그램에서 접근 가능한 XPCOM 컴포넌트 집합이다. 파일 I/O, 보안, 암호 관리, 프로필도 별도 XPCOM 컴포넌트로 제공되어 프로그래머가 자체 응용 프로그램 개발에 활용할 수 있다.

3. 과거 과도한 사용

XPCOM은 객체 마샬링을 위해 많은 코드를 추가했으며, 넷스케이프 시대에 XPCOM은 실제로 필요하지 않은 내부 인터페이스에 과도하게 사용되어 소프트웨어 팽창을 초래했다.[7] 이는 2001년 애플이 게코가 아닌 KHTML을 포크하여 사파리 브라우저용 웹킷 엔진을 만든 주요 이유였다.[8]

이후 모질라는 XPCOM 팽창의 일부를 정리했다.[9] 2008년까지, 이는 다른 노력과 결합되어 게코의 큰 성능 향상을 가져왔다.[10]

4. Mono의 COM 상호 운용

모노에서의 COM 상호 운용은 MS COM 및 XPCOM을 기반으로 한다.[11][12]

5. XUL/XPCOM 기반 애드온의 단계적 폐지

Mozilla는 파이어폭스와 썬더버드에서 XUL/XPCOM을 이용한 애드온(확장 기능)의 SDK를 제공해 왔지만, XUL/XPCOM 기반 애드온의 단계적인 폐지를 표명했다. 파이어폭스 퀀텀 57에서는 전면적으로 폐지되었으며[13][14][15], 썬더버드에서도 바이너리 XPCOM 등 일부가 폐지되었다. 파이어폭스나 썬더버드의 업그레이드를 했을 때, 지금까지 사용해 온 애드온("구식 애드온"이라고 불림)이 사용할 수 없게 되는 현상은 이것에 기인할 가능성이 높다.

파이어폭스 퀀텀의 확장 기능에서는 XUL/XPCOM 대신 Microsoft Edge, Google Chrome, Opera 등에서 지원하는 WebExtensions[16]를 사용한다.

참조

[1] 웹사이트 Firefox 57 release notes https://www.mozilla.[...]
[2] 웹사이트 The Future of Developing Firefox Add-ons https://blog.mozilla[...] 2018-04-02
[3] 웹사이트 Pale Moon future roadmap https://www.palemoon[...] Pale Moon 2018-04-02
[4] 웹사이트 Pale Moon team releases first version of Basilisk browser https://www.ghacks.n[...] 2018-04-02
[5] 웹사이트 PyXPCOM https://web.archive.[...] 2018-01-02
[6] 웹사이트 Perl Based Cross Platforms Developments https://gravitechdre[...]
[7] 웹사이트 Ars Technica sits down with Scott Collins from Mozilla.org https://arstechnica.[...] Ars Technica 2017-02-16
[8] 웹사이트 Apple snub stings Mozilla https://web.archive.[...] CNET Networks 2017-02-16
[9] 웹사이트 Gecko:DeCOMtamination https://wiki.mozilla[...]
[10] 웹사이트 Why Mozilla is committed to Gecko as WebKit popularity grows https://arstechnica.[...] 2017-02-16
[11] 웹사이트 The Mono Runtime | Mono https://www.mono-pro[...]
[12] 웹사이트 COM Interop | Mono https://www.mono-pro[...]
[13] 웹사이트 Firefox 57 (Quantum) for developers - Mozilla | MDN https://developer.mo[...]
[14] 웹사이트 Firefox アドオン技術の現代化 | Firefox ヘルプ https://support.mozi[...]
[15] 웹사이트 Porting a legacy Firefox extension | Extension Workshop https://extensionwor[...]
[16] 웹사이트 https://developer.mo[...]
[17] 웹사이트 Firefox 57 release notes https://www.mozilla.[...]
[18] 웹인용 The Future of Developing Firefox Add-ons https://blog.mozilla[...] 2018-04-02
[19] 웹인용 Pale Moon future roadmap https://www.palemoon[...] Pale Moon 2018-04-02
[20] 웹인용 Pale Moon team releases first version of Basilisk browser https://www.ghacks.n[...] 2018-04-02



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com