XPCOM, XPConnect, XPTCall, XPIDLのロードマップ

XPCOMは、COMに似たものであり、軽量でクロスプラットフォーム性を兼ね備えています。インタフェース、ファクトリ、参照カウント、QureyInterfaceに基づく'型変換'、autoポインタ、その他の有用なものを提供します。XPCOMは、mozillaにおけるモジュール性の基礎を成すものです。

参考:
  xpcomのメインページ
  mozilla/source/xpcomのソースコード


XPConnectは、ネイティブコードとJavaScriptとの間の呼出しを容易にするサービスです。 これを実現するために、外部オブジェクトを透過的に使えるようにするための'ラッパー'オブジェクトを動的に作成しています。 コードの生成は行っていません。通常の場合、そのインタフェースがXPIDLインタフェース定義言語によって宣言されていること、およびXPCOMの規則と慣例に従っていさえすれば、オブジェクトの使用には制約がありません。

XPConnectの特徴

  • 言語の境界を越えた透過的な呼び出し
  • 参照のカウントとガベージコレクションの自動的なマッピング
  • タイプライブラリに基づいている - コードの生成はなし タイプライブラリは、クロスプラットフォームである。
  • XPCOMの'out'パラメタとJS復帰値のマッピング
  • パラメタと復帰値の自動的な型変換(必要に応じてラッパーも自動生成)
  • nsIXPCScriptableを使って、特別なJavaScriptの振るまいをサポート
  • 通常のvtblベースのインタフェースの使用 - IDispatchやデュアルインタフェースは無し
  • ヘッダとタイプライブラリ用のXPIDLインタフェースの宣言は一つ
  • 一つのオブジェクトに対して、複数インタフェースのサポート
  • JavaScriptでのXPCOMオブジェクトリポジトリのリフレクション
  • ラップされたネイティブxpcomオブジェクトでの任意のJSプロパティのサポート
参考:
  メインXPConnectページ
  mozilla/source/js/src/xpconnect/のソースコード

XPTCall は、任意のxpcomオブジェクトのメソッドの起動のサポートおよび任意のxpcomインタフェースを実装しているように見せるオブジェクトの実装のサポートをするライブラリです。 これは、プラットフォーム固有のアセンブラコードにより実現されています。 XPTCallは、XPConnectが必要としており、XPConnect(およびXPTCallを使っている他のmozillaのコード)が動作するすべてのプラットフォームへ移植する必要があります。

参考:
  XPTCall FAQ
  mozilla/source/xpcom/reflect/xptcall/のソースコード


XPIDLは、もう一つのインタフェース定義言語です。 XPIDLは、xpidlファイルをコンパイルするコンパイラの名前でもあります。 そのシンタックスはCORBAに基づいています。 いくつかの拡張が追加されています。また、多くのCORBAの特徴がサポートされていません。コンパイラは、C++のヘッダとタイプライブラリを生成します。 将来、ツールによってJavadoc風のインタフェースドキュメントを生成する予定です。

タイプライブラリをマージするリンカ(xpt_link)とその中身を人が読める形式に表示するダンプユーティリティ(xpt_dump)があります。

コンパイラには、JavaScript API(JSAPI)コードを生成する'-m stubs'モードがあります。 これは、XPConnectがまだ使用できなかったために、暫定的な解決策として実装された一時的なハックです。 これについては、段階的に廃止する予定です。混乱しないでください。この生成されたコードは、XPConnectではありません。

参考:
  メインXPIDLページ


Author: John Bandhauer <jband@netscape.com>
Last modified: 4 June 1999
このドキュメントのオリジナルはmozilla.orgにおいて英語で公布されています。
またドキュメントの管理の言語は現在も英語です。この日本語訳は、
利用者の利便のためにmozilla.org 和訳プロジェクトによって提供されたものです。
フィードバックは英語で、元の著者に送って下さい。
翻訳された文書の一覧は、現在以下のURLで見ることが出来ます。
http://www.mozilla-japan.org/jp/td/index.html