annotate src/linux/doc/man/ja/idlj.1 @ 5193:28e43b980aee

7182226: NLS: jdk7u6 message drop20 integration Reviewed-by: yhuang
author mfang
date Mon, 09 Jul 2012 22:58:53 -0700
parents 94ba195ce8a1
children
rev   line source
mfang@4169 1 ." Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
tbell@1178 2 ." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
tbell@1178 3 ."
tbell@1178 4 ." This code is free software; you can redistribute it and/or modify it
tbell@1178 5 ." under the terms of the GNU General Public License version 2 only, as
tbell@1178 6 ." published by the Free Software Foundation.
tbell@1178 7 ."
tbell@1178 8 ." This code is distributed in the hope that it will be useful, but WITHOUT
tbell@1178 9 ." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
tbell@1178 10 ." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
tbell@1178 11 ." version 2 for more details (a copy is included in the LICENSE file that
tbell@1178 12 ." accompanied this code).
tbell@1178 13 ."
tbell@1178 14 ." You should have received a copy of the GNU General Public License version
tbell@1178 15 ." 2 along with this work; if not, write to the Free Software Foundation,
tbell@1178 16 ." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
tbell@1178 17 ."
ohair@2362 18 ." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
ohair@2362 19 ." or visit www.oracle.com if you need additional information or have any
ohair@2362 20 ." questions.
tbell@1178 21 ."
mfang@5193 22 .TH idlj 1 "05 Jul 2012"
duke@0 23
duke@0 24 .LP
ogino@4033 25 .SH "名前"
mfang@4943 26 idlj \- IDL\-to\-Javaコンパイラ
duke@0 27 .LP
mfang@4943 28 \f3idlj\fPは、指定されたIDLファイルからJavaバインディングを生成します。
ogino@4033 29 .SH "形式"
tbell@1178 30 .LP
duke@0 31 .nf
tbell@1178 32 \f3
tbell@1178 33 .fl
tbell@1178 34 idlj [ \fP\f3options\fP\f3 ] \fP\f4idl\-file\fP\f3
tbell@1178 35 .fl
tbell@1178 36 \fP
duke@0 37 .fi
tbell@1178 38
duke@0 39 .LP
duke@0 40 .LP
mfang@4943 41 \f2idl\-file\fPは、インタフェース定義言語(IDL)による定義が入ったファイルの名前です。\f2options\fPの順番は任意ですが、\f2idl\-file\fPよりも前に指定する必要があります。
tbell@1178 42 .LP
ogino@4033 43 .SH "説明"
tbell@1178 44 .LP
tbell@1178 45 .LP
mfang@4943 46 IDL\-to\-Javaコンパイラは、指定されたIDLファイルに対してJavaバインディングを生成します。バインディングの詳細は、
tbell@1178 47 .na
tbell@1178 48 \f2OMG IDL to Java Language Mapping Specification\fP @
duke@0 49 .fi
mfang@5193 50 http://docs.oracle.com/javase/7/docs/technotes/guides/idl/mapping/jidlMapping.htmlを参照してください。IDL\-to\-Javaコンパイラの以前のリリースの中には、\f2idltojava\fPという名前だったものがあります。
ogino@4033 51 .LP
tbell@1178 52 .SS
mfang@4943 53 クライアント・バインディングおよびサーバー・バインディングの発行
duke@0 54 .LP
ogino@4033 55 .LP
mfang@4943 56 My.idlという名前のIDLファイルに対してJavaバインディングを生成するには、次のコマンドを実行します。
ogino@4033 57 .LP
ogino@4033 58 .nf
ogino@4033 59 \f3
ogino@4033 60 .fl
ogino@4033 61 idlj My.idl
ogino@4033 62 .fl
ogino@4033 63 \fP
ogino@4033 64 .fi
tbell@1178 65
duke@0 66 .LP
tbell@1178 67 .LP
ogino@4033 68 これにより、クライアント側のバインディングが生成されます。このコマンドは、次のコマンドと等価です。
tbell@1178 69 .LP
ogino@4033 70 .nf
ogino@4033 71 \f3
ogino@4033 72 .fl
ogino@4033 73 idlj \fP\f3\-fclient\fP My.idl
ogino@4033 74 .fl
ogino@4033 75 .fi
ogino@4033 76
tbell@1178 77 .LP
tbell@1178 78 .LP
ogino@4033 79 クライアント側のバインディングには、サーバー側のスケルトンは組み込まれていません。インタフェースに対してサーバー側のバインディングを生成するには、次のコマンドを実行します。
tbell@1178 80 .LP
ogino@4033 81 .nf
ogino@4033 82 \f3
ogino@4033 83 .fl
ogino@4033 84 idlj \fP\f3\-fserver\fP My.idl
ogino@4033 85 .fl
ogino@4033 86 .fi
ogino@4033 87
tbell@1178 88 .LP
tbell@1178 89 .LP
mfang@4943 90 サーバー側のバインディングには、クライアント側のバインディングの他に、スケルトンも含まれています。これらはすべて、\f2POA\fP(つまり継承モデル)クラスです。クライアント側とサーバー側の両方のバインディングを生成する場合は、次のコマンド(どれも等価)のうちの1つを使用します。
tbell@1178 91 .LP
ogino@4033 92 .nf
ogino@4033 93 \f3
ogino@4033 94 .fl
ogino@4033 95 idlj \fP\f3\-fclient \-fserver\fP My.idl
ogino@4033 96 .fl
ogino@4033 97 idlj \f3\-fall\fP My.idl
ogino@4033 98 .fl
ogino@4033 99 .fi
ogino@4033 100
tbell@1178 101 .LP
ogino@4033 102 .LP
mfang@4943 103 サーバー側で可能なモデルは2つあります。継承モデルとTie委譲モデルです。
ogino@4033 104 .LP
ogino@4033 105 .LP
mfang@4943 106 デフォルトのサーバー側のモデルは、\f2移殖可能サーバント継承モデル\fPです。\f2My.idl\fP内で\f2My\fPインタフェースが定義されている場合は、\f2MyPOA.java\fPというファイルが生成されます。この実装は\f2My\fPに提供し、\f2MyPOA\fPを継承する必要があります。
ogino@4033 107 .LP
ogino@4033 108 .LP
mfang@4943 109 \f2MyPOA.java\fPは
tbell@1178 110 .na
tbell@1178 111 \f2org.omg.PortableServer.Servant\fP @
duke@0 112 .fi
mfang@5193 113 http://docs.oracle.com/javase/7/docs/api/org/omg/PortableServer/Servant.htmlを拡張するストリームベースのスケルトンで、スケルトンが実装するIDLインタフェースに関連付けられている\f2InvokeHandler\fPインタフェースと操作インタフェースを実装します。
duke@0 114 .LP
duke@0 115 .LP
duke@0 116 .na
mfang@4943 117 \f2Portable Object Adapter(POA)\fP @
duke@0 118 .fi
mfang@5193 119 http://docs.oracle.com/javase/7/docs/technotes/guides/idl/POA.htmlの\f2PortableServer\fPモジュールは、ネイティブの\f2Servant\fP型を定義します。Javaプログラミング言語では、\f2Servant\fP型はJavaの\f2org.omg.PortableServer.Servant\fPクラスにマップされます。このクラスは、すべてのPOAサーバント実装のベース・クラスとして機能し、アプリケーション・プログラマが呼び出すことのできるいくつかのメソッドの他に、POAそのものによって呼び出され、サーバントの動作を制御するためにユーザーがオーバーライドできるメソッドも提供します。
duke@0 120 .LP
duke@0 121 .LP
mfang@4943 122 継承モデルのもう1つのオプションは、\f2\-oldImplBase\fPフラグを使用することで、J2SE 1.4より前のバージョンのJavaプログラミング言語と互換性のあるサーバー側バインディングを生成することです。ただし、\f2\-oldImplBase\fPフラグを使用するのは、標準的な手法ではありません。これらのAPIは今後非推奨になる予定です。このフラグを使用するのは、J2SE 1.3で記述された既存のサーバーとの互換性が必要な場合のみです。その場合には既存のMAKEFILEを変更し、\f2idlj\fPコンパイラに\f2\-oldImplBase\fPフラグを追加する必要があります。そうしないと、POAベースのサーバー側マッピングが生成されます。下位互換性のあるサーバー側バインディングを生成するには、次のコマンドを使用します。
tbell@1178 123 .LP
ogino@4033 124 .nf
ogino@4033 125 \f3
ogino@4033 126 .fl
ogino@4033 127 idlj \fP\f3\-fclient \-fserver\fP \f3\-oldImplBase\fP My.idl
ogino@4033 128 .fl
ogino@4033 129 idlj \f3\-fall\fP \f3\-oldImplBase\fP My.idl
ogino@4033 130 .fl
ogino@4033 131 .fi
ogino@4033 132
duke@0 133 .LP
duke@0 134 .LP
mfang@4943 135 \f2My.idl\fP内で\f2My\fPインタフェースが定義されている場合は、\f2_MyImplBase.java\fPというファイルが生成されます。\f2My\fPに対してその実装を提供し、この実装は\f2_MyImplBase\fPから継承する必要があります。
duke@0 136 .LP
duke@0 137 .LP
mfang@4943 138 もう1つのサーバー側モデルは、Tieモデルと呼ばれるものです。このサーバー側モデルは、委譲モデルです。Tieとスケルトンを同時に生成することはできないため、それらは別々に生成する必要があります。次のコマンドによって、Tieモデル用のバインディングが生成されます。
ogino@4033 139 .LP
ogino@4033 140 .nf
ogino@4033 141 \f3
ogino@4033 142 .fl
ogino@4033 143 idlj \fP\f3\-fall\fP My.idl
ogino@4033 144 .fl
ogino@4033 145 idlj \f3\-fallTIE\fP My.idl
ogino@4033 146 .fl
ogino@4033 147 .fi
ogino@4033 148
ogino@4033 149 .LP
ogino@4033 150 .LP
mfang@4943 151 \f2My\fPというインタフェースの場合、上記の2番目のコマンドにより、\f2MyPOATie.java\fPが生成されます。\f2MyPOATie\fPのコンストラクタは、\f2delegate\fPを取ります。この例では、デフォルトのPOAモデルを使用しているため、コンストラクタにも\f2poa\fPが必要です。\f2delegate\fPに対して実装を提供する必要がありますが、この実装は\f2MyOperations\fPインタフェースから継承する必要があるのみで、その他のクラスから継承する必要はありません。しかし、この実装をORBと一緒に使用するには、\f2MyPOATie\fP内で実装をラップする必要があります。たとえば、次のようにします。
ogino@4033 152 .LP
duke@0 153 .nf
duke@0 154 \f3
duke@0 155 .fl
duke@0 156 ORB orb = ORB.init(args, System.getProperties());
duke@0 157 .fl
duke@0 158
duke@0 159 .fl
tbell@1178 160 // Get reference to rootpoa & activate the POAManager
duke@0 161 .fl
duke@0 162 POA rootpoa = (POA)orb.resolve_initial_references("RootPOA");
duke@0 163 .fl
duke@0 164 rootpoa.the_POAManager().activate();
duke@0 165 .fl
duke@0 166
duke@0 167 .fl
tbell@1178 168 // create servant and register it with the ORB
duke@0 169 .fl
duke@0 170 MyServant myDelegate = new MyServant();
duke@0 171 .fl
duke@0 172 myDelegate.setORB(orb);
duke@0 173 .fl
duke@0 174
duke@0 175 .fl
tbell@1178 176 // create a tie, with servant being the delegate.
duke@0 177 .fl
duke@0 178 MyPOATie tie = new MyPOATie(myDelegate, rootpoa);
duke@0 179 .fl
duke@0 180
duke@0 181 .fl
tbell@1178 182 // obtain the objectRef for the tie
duke@0 183 .fl
duke@0 184 My ref = tie._this(orb);
duke@0 185 .fl
duke@0 186 \fP
duke@0 187 .fi
duke@0 188
duke@0 189 .LP
duke@0 190 .LP
mfang@4943 191 他の実装から継承する必要がある場合、標準の継承モデルではなくTieモデルを使用することもできます。Javaの場合は、インタフェースの継承の個数に制限はありませんが、クラスの継承に使用できるスロットは1つのみです。継承モデルを使用した場合は、そのスロットが占有されます。Tieモデルを使用した場合は、そのスロットが使用されず、ユーザーが独自の目的で使用することができます。ただし、この方法には、間接性のレベルが1つ導入されるという欠点があります。メソッドを呼び出すときに、余分なメソッド呼出しが1回発生します。
duke@0 192 .LP
duke@0 193 .LP
mfang@4943 194 J2SE 1.4より前のバージョンのJava言語にマッピングするIDLのバージョンと互換性のある、サーバー側のTieモデルのバインディングを生成する方法は、次のとおりです。
tbell@1178 195 .LP
ogino@4033 196 .nf
ogino@4033 197 \f3
ogino@4033 198 .fl
ogino@4033 199 idlj \fP\f3\-oldImplBase\fP \f3\-fall\fP My.idl
ogino@4033 200 .fl
ogino@4033 201 idlj \f3\-oldImplBase\fP \f3\-fallTIE\fP My.idl
ogino@4033 202 .fl
ogino@4033 203 .fi
ogino@4033 204
ogino@4033 205 .LP
ogino@4033 206 .LP
mfang@4943 207 \f2My\fPというインタフェースの場合、これにより\f2My_Tie.java\fPが生成されます。\f2My_Tie\fPのコンストラクタは、\f2impl\fPを取ります。\f2impl\fPに対して実装を提供する必要がありますが、その実装は\f2HelloOperations\fPインタフェースから継承する必要があるのみで、その他のクラスから継承する必要はありません。しかし、この実装をORBと一緒に使用するには、\f2My_Tie\fP内で実装をラップする必要があります。たとえば、次のようにします。
duke@0 208 .LP
duke@0 209 .nf
duke@0 210 \f3
duke@0 211 .fl
duke@0 212 ORB orb = ORB.init(args, System.getProperties());
duke@0 213 .fl
duke@0 214
duke@0 215 .fl
tbell@1178 216 // create servant and register it with the ORB
duke@0 217 .fl
duke@0 218 MyServant myDelegate = new MyServant();
duke@0 219 .fl
duke@0 220 myDelegate.setORB(orb);
duke@0 221 .fl
duke@0 222
duke@0 223 .fl
tbell@1178 224 // create a tie, with servant being the delegate.
duke@0 225 .fl
duke@0 226 MyPOATie tie = new MyPOATie(myDelegate);
duke@0 227 .fl
duke@0 228
duke@0 229 .fl
tbell@1178 230 // obtain the objectRef for the tie
duke@0 231 .fl
duke@0 232 My ref = tie._this(orb);
duke@0 233 .fl
duke@0 234 \fP
duke@0 235 .fi
duke@0 236
duke@0 237 .LP
tbell@1178 238 .SS
ogino@4033 239 発行されたファイルの代替位置の指定
duke@0 240 .LP
ogino@4033 241 .LP
mfang@4943 242 発行されたファイルを現在のディレクトリ以外のディレクトリに置くには、次のようなコマンドでコンパイラを呼び出します。
ogino@4033 243 .LP
ogino@4033 244 .nf
ogino@4033 245 \f3
ogino@4033 246 .fl
ogino@4033 247 idlj \fP\f3\-td /altdir\fP My.idl
ogino@4033 248 .fl
ogino@4033 249 .fi
duke@0 250
duke@0 251 .LP
ogino@4033 252 .LP
mfang@4943 253 \f2My\fPインタフェースの場合、バインディングは、\f2./My.java\fPではなく、\f2/altdir/My.java\fPなどに発行されます。
ogino@4033 254 .LP
ogino@4033 255 .SS
mfang@4943 256 インクルード・ファイルの代替位置の指定
ogino@4033 257 .LP
ogino@4033 258 .LP
mfang@4943 259 \f2My.idl\fPにもう1つのIDLファイル\f2MyOther.idl\fPがインクルードされている場合、コンパイラは、ローカル・ディレクトリに\f2MyOther.idl\fPがあるものと想定します。たとえば、そのファイルが\f2/includes\fPにある場合は、次のようなコマンドでコンパイラを呼び出します。
ogino@4033 260 .LP
ogino@4033 261 .nf
ogino@4033 262 \f3
ogino@4033 263 .fl
ogino@4033 264 idlj \fP\f3\-i /includes\fP My.idl
ogino@4033 265 .fl
ogino@4033 266 .fi
tbell@1178 267
tbell@1178 268 .LP
tbell@1178 269 .LP
mfang@4943 270 たとえば、\f2/moreIncludes\fPにある\f2Another.idl\fPも\f2My.idl\fPにインクルードされているのであれば、次のようなコマンドでコンパイラを呼び出します。
ogino@4033 271 .LP
ogino@4033 272 .nf
ogino@4033 273 \f3
ogino@4033 274 .fl
ogino@4033 275 idlj \fP\f3\-i /includes \-i /moreIncludes\fP My.idl
ogino@4033 276 .fl
ogino@4033 277 .fi
tbell@1178 278
tbell@1178 279 .LP
tbell@1178 280 .LP
mfang@4943 281 このような形式でインクルードを指定すると、コマンドが長くて複雑になります。そこで、インクルード・ファイルを検索する場所をコンパイラに指示するための別の方法が用意されています。この方法は、環境変数の考え方と似ています。CLASSPATHにリストされているディレクトリ内に\f2idl.config\fPという名前のファイルを作成します。その\f2idl.config\fPの中に、次のような形式の行を入れます。
tbell@1178 282 .LP
ogino@4033 283 .nf
ogino@4033 284 \f3
ogino@4033 285 .fl
ogino@4033 286 includes=/includes;/moreIncludes
ogino@4033 287 .fl
ogino@4033 288 \fP
tbell@1178 289 .fi
tbell@1178 290
tbell@1178 291 .LP
tbell@1178 292 .LP
mfang@4943 293 コンパイラは、このファイルを検索し、インクルード・リストを読み込みます。この例では、ディレクトリの間の区切り文字はセミコロン(;)になっています。この区切り文字は、プラットフォームによって異なります。たとえば、Windowsプラットフォームではセミコロンですが、Unixプラットフォームではコロンです。\f2includes\fPの詳細は、
ogino@4033 294 .na
mfang@4943 295 \f2クラス・パスの設定\fP @
ogino@4033 296 .fi
mfang@5193 297 http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#generalを参照してください。
tbell@1178 298 .LP
ogino@4033 299 .SS
mfang@4943 300 インクルード・ファイルに対するバインディングの発行
tbell@1178 301 .LP
tbell@1178 302 .LP
mfang@4943 303 デフォルトでは、コマンドラインに指定したIDLファイルで定義されているインタフェースや構造体などについてのみ、Javaバインディングが生成されます。インクルードされたファイルで定義されている型については生成されません。たとえば、次の2つのIDLファイルについて考えてみましょう。
tbell@1178 304 .LP
tbell@1178 305
tbell@1178 306 .LP
tbell@1178 307 .LP
ogino@4033 308 \f4My.idl\fP
tbell@1178 309 .LP
ogino@4033 310 .nf
ogino@4033 311 \f3
ogino@4033 312 .fl
ogino@4033 313 #include <MyOther.idl>
ogino@4033 314 .fl
ogino@4033 315 interface My
ogino@4033 316 .fl
ogino@4033 317 {
ogino@4033 318 .fl
ogino@4033 319 };
ogino@4033 320 .fl
ogino@4033 321 \fP
ogino@4033 322 .fi
tbell@1178 323
tbell@1178 324 .LP
tbell@1178 325
tbell@1178 326 .LP
tbell@1178 327 .LP
ogino@4033 328 \f4MyOther.idl\fP
tbell@1178 329 .LP
ogino@4033 330 .nf
ogino@4033 331 \f3
ogino@4033 332 .fl
ogino@4033 333 interface MyOther
ogino@4033 334 .fl
ogino@4033 335 {
ogino@4033 336 .fl
ogino@4033 337 };
ogino@4033 338 .fl
ogino@4033 339 \fP
ogino@4033 340 .fi
tbell@1178 341
tbell@1178 342 .LP
tbell@1178 343
tbell@1178 344 .LP
tbell@1178 345 .LP
mfang@4943 346 次のコマンドでは、\f2My\fPに対するJavaバインディングのみが生成されます。
tbell@1178 347 .LP
ogino@4033 348 .nf
ogino@4033 349 \f3
ogino@4033 350 .fl
ogino@4033 351 idlj My.idl
ogino@4033 352 .fl
ogino@4033 353 \fP
ogino@4033 354 .fi
ogino@4033 355
tbell@1178 356 .LP
tbell@1178 357 .LP
mfang@4943 358 \f2My.idl\fPで定義されている型と、\f2My.idl\fPにインクルードされたファイル(この例では\f2MyOther.idl\fP)で定義されている型すべてについて生成するには、次のコマンドを使用します。
tbell@1178 359 .LP
ogino@4033 360 .nf
ogino@4033 361 \f3
ogino@4033 362 .fl
ogino@4033 363 idlj \fP\f3\-emitAll\fP My.idl
ogino@4033 364 .fl
ogino@4033 365 .fi
ogino@4033 366
tbell@1178 367 .LP
ogino@4033 368 .LP
mfang@4943 369 このデフォルトのルールに関して注意が必要な点があります。グローバル・スコープに指定した\f2#include\fP文は、前述のとおりに処理されます。これらの\f2#include\fP文は、インポート文と見なすことができます。それに対して、他の定義に囲まれたスコープ内に指定した\f2#include\fP文は、本当の意味での\f2#include\fP文として処理されます。つまり、インクルードされたファイルにあるコードが、元のファイルにそのまま指定されているかのように処理され、それに対してJavaバインディングが発行されます。次はその例です。
tbell@1178 370 .LP
tbell@1178 371
tbell@1178 372 .LP
ogino@4033 373 .LP
ogino@4033 374 \f4My.idl\fP
ogino@4033 375 .LP
ogino@4033 376 .nf
ogino@4033 377 \f3
ogino@4033 378 .fl
ogino@4033 379 #include <MyOther.idl>
ogino@4033 380 .fl
ogino@4033 381 interface My
ogino@4033 382 .fl
ogino@4033 383 {
ogino@4033 384 .fl
ogino@4033 385 #include <Embedded.idl>
ogino@4033 386 .fl
ogino@4033 387 };
ogino@4033 388 .fl
ogino@4033 389 \fP
ogino@4033 390 .fi
ogino@4033 391
ogino@4033 392 .LP
ogino@4033 393
ogino@4033 394 .LP
ogino@4033 395 .LP
ogino@4033 396 \f4MyOther.idl\fP
ogino@4033 397 .LP
ogino@4033 398 .nf
ogino@4033 399 \f3
ogino@4033 400 .fl
ogino@4033 401 interface MyOther
ogino@4033 402 .fl
ogino@4033 403 {
ogino@4033 404 .fl
ogino@4033 405 };
ogino@4033 406 .fl
ogino@4033 407 \fP
ogino@4033 408 .fi
ogino@4033 409
ogino@4033 410 .LP
ogino@4033 411
ogino@4033 412 .LP
ogino@4033 413 .LP
ogino@4033 414 \f4Embedded.idl\fP
ogino@4033 415 .LP
ogino@4033 416 .nf
ogino@4033 417 \f3
ogino@4033 418 .fl
ogino@4033 419 enum E {one, two, three};
ogino@4033 420 .fl
ogino@4033 421 \fP
ogino@4033 422 .fi
ogino@4033 423
ogino@4033 424 .LP
ogino@4033 425
ogino@4033 426 .LP
ogino@4033 427 .LP
ogino@4033 428 このとき、次のコマンドを実行すると、
ogino@4033 429 .LP
ogino@4033 430 .nf
ogino@4033 431 \f3
ogino@4033 432 .fl
ogino@4033 433 idlj My.idl
ogino@4033 434 .fl
ogino@4033 435 \fP
ogino@4033 436 .fi
ogino@4033 437
ogino@4033 438 .LP
ogino@4033 439 .LP
mfang@4943 440 次のような一連のJavaファイルが生成されます。
ogino@4033 441 .LP
ogino@4033 442 .nf
ogino@4033 443 \f3
ogino@4033 444 .fl
ogino@4033 445 ./MyHolder.java
ogino@4033 446 .fl
ogino@4033 447 ./MyHelper.java
ogino@4033 448 .fl
ogino@4033 449 ./_MyStub.java
ogino@4033 450 .fl
ogino@4033 451 ./MyPackage
ogino@4033 452 .fl
ogino@4033 453 ./MyPackage/EHolder.java
ogino@4033 454 .fl
ogino@4033 455 ./MyPackage/EHelper.java
ogino@4033 456 .fl
ogino@4033 457 ./MyPackage/E.java
ogino@4033 458 .fl
ogino@4033 459 ./My.java
ogino@4033 460 .fl
ogino@4033 461 \fP
ogino@4033 462 .fi
ogino@4033 463
ogino@4033 464 .LP
ogino@4033 465 .LP
mfang@4943 466 インポート文と見なされる\f2#include\fPに定義されていたため、\f2MyOther.java\fPは生成されませんでした。ただし、本当の意味での\f2#include\fPで定義されていたため、\f2E.java\fPは生成\f2されました\fP。さらに、\f2Embedded.idl\fPが\f2My\fPインタフェースのスコープ内にインクルードされていたため、\f2My\fPのスコープ内(つまり、\f2MyPackage\fP内)に生成されています。
ogino@4033 467 .LP
ogino@4033 468 .LP
mfang@4943 469 上記の例で\f2\-emitAll\fPフラグを使用すれば、インクルードされたすべてのファイルにあるすべての型が発行されます。
ogino@4033 470 .LP
ogino@4033 471 .SS
ogino@4033 472 パッケージの接頭辞の挿入
ogino@4033 473 .LP
ogino@4033 474 .LP
mfang@4943 475 ABCという名前の会社のために作業していて、次のようなIDLファイルを構築したとしましょう。
ogino@4033 476 .LP
ogino@4033 477
ogino@4033 478 .LP
ogino@4033 479 .LP
ogino@4033 480 \f4Widgets.idl\fP
ogino@4033 481 .LP
ogino@4033 482 .nf
ogino@4033 483 \f3
ogino@4033 484 .fl
ogino@4033 485 module Widgets
ogino@4033 486 .fl
ogino@4033 487 {
ogino@4033 488 .fl
ogino@4033 489 interface W1 {...};
ogino@4033 490 .fl
ogino@4033 491 interface W2 {...};
ogino@4033 492 .fl
ogino@4033 493 };
ogino@4033 494 .fl
ogino@4033 495 \fP
ogino@4033 496 .fi
ogino@4033 497
ogino@4033 498 .LP
ogino@4033 499
ogino@4033 500 .LP
ogino@4033 501 .LP
mfang@4943 502 このファイルに対してIDL\-to\-Javaコンパイラを実行すると、\f2W1\fPおよび\f2W2\fPに対するJavaバインディングが\f2Widgets\fPパッケージ内に生成されます。しかし、業界の慣例によると、会社のパッケージは、\f2com.<company name>\fPという名前のパッケージ内に置くことになっています。そのため、\f2Widgets\fPパッケージでは不十分です。慣例に従うには、パッケージを\f2com.abc.Widgets\fPにする必要があります。このパッケージ接頭辞を\f2Widgets\fPモジュールに付加するには、次のコマンドを実行します。
ogino@4033 503 .LP
ogino@4033 504 .nf
ogino@4033 505 \f3
ogino@4033 506 .fl
ogino@4033 507 idlj \fP\f3\-pkgPrefix Widgets com.abc\fP Widgets.idl
ogino@4033 508 .fl
ogino@4033 509 .fi
ogino@4033 510
ogino@4033 511 .LP
ogino@4033 512 .LP
mfang@4943 513 \f2Widgets.idl\fPをインクルードしているIDLファイルがある場合は、そのコマンドにも\f2\-pkgPrefix\fPフラグが必要です。このフラグを指定しないと、そのIDLファイルは、\f2com.abc.Widgets\fPパッケージではなく、\f2Widgets\fPパッケージを検索することになります。
ogino@4033 514 .LP
ogino@4033 515 .LP
mfang@4943 516 接頭辞が必要なパッケージがいくつもある場合は、前述の\f2idl.config\fPファイルで接頭辞を指定するのが簡単です。パッケージの接頭辞を指定する行は、それぞれ次の形式で記述します。
ogino@4033 517 .LP
ogino@4033 518 .nf
ogino@4033 519 \f3
ogino@4033 520 .fl
ogino@4033 521 PkgPrefix.<type>=<prefix>
ogino@4033 522 .fl
ogino@4033 523 \fP
ogino@4033 524 .fi
ogino@4033 525
ogino@4033 526 .LP
ogino@4033 527 したがって、上記の例の場合は、次のように記述します。
ogino@4033 528 .nf
ogino@4033 529 \f3
ogino@4033 530 .fl
ogino@4033 531 PkgPrefix.Widgets=com.abc
ogino@4033 532 .fl
ogino@4033 533 \fP
ogino@4033 534 .fi
ogino@4033 535
ogino@4033 536 .LP
ogino@4033 537 .LP
mfang@4943 538 このオプションを使用しても、リポジトリIDは影響を受けません。
ogino@4033 539 .LP
ogino@4033 540 .SS
ogino@4033 541 コンパイル前のシンボルの定義
ogino@4033 542 .LP
ogino@4033 543 .LP
mfang@4943 544 コンパイル用のシンボルがIDLファイル内で定義されていない場合は、そのシンボルを定義する必要があります。これは、たとえば、バインディング内にデバッグ・コードを組み入れるときに使用します。次のコマンドは、
ogino@4033 545 .LP
ogino@4033 546 .nf
ogino@4033 547 \f3
ogino@4033 548 .fl
ogino@4033 549 idlj \fP\f3\-d\fP MYDEF My.idl
ogino@4033 550 .fl
ogino@4033 551 .fi
ogino@4033 552
ogino@4033 553 .LP
ogino@4033 554 .LP
mfang@4943 555 \f2My.idl\fP内に\f2#define MYDEF\fPという行を指定した場合と等価です。
ogino@4033 556 .LP
ogino@4033 557 .SS
ogino@4033 558 既存のバインディングの保持
ogino@4033 559 .LP
ogino@4033 560 .LP
mfang@4943 561 Javaバインディング・ファイルがすでに存在する場合は、\f2\-keep\fPフラグを指定すると、コンパイラによる上書きを回避できます。デフォルトでは、すでに存在するかどうかにかかわらず、すべてのファイルが生成されます。これらのファイルをカスタマイズした場合(ただし、それらの内容が正確であるとき以外はカスタマイズは避ける)、\f2\-keep\fPオプションは有用です。次のコマンドは、
ogino@4033 562 .LP
ogino@4033 563 .nf
ogino@4033 564 \f3
ogino@4033 565 .fl
ogino@4033 566 idlj \fP\f3\-keep\fP My.idl
ogino@4033 567 .fl
ogino@4033 568 .fi
ogino@4033 569
ogino@4033 570 .LP
ogino@4033 571 .LP
ogino@4033 572 クライアント側のバインディングで、まだ存在しないものをすべて発行します。
ogino@4033 573 .LP
ogino@4033 574 .SS
ogino@4033 575 コンパイルの進捗状況の表示
ogino@4033 576 .LP
ogino@4033 577 .LP
mfang@4943 578 IDL\-to\-Javaコンパイラは、実行の各段階で状態メッセージを生成します。「冗長」モードをアクティブ化するには、\f2\-v\fPオプションを使用します。
ogino@4033 579 .LP
ogino@4033 580 .nf
ogino@4033 581 \f3
ogino@4033 582 .fl
ogino@4033 583 idlj \fP\f3\-v\fP My.idl
ogino@4033 584 .fl
ogino@4033 585 .fi
ogino@4033 586
ogino@4033 587 .LP
ogino@4033 588 .LP
ogino@4033 589 デフォルトでは、コンパイラは冗長モードでは実行されません。
ogino@4033 590 .LP
ogino@4033 591 .SS
ogino@4033 592 バージョン情報の表示
ogino@4033 593 .LP
ogino@4033 594 .LP
mfang@4943 595 IDL\-to\-Javaコンパイラのビルド・バージョンを表示するには、コマンドラインで\f2\-version\fPオプションを指定します。
ogino@4033 596 .LP
ogino@4033 597 .nf
ogino@4033 598 \f3
ogino@4033 599 .fl
ogino@4033 600 idlj \-version
ogino@4033 601 .fl
ogino@4033 602 \fP
ogino@4033 603 .fi
ogino@4033 604
ogino@4033 605 .LP
ogino@4033 606 .LP
mfang@4943 607 バージョン情報は、コンパイラによって生成されたバインディング内にも書き込まれています。このオプションをコマンドラインに指定すると、それ以外のオプションを指定しても、すべて無視されます。
ogino@4033 608 .LP
ogino@4033 609 .SH "オプション"
ogino@4033 610 .LP
tbell@1178 611 .RS 3
tbell@1178 612 .TP 3
tbell@1178 613 \-d symbol
mfang@4943 614 このオプションは、IDLファイルに次のような行を追加した場合と等価です。
tbell@1178 615 .nf
tbell@1178 616 \f3
tbell@1178 617 .fl
tbell@1178 618 #define \fP\f4symbol\fP\f3
tbell@1178 619 .fl
tbell@1178 620 \fP
tbell@1178 621 .fi
tbell@1178 622 .TP 3
tbell@1178 623 \-emitAll
mfang@4943 624 \f2#include\fPファイル内で定義されているものも含めて、すべての型を発行します。
tbell@1178 625 .TP 3
tbell@1178 626 \-fside
mfang@4943 627 発行するバインディングを定義します。\f2side\fPは\f2client\fP、\f2server\fP、\f2serverTIE\fP、\f2all\fP、\f2allTIE\fPのいずれかになります。\f2\-fserverTIE\fPまたは\f2\-fallTIE\fPオプションを指定すると、委譲モデル・スケルトンが発行されます。このフラグを指定しなかった場合は、\f2\-fclient\fPが指定されたものと見なされます。
tbell@1178 628 .TP 3
tbell@1178 629 \-i include\-path
mfang@4943 630 デフォルトでは、インクルード・ファイルは現在のディレクトリから検索されます。このオプションを指定すると、他のディレクトリを追加できます。
tbell@1178 631 .TP 3
tbell@1178 632 \-keep
ogino@4033 633 生成されるファイルがすでに存在している場合は、そのファイルが上書きされません。デフォルトでは、上書きされます。
tbell@1178 634 .TP 3
tbell@1178 635 \-noWarn
ogino@4033 636 警告メッセージを表示しないようにします。
tbell@1178 637 .TP 3
tbell@1178 638 \-oldImplBase
mfang@4943 639 1.4より前のJDK ORBと互換性のあるスケルトンを生成します。デフォルトでは、POA継承モデルのサーバー側バインディングが生成されます。このオプションを指定すると、\f2ImplBase\fP継承モデルのクラスであるサーバー側バインディングが生成されるので、古いバージョンのJavaプログラミング言語との下位互換性が得られます。
tbell@1178 640 .TP 3
tbell@1178 641 \-pkgPrefix type prefix
mfang@4943 642 \f2type\fPがファイル・スコープで検出された場合は、その型に対して生成されるすべてのファイルについて、生成されるJavaパッケージ名に\f2prefix\fPという接頭辞が付加されます。\f2type\fPは、トップレベル・モジュールの単純名か、どのモジュールよりも外側で定義されたIDL型の単純名のどちらかです。
tbell@1178 643 .TP 3
tbell@1178 644 \-pkgTranslate type package
mfang@4943 645 識別子の中にモジュール名\f2type\fPが検出されると、生成されるJavaパッケージ内のすべてのファイルについて、識別子の中のその名前が\f2package\fPで置き換えられます。最初に\f2pkgPrefix\fPの変更が行われます。\f2type\fPは、トップレベルのモジュールの単純名、またはすべてのモジュールの外部で定義されたIDL型の単純名で、完全なパッケージ名に正確に一致する必要があります。
mfang@4943 646 .br
mfang@4943 647 .br
mfang@4943 648 1つの識別子の中で複数の変換がマッチする場合は、最も長いマッチが選ばれます。たとえば、次のような引数が指定されている場合は、
duke@0 649 .nf
duke@0 650 \f3
duke@0 651 .fl
duke@0 652 \-pkgTranslate foo bar \-pkgTranslate foo.baz buzz.fizz
duke@0 653 .fl
duke@0 654 \fP
duke@0 655 .fi
ogino@4033 656 次のような変換が実施されます。
duke@0 657 .nf
duke@0 658 \f3
duke@0 659 .fl
mfang@4943 660 foo => bar
duke@0 661 .fl
mfang@4943 662 foo.boo => bar.boo
duke@0 663 .fl
mfang@4943 664 foo.baz => buzz.fizz
duke@0 665 .fl
mfang@4943 666 foo.baz.bar => buzz.fizz.bar
duke@0 667 .fl
duke@0 668 \fP
duke@0 669 .fi
ogino@4033 670 次のパッケージ名を変換することはできません。
duke@0 671 .RS 3
duke@0 672 .TP 2
tbell@1178 673 o
duke@0 674 \f2org\fP
duke@0 675 .TP 2
tbell@1178 676 o
mfang@4943 677 \f2org.omg\fP、または\f2org.omg\fPのサブパッケージ
duke@0 678 .RE
mfang@4943 679 これらのパッケージ名を変換しようとすると、互換性のないコードが生成され、\f2\-pkgTranslate\fPの後の最初の引数としてそれらのパッケージを使用すると、エラーとして扱われます。
tbell@1178 680 .TP 3
tbell@1178 681 \-skeletonName xxx%yyy
mfang@4943 682 \f2xxx%yyy\fPが、スケルトンに名前を付けるパターンとして使用されます。デフォルトは次のとおりです。
tbell@1178 683 .RS 3
tbell@1178 684 .TP 2
tbell@1178 685 o
mfang@4943 686 \f2POA\fPベース・クラスの場合は%POA (\f2\-fserver\fPまたは\f2\-fall\fP)
tbell@1178 687 .TP 2
tbell@1178 688 o
mfang@4943 689 \f2oldImplBase\fPクラスの場合は_%ImplBase (\f2\-oldImplBase\fPかつ(\f2\-fserver\fPまたは\f2\-fall\fP))
duke@0 690 .RE
tbell@1178 691 .TP 3
tbell@1178 692 \-td dir
mfang@4943 693 出力ディレクトリとして、現在のディレクトリではなく、\f2dir\fPが使用されます。
tbell@1178 694 .TP 3
tbell@1178 695 \-tieName xxx%yyy
mfang@4943 696 このパターンに従ってTieに名前が付けられます。デフォルトは次のとおりです。
tbell@1178 697 .RS 3
tbell@1178 698 .TP 2
tbell@1178 699 o
mfang@4943 700 \f2POA\fP Tieベース・クラスの場合は%POATie (\f2\-fserverTie\fPまたは\f2\-fallTie\fP)
tbell@1178 701 .TP 2
tbell@1178 702 o
mfang@4943 703 \f2oldImplBase\fP Tieクラスの場合は%_Tie (\f2\-oldImplBase\fPかつ(\f2\-fserverTie\fPまたは\f2\-fallTie\fP))
tbell@1178 704 .RE
tbell@1178 705 .TP 3
mfang@4943 706 \-nowarn、\-verbose
ogino@4033 707 冗長モードになります。
tbell@1178 708 .TP 3
tbell@1178 709 \-version
ogino@4033 710 バージョン情報を表示して終了します。
tbell@1178 711 .RE
tbell@1178 712
duke@0 713 .LP
mfang@4943 714 .LP
mfang@4943 715 各オプションの詳細は、説明のセクションを参照してください。
mfang@4943 716 .LP
ogino@4033 717 .SH "制約"
duke@0 718 .LP
duke@0 719 .RS 3
duke@0 720 .TP 2
tbell@1178 721 o
mfang@4943 722 グローバル・スコープ内のエスケープされた識別子は、IDLプリミティブ型の\f2Object\fPまたは\f2ValueBase\fPと同じ綴りにしないでください。これらの識別子については、シンボル表が事前にロードされており、これらの識別子の再定義を許可すると元の定義が上書きされてしまうためです。(これは、おそらく恒久的な制約です。)
tbell@1178 723 .TP 2
tbell@1178 724 o
mfang@4943 725 \f2fixed\fPというIDL型はサポートされていません。
tbell@1178 726 .RE
tbell@1178 727
tbell@1178 728 .LP
ogino@4033 729 .SH "既知の問題点"
tbell@1178 730 .LP
tbell@1178 731 .RS 3
tbell@1178 732 .TP 2
tbell@1178 733 o
mfang@4943 734 グローバル識別子についてインポートが生成されません。予期されないローカルimplを呼び出すと、例外を受け取ります。しかし、その原因は、\f2ServerDelegate\fP DSIコード内の\f2NullPointerException\fPにあるようです。
duke@0 735 .RE
duke@0 736
duke@0 737 .LP
duke@0 738