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 和訳プロジェクトによって提供されたものです。
フィードバックは英語で、元の著者に送って下さい。
翻訳された文書の一覧は、現在以下のURLで見ることが出来ます。
http://www.mozilla-japan.org/jp/td/index.html