Jアダプタクラスジェネレータが生成したアダプタクラスソースは、そのまま翻訳・リンクするだけで利用可能です。通常は、そのまま運用可能です。
ただし、アダプタクラスソースには、アプリケーションで使用しないものも含まれるため、アダプタクラスのライブラリファイル(lib*.so)が大きくなる場合があります。このような場合、以下の方法により、アダプタクラスのサイズを小さくできます。
コンストラクタ/メソッド/フィールドを指定する
-omオプションまたは“Option ReduceClass”パラメタを指定する
アプリケーションで使用するコンストラクタ/メソッド/フィールドがわかる場合、アダプタクラス生成時にこれらを指定することにより、生成するアダプタクラス数を少なくできます。
Jアダプタクラスジェネレータは、指定されたコンストラクタ/メソッド/フィールドに必要なアダプタクラスだけを生成します。
コンストラクタ/メソッド/フィールドの指定方法の詳細は、-rオプション、-gcオプション、-gmオプション、-gfオプションおよび“Class クラス名/インタフェース名”パラメタを参照してください。
(“4.1.2 オプション”、“4.2 オプションファイル”参照)
例
アプリケーションでjava.io.PrintStreamクラスのprintln(Object)メソッドだけを使用する場合は、以下のように指定します。
$ java2cob -r java.io.PrintStream -gm ”println(java.lang.Object)”
アプリケーションで使用するコンストラクタ/メソッド/フィールドがわからない場合、-omオプションまたは“Option ReduceClass”パラメタを指定することにより、生成するアダプタクラス数を少なくできます。
Jアダプタクラスジェネレータでは、メソッド呼出し時のパラメタ妥当性チェックのために、各パラメタに対応するアダプタクラスを生成します。そのため、1つのクラスに対し、多くのアダプタクラスが生成されます。-omオプションまたは“Option ReduceClass”パラメタを指定すると、オブジェクト型のメソッドパラメタはすべてjava-lang-Objectクラスにマッピングされます。これにより、メソッドパラメタに対応するアダプタクラスの生成を抑制し、生成アダプタクラス数を減らすことができます。
注意
-omオプションまたは“Option ReduceClass”パラメタを指定して生成したアダプタクラスのメソッドを呼び出す場合、オブジェクト参照のパラメタには、BY CONTENT 指定が必要となります。
-omオプションまたは“Option ReduceClass”パラメタを指定した場合、メソッドのパラメタのうち復帰値を除くパラメタのオブジェクト参照の型がjava-lang-Objectになるため、元のパラメタの型がわからなくなります。このため、オブジェクトの参照型がjava-lang-Objectになるパラメタについては、パラメタ名の中に元の型情報を含めるように、以下の規則によりパラメタ名を生成します。
Pn-クラス名
"P"の後に、パラメタの通し番号(1~99)を振る
ハイフン(-)の後に、パッケージ名を除いた外部クラス名を大文字に変換して付加
30文字を超えた場合は、31文字目以降を切り捨てる
例
-omオプションおよび“Option ReduceClass”パラメタを指定しない場合、java.io.PrintStreamクラスのアダプタクラスソースjava-io-PrintStream.cobは以下のようになり、java-io-OutputStreamクラスが必要となります。
… REPOSITORY. CLASS J-OUTPUTSTREAM AS "java-io-OutputStream" … LINKAGE SECTION. 01 PARA-1 OBJECT REFERENCE J-OUTPUTSTREAM. …
-omオプションまたは“Option ReduceClass”パラメタを指定した場合、以下のようにパラメタは、java-lang-Object型となります。
したがって、java-io-OutputStreamクラスは不要となり、生成しません。
… REPOSITORY. CLASS J-OBJECT AS "java-lang-Object" … LINKAGE SECTION. 01 P1-OUTPUTSTREAM OBJECT REFERENCE J-OBJECT. …