パッケージには、Object Management Group (OMG)のインタフェース定義言語(IDL)ファイルを読み取ってJavaインタフェースに変換(つまりマッピング)するコンパイラ、idljが含まれています。 使用されるコマンド行オプションに従い、idljコンパイラはスタブ、スケルトン、ヘルパー、ホルダーなどのファイルを必要に応じて作成します。 これらの.javaファイルは、OMGドキュメント(pdf形式)『OMG IDL to Java Language Mapping Specification, ptc, 00-01-08』とその改訂版『ptc/00-11-03, The new IDL to Java Mapping Chapter』で指定されているマッピングに従って、IDLファイルから生成されます。 バージョン00-01-08のIDLからJava言語へのマッピングは、CORBAバージョン2.3.2に準拠しています。 IDLからJavaへのマッピングの基本的なサマリーについては、「IDLとJava言語のマッピングの概要」を参照してください。
OMGの仕様『IDL to Java Language Mapping』の中には、次のような要約しにくいトピックがあります。
CORBAのオブジェクトは、OMG IDL (Object Management Group Interface Definition Language)で定義されています。 OMG IDLの構文およびセマンティックスは、CORBA/IIOP 2.3.1仕様の第3章で定義されています。 IDL-to-Javaコンパイラのidljは、OMG IDLからJava言語へのマッピング仕様ptc, 00-01-08の定義に従って、IDLで定義されたインタフェースをJavaクラスとインタフェースにマップします。それらは、「J2SE 5.0でのCORBAサポートの公式仕様」で説明されているこのバージョンのJavaプラットフォームでサポートされています。
この概要では、OMG IDLのデータ型とJavaのデータ型の対応を示します。 OMG IDLは、その名前が示すように、インタフェースを定義しています。 Javaのインタフェースと同じように、IDLのインタフェースには、インタフェースのオペレーションの実装(Javaでのメソッド)は含まれていません。 つまり、IDLのインタフェースでは、オペレーションのシグニチャ(オペレーションの名前、戻り値のデータ型、受け取るパラメータのデータ型、および発生する例外)だけが定義されています。 これらのオペレーションを実装するには、Java言語で記述されたJavaクラスが提供されていなければなりません。
次の表は、IDLの主要な構成要素とそれに対応するJavaの構成要素の一覧です。
|
IDLのデータ型 |
Java型 |
|---|---|
|
module |
パッケージ |
|
boolean |
boolean |
|
char、wchar |
char |
|
octet |
byte |
|
string、wstring |
java.lang.String |
|
short、unsigned short |
short |
|
long、unsigned long |
int |
|
long long、unsigned long long |
long |
|
float |
float |
|
double |
double |
|
fixed |
java.math.BigDecimal |
|
enum、struct、union |
クラス |
|
sequence、array |
array |
|
interface (非抽象) |
シグニチャ・インタフェースとオペレーション・インタフェース、ヘルパー・クラス、ホルダー・クラス |
|
interface (抽象) |
シグニチャ・インタフェース、ヘルパー・クラス、ホルダー・クラス |
|
constant (インタフェース内にない) |
public interface |
|
constant (インタフェース内) |
非抽象のJavaシグニチャ・インタフェースまたは抽象の単独Javaインタフェースにおけるフィールド |
|
exception |
クラス |
|
Any |
org.omg.CORBA.Any |
|
インタフェース内で入れ子の型宣言 |
「スコープ指定された」パッケージ |
|
typedef |
ヘルパー・クラス |
|
擬似オブジェクト |
擬似インタフェース |
|
読取り専用属性 |
アクセス用メソッド |
|
読書き属性 |
アクセスおよび変更用メソッド |
|
operation |
メソッド |