JavaからIDLに変換する際の変換規則を以下に示します。変換規則の詳細はhttp://java.sun.com/products/rmi-iiopを参照してください。
なお、備考欄に○がついているJavaの記述方法を使用する場合には注意してください。JavaクラスからIDLに変換する際に名前が重複し、配備時にエラーとなることがあります。
| 項 | Java | IDL | 備考 | 
|---|---|---|---|
| 1 | パッケージ(package) | モジュール(module) | - | 
| 2 | IDLキーワード | 先頭に'_'を付加します。 | ○ | 
| 3 | 先頭が'_' | 先頭に'J'を付加します。 | ○ | 
| 4 | '$'やユニコード文字などのIDLで定義できない文字 | 'U'とUnicode値を表す4桁の16進数(大文字)で置換します。 | ○ | 
| 5 | 内部クラス | 外部クラス名と内部クラス名を2つの'_'で連結します。 | ○ | 
| 6 | オーバーロードされたメソッド | 以下の手順で変換します。 
 例) 継承元と継承先で同名のメソッドが存在した場合(オーバーライドを含む)は継承先のメソッド名を変換します。 | ○ | 
| 7 | 大文字/小文字だけが異なる識別子 | 以下の手順で変換します。 
 例) jack_, Jack_0, jAcK_1_3 | ○ | 
| 8 | メソッド名が他の識別子(定数、フィールド)の名前と重複した場合 | 定数、フィールドの名前の末尾に'_'を付加し、メソッド名は変換しません。 | ○ | 
| 9 | 変換後に名前の重なる場合 | エラーとして扱います。 | - | 
| 10 | void | void | - | 
| 11 | boolean | boolean | - | 
| 12 | char | char | - | 
| 13 | byte | byte | - | 
| 14 | short | short | - | 
| 15 | int | long | - | 
| 16 | long | long long | - | 
| 17 | float | float | - | 
| 18 | double | double | - | 
| 19 | リモートインタフェース 
 | インタフェース(interface) | - | 
| 20 | java.rmi.Remoteインタフェース | ::java::rmi::Remote | - | 
| 21 | リモートインタフェースの継承関係 | IDLの継承関係 | - | 
| 22 | 以下のいずれかの条件に当てはまるリモートインタフェースのメソッド 
 | attribute 
 attribute名の取得手順を以下に示します。 
 | ○ | 
| 23 | リモートインタフェースの項目22以外のメソッド | 以下の手順で変換します。 
 | - | 
| 24 | リモートインタフェースの定数(public final staticフィールド) | Javaと同じ値を持ち、対応するIDL型の定数(const)に変換します。wstringとwcharの値はエスケープします。 | - | 
| 25 | リモートインタフェースのバージョンチェック | リポジトリID | - | 
| 26 | 直列化可能クラス 
 | valuetype | - | 
| 27 | 直列化可能クラスで、org.omg.CORBA.portable.IDLEntityまたはorg.omg.CORBA.portable.ValueBaseを直接的または間接的に実装するクラス | IDLにマッピングしません。 | - | 
| 28 | 直列化可能クラスの継承クラス関係 | IDLの継承関係 | - | 
| 29 | 直列化可能クラスが実装するインタフェースとの関係(java.io.Serializableとjava.io.Externalizableは除く) | 
 | - | 
| 30 | 直列化可能クラスのメソッド | IDLにマッピングしません。 | - | 
| 31 | 直列化可能クラスのコンストラクタ | IDLにマッピングしません。 | - | 
| 32 | 直列化可能クラスの定数(public final staticフィールド) | Javaと同じ値を持ち、対応するIDL型の定数に変換します。wstringとwcharの値はエスケープします。 | - | 
| 33 | 直列化可能クラスでjava.io.Externalizableを実装しているクラス | custom valuetype | - | 
| 34 | 直列化可能クラスで以下の条件に当てはまる場合 
 | custom valuetype | - | 
| 35 | 直列化可能クラスで以下の条件に当てはまる場合 
 | 左欄のフィールドserialPersistentFieldsに対応するフィールドだけIDLにマッピングします。 | - | 
| 36 | 直列化可能クラスのフィールド。 
 | 以下のように変換します。番号(1、2、...)は左欄の番号に対応します。 
 | - | 
| 37 | 直列化可能クラスのバージョンチェック | リポジトリID | - | 
| 38 | java.lang.Stringクラス 
 | 以下のように変換します。番号(1、2)は左欄の番号に対応します。 
 | - | 
| 39 | java.lang.Classクラス | ::javax::rmi::CORBA::ClassDesc | - | 
| 40 | 配列 | 以下のようにorg.omg.CORBA..boxedRMIモジュールに展開します。 
 | ○ | 
| 41 | 例外 | exceptionとvaluetypeの両方に変換し、exceptionには対応するvaluetypeのフィールドを1つ定義します。 
 | ○ | 
| 42 | CORBAオブジェクト参照型 | 既存のinterfaceに変換される。新規にIDLは出力しません。 | - | 
| 43 | org.omg.CORBA.Objectインタフェース | Object | - | 
| 44 | CORBAオブジェクト参照型以外のIDLエンティティ型インタフェース | IDLエンティティを含む、"boxed"なvaluetypeに変換します。 | - | 
| 45 | java.io.Serializableインタフェース | ::java::io::Serializable | - | 
| 46 | java.io.Externalizableインタフェース | ::java::io::Externalizable | - | 
| 47 | java.lang.Objectクラス | ::java::lang::_Object | ○ | 
| 48 | 以下の条件に当てはまるインタフェース 
 | abstract interface | - | 
| 49 | 項目48に当てはまるインタフェースの継承インタフェース | 継承abstract interface | - | 
| 50 | 項目48に当てはまるインタフェースのメソッド | 項目22、23と同様に変換します。 | - | 
| 51 | 項目48に当てはまるインタフェースの定数 | 項目24と同様に変換します。 | - | 
| 52 | リモートインタフェースを実装するクラス 
 | 以下のように変換します。番号(1、2)は左欄の番号に対応します。 
 | - | 
| 53 | 項目19、20、42、43、44、45、46、48のどれにも当てはまらないインタフェース | abstract value | - | 
| 54 | 項目26、27、33、34、38、39、47、52のどれにも当てはまらないクラス | abstract value | - | 
*1) 非検査例外クラス:java.lang.RuntimeExceptionとそのサブクラス、およびjava.lang.Errorとそのサブクラス
*2) 検査例外クラス:非検査例外クラス以外の例外クラス
*3) RMI over IIOPの規約を完全に実装していません。動作には問題ありません。
*4) 本バージョンでは使用しないでください。