今回のリリースの Java™ 2 Platform Standard Edition 5.0 には、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 は、IDL で定義されたインタフェースを『OMG IDL to Java Language Mapping Specification, ptc, 00-01-08』の定義に従って 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 |
メソッド |