「IDL-to-Java Language Mapping Specification」(準拠に関するドキュメントに基づいて JavaTM SE 6 で実装) に従って IDL-to-Java コンパイラで生成されるファイル。
一般に、IDL 名および識別子は、変更なしで Java 名および識別子にマッピングされます。Java 言語の性質のために、1 つの IDL 構文が複数の (名前が異なる) Java 構文にマッピングされることがあります。追加の名前は、説明用の接尾辞を付加して構築されます。たとえば、IDL インタフェース foo は Java インタフェース foo と fooOperations、および追加の Java クラス fooHelper、fooHolder、fooPOA、および (オプションで) fooPOATie にマッピングされます。
実質的に、マッピングでは特定の目的に合わせて複数の名前の使用が予約されます。次に初期参照を示します。
ヘルパーファイルは、型の操作に必要な複数の static メソッドを提供します。これらには、リポジトリ ID の取得、型コードの取得、ストリームに対する型の読み書きなど、型の挿入および抽出オペレーションすべてが含まれます。
マップされた IDL インタフェースまたは抽象インタフェースのヘルパークラスにはナロー操作も含まれます。static ナローメソッドにより、org.omg.CORBA.Object がさらに特定の型のオブジェクト参照にナロー変換されます。オブジェクト参照がリクエストされた型をサポートしないためにナロー変換に失敗した場合は、IDL 例外 CORBA::BAD_PARAM がスローされます。その他の種類のエラーを示す場合は、異なるシステム例外がスローされます。null のナロー変換は常に成功し、null 値が返されます。
out および inout パラメータの引渡しモードをサポートするには、追加のホルダークラスが必要です。これらのクラスは、org.omg.CORBA パッケージ内のすべての基本 IDL データ型に使用でき、typedefs で定義されたものを除くすべての名前付きユーザー定義 IDL 型についても生成されます。この場合、ユーザー定義には、インタフェースリポジトリ用などの OMG 仕様、およびその他の OMG サービスで定義される型が含まれます。
各ホルダークラスは、インスタンスからのコンストラクタ (デフォルトのコンストラクタ) と型の値である public インスタンスメンバー value を持ちます。デフォルトのコンストラクタは、値フィールドを Java 言語で定義された型のデフォルト値に設定します。boolean の場合は false、数値および char 型の場合は 0、文字列の場合は null、オブジェクト参照の場合は null です。
ポータブルスタブおよびスケルトンをサポートするため、ホルダークラスは org.omg.CORBA.portable.Streamable インタフェースも実装します。
オペレーションファイル
非抽象 IDL インタフェースは、2 つのパブリック Java インタフェースにマップされています。シグニチャーインタフェースとオペレーションインタフェースです。シグニチャーインタフェースは、IDLEntity を拡張したもので IDL インタフェース名と同じ名前を持ち、指定した型のインタフェースを他のインタフェースで使用する場合にメソッド宣言のシグニチャー型として使用します。オペレーションインタフェースの名前は IDL インタフェースと同じですが、Operations という接尾辞があり、同一の場所にあるクライアントとサーバーのために最適化された呼び出しを提供するメカニズムとしてサーバー側マッピングで使用されます。
Java オペレーションインタフェースには、マップされたオペレーションシグネチャーが含まれます。Java シグネチャーインタフェースは、オペレーションインタフェースである (マップされた) 基底 org.omg.CORBA.Object および org.omg.portable.IDLEntity を拡張します。メソッドは、シグネチャーインタフェース上で呼び出すことができます。IDL で表現されるインタフェース継承は、Java シグネチャーインタフェース階層とオペレーションインタフェース階層の両方で反映されます。
スタブ
非オブジェクト指向言語のマッピングでは、インタフェース型ごとにスタブに対するプログラミングインタフェースがあります。一般にスタブは、OMG IDL に慣れているプログラマーであれば簡単に予測できるような方法でオブジェクトの OMG IDL で定義されたオペレーションにアクセスする方法を表現したり、特定プログラミング言語の言語マッピングを表したりします。スタブは、特定の ORB コアに対して非公開であり最適化されているインタフェースを使用して、ORB の残りで呼び出します。複数の ORB が使用可能な場合、ORB ごとに対応するスタブが異なることがあります。この場合、正しいスタブと特定のオブジェクト参照を関連付けるために、ORB および言語マッピングが協調する必要があります。
Java、C++、Smalltalk などのオブジェクト指向言語では、スタブインタフェースは必要ありません。