JavaからIDLに変換する際の変換規則を以下に示します。変換規則の詳細はhttp://docs.oracle.com/javase/jp/1.4/guide/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) 本バージョンでは使用しないでください。