1 '\" t 2 .\" 3 .\" Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. 4 .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 5 .\" 6 .\" This code is free software; you can redistribute it and/or modify it 7 .\" under the terms of the GNU General Public License version 2 only, as 8 .\" published by the Free Software Foundation. 9 .\" 10 .\" This code is distributed in the hope that it will be useful, but WITHOUT 11 .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 .\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 .\" version 2 for more details (a copy is included in the LICENSE file that 14 .\" accompanied this code). 15 .\" 16 .\" You should have received a copy of the GNU General Public License version 17 .\" 2 along with this work; if not, write to the Free Software Foundation, 18 .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 19 .\" 20 .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 21 .\" or visit www.oracle.com if you need additional information or have any 22 .\" questions. 23 .\" 24 .\" 25 .TH rmic 1 "2004 年 6 月 22 日" 26 .SH "名前" 27 rmic \- Java RMI スタブコンパイラ 28 .\" 29 .\" This document was created by saving an HTML file as text 30 .\" from the JavaSoft web site: 31 .\" 32 .\" http://java.sun.com/products/jdk/1.2/docs/tooldocs/tools.html 33 .\" 34 .\" and adding appropriate troff macros. Because the JavaSoft web site 35 .\" man pages can change without notice, it may be helpful to diff 36 .\" files to identify changes other than new functionality. 37 .\" 38 .SH "形式" 39 .B rmic 40 [ 41 .BI options 42 ] 43 .I package-qualified-class-names 44 .SH "機能説明" 45 .IX "Java RMI stub compiler" "" "Java RMI stub compiler \(em \fLrmic\fP" 46 .IX "rmic" "" "\fLrmic\fP \(em Java RMI stub compiler" 47 .B rmic 48 コンパイラは、リモートオブジェクト用のスタブおよび 49 スケルトンクラスファイル (JRMP プロトコル) とスタブ 50 および Tie クラスファイル (IIOP プロトコル) を生成します。 51 これらのクラスファイルは、リモートオブジェクト 52 実装クラスである、コンパイルされた Java プログラミング言語 53 クラスから生成されます。リモート実装クラスは、 54 インタフェース \f3java.rmi.Remote\f1 55 を実装するクラスです。 56 .B rmic 57 コマンドで指定されるクラスは、 58 .BR javac (1) 59 コマンドで正常にコンパイルされ、 60 完全にパッケージ修飾されたクラスで 61 なければなりません。 62 次に示す例では、 63 .B HelloImpl 64 というクラスファイルに対して 65 .B rmic 66 を実行しています。 67 .LP 68 .RS 69 rmic hello.HelloImpl 70 .RE 71 .LP 72 .B HelloImpl_Stub.class 73 ファイルを (クラスのパッケージに対して指定された) 74 .B hello 75 サブディレクトリに作成します。 76 .LP 77 JRMP プロトコルサーバ側エンティティである 78 リモートオブジェクトのスケルトンには、 79 リモートオブジェクト実装の呼び出しを 80 ディスパッチするメソッドがあります。 81 .LP 82 リモートオブジェクトの Tie は、スケルトンに似た 83 サーバ側エンティティですが、IIOP プロトコル 84 を使用してクライアントと通信します。 85 .LP 86 スタブは、リモートオブジェクトのプロキシで、 87 実際のリモートオブジェクト実装が存在するサーバに、 88 リモートオブジェクトに対するメソッド呼び出しを転送します。 89 クライアントのリモートオブジェクトへの参照は、 90 実際にはローカルスタブへの参照です。 91 .LP 92 デフォルトでは、 93 .B rmic 94 は \-v1.2 オプションが 95 指定された場合と同様に 1.2 JRMP スタブプロトコルを 96 使用するスタブクラスを生成します (1.5 より前の 97 リリースでは、\-vcompat オプションがデフォルト)。 98 IIOP プロトコル用のスタブクラスおよび Tie クラスを 99 生成するには、\-iiop オプションを使用します。 100 .LP 101 スタブは、リモートインタフェースのみを実装し、 102 リモートオブジェクトによっても実装されるローカル 103 インタフェースは実装しません。スタブはリモート 104 オブジェクトとまったく同じリモートインタフェースの 105 セットを実装するため、クライアントはキャストおよび 106 型チェックに Java 言語の組み込み演算子を使用できます。 107 IIOP の場合は、 108 .B PortableRemoteObject.narrow 109 メソッドを 110 使用する必要があります。 111 .SH オプション 112 .if t .TP 20 113 .if n .TP 15 114 .BI \-bootclasspath " path" 115 ブートストラップクラスファイルの位置をオーバーライドします。 116 .if t .TP 20 117 .if n .TP 15 118 .BI \-classpath " path" 119 .B rmic 120 がクラスを探すのに用いるパスを 121 .I path 122 で指定します。この指定値は、デフォルトおよび 123 .B CLASSPATH 124 環境変数の設定値をオーバーライドします。 125 複数のディレクトリを指定する場合はコロンで区切ります。 126 したがって 127 .I path 128 の通常の形式は次のようになります。 129 .sp 1n 130 .ti +5n 131 .BI .:< your_path > 132 .sp 1n 133 以下に例を示します。 134 .sp 1n 135 .ti +5n 136 .B .:/usr/local/java/classes 137 .if t .TP 20 138 .if n .TP 15 139 .BI \-d " directory" 140 クラス階層のルートディレクトリを指定します。 141 このオプションを使用して、スタブ、スケルトン、および Tie ファイルの出力先ディレクトリを指定できます。 142 たとえば、次のコマンドを入力します。 143 .LP 144 .RS 5 145 rmic \-d /java/classes foo.MyClass 146 .RE 147 .LP 148 この例では、MyClass から派生したスタブおよび 149 スケルトンクラスをディレクトリ /java/classes/foo 150 に配置します。\-d オプションが指定されていない場合、 151 デフォルトの動作は「\-d .」が指定された場合と同様です。 152 ターゲットクラスのパッケージ階層は、 153 現在のディレクトリに作成され、スタブ/Tie/スケルトン 154 ファイルはその階層内に配置されます。 155 (以前の一部のバージョンの 156 .B rmic 157 では、 158 \-d が指定されなかった場合、パッケージ階層は作成されず、 159 すべての出力ファイル 160 は、現在のディレクトリ内に直接配置されました。) 161 .if t .TP 20 162 .if n .TP 15 163 .BI \-extdirs " path" 164 インストールされている拡張機能の位置を上書きします。 165 .if t .TP 20 166 .if n .TP 15 167 .B \-g 168 ローカル変数を含む、すべてのデバッグ情報の 169 生成を有効にします。デフォルトでは、 170 行番号情報のみが生成されます。 171 .if t .TP 20 172 .if n .TP 15 173 .B \-idl 174 .B rmic 175 によって、指定したクラスおよび参照されたクラスの 176 .SM OMG IDL 177 が生成されます。 178 .SM IDL 179 では、プログラミング言語に依存せずに、宣言するだけでオブジェクトの 180 .SM API 181 を指定できます。 182 .SM IDL 183 は、 184 .SM CORBA 185 バインディングを提供する任意の言語 (Java、C++ など) を使用して、メソッドおよびデータの 186 書き込みおよび呼び出しを行うときの仕様として使われます。 187 .B \-idl 188 オプションは、合わせて以下のオプションも指定できます。 189 .RS 190 .TP 5 191 .BR \-always " または " \-alwaysgenerate 192 既存のスタブ、Tie、および \s-1IDL\s0 が入力クラスより新しいときでも、強制的に生成し直します。 193 .PD 0 194 .TP 195 .B \-factory 196 生成された IDL で factory キーワードを使います。 197 .TP 198 .B \-idlModule fromJavaPackage[.class] toIDLModule 199 .B IDLEntity 200 パッケージのマッピングを指定します。次に例を示します。 201 .sp 1n 202 .in +5n 203 .ft 3 204 .nf 205 \-idlModule foo.bar 206 my::real::idlmod. 207 .fi 208 .ft 1 209 .in 210 .sp 1n 211 .TP 212 .B \-idlFile fromJavaPackage[.class] toIDLFile 213 .B IDLEntity 214 ファイルのマッピングを指定します。次に例を示します。 215 .sp 1n 216 .ti +5n 217 .B \-idlFile test.pkg.X TEST16.idl 218 .RE 219 .PD 220 .if t .TP 20 221 .if n .TP 15 222 .B \-iiop 223 .B rmic 224 は、 225 .SM JRMP 226 のスタブとスケルトンクラスの代わりに、 227 .SM IIOP 228 のスタブと Tie クラスを生成します。スタブクラスは、リモートオブジェクトの 229 ローカルプロキシで、クライアントがサーバに呼び出しを送信するときに 230 使われます。各リモートインタフェースにはスタブクラスが必要です。スタブクラス 231 によってリモートインタフェースが実装されます。クライアントでリモートオブジェクト 232 を参照すると、実際にはスタブを参照することになります。Tie クラスは、 233 サーバ側で受信した呼び出しを処理し、その呼び出しを適切な実装クラスにディスパッチ 234 するときに使われます。各実装クラスには、Tie クラスが必要です。 235 .sp 1n 236 .B \-iiop 237 を指定して 238 .B rmic 239 を起動すると、次の命名規約に準拠したスタブと Tie が生成されます。 240 .sp 1n 241 .in +5n 242 .ft 3 243 .nf 244 _<implementationName>_stub.class 245 .sp 1n 246 _<interfaceName>_tie.class 247 .ft 1 248 .fi 249 .in 250 .sp 1n 251 .B \-iiop 252 オプションは、合わせて以下のオプションも指定できます。 253 .sp 1n 254 .ne 1 255 .bp 256 .RS 257 .PD 0 258 .TP 5 259 .BR \-always " または " \-alwaysgenerate 260 既存のスタブ、Tie、および \s-1IDL\s0 が入力クラスより新しいときでも、強制的 261 に生成し直します。 262 .TP 263 .B \-nolocalstubs 264 同じプロセスのクライアントとサーバに対して最適化されたスタブを作成しません。 265 .TP 266 .B \-noValueMethods 267 .B \-idl 268 オプションとともに使用する必要があります。発行された 269 .SM IDL\s0 270 に、valuetype メソッドおよび初期化子を追加しません。このメソッドおよび初期化子 271 は、valuetype のオプションです。 272 .B \-idl 273 オプションを使うときは、 274 .B \-noValueMethods 275 オプションを指定しない限り生成されます。 276 .TP 277 .B \-poa 278 .br 279 継承を 280 .BR org.omg.CORBA_2_3.portable.ObjectImpl から 281 .BR org.omg.PortableServer.Servant\. へ変更します。 282 .RS 283 .LP 284 Portable Object Adapter (POA) の 285 .BR PortableServer 286 モジュールは、ネイティブ の servant 型を定義します。 287 Java プログラミング言語では、servant 型は、Java の 288 .BR org.omg.PortableServer.Servant 289 クラスにマップされます。これはすべての POA サーバント実装の基底クラスとして 290 機能し、アプリケーション開発者が呼び出せる多数のメソッドを提供します。また、 291 POA 自体が読み出したり、サーバント動作を制御するためにユーザが上書きした 292 りできるメソッドも提供します。CORBA V 2.3.1 の「OMG IDL to Java Language Mapping Specfication (ptc/00-01-08.pdf)」に基づいています。 293 .RE 294 .PD 295 .RE 296 .TP 20 297 .if t .TP 20 298 .if n .TP 15 299 .B \-J 300 任意の java オプションと 301 併用した場合、 302 \-J の後のオプション ( 303 .B \-J 304 とオプションの間は空白文字をいれない) 305 を java インタプリタに 306 渡します。 307 .if t .TP 20 308 .if n .TP 15 309 .B \-keepgenerated 310 スタブ、スケルトンおよび tie クラス用に生成された .java ソースファイルを保持し、.class ファイルと同じディレクトリに書き込みます。 311 .if t .TP 20 312 .if n .TP 15 313 .B \-nowarn 314 警告をオフにします。このオプションを使用した場合、コンパイラは警告を出力しません。 315 .if t .TP 20 316 .if n .TP 15 317 .B \-vcompat 318 1.1 と 1.2 の両方の JRMP スタブプロトコル 319 バージョンと互換性があるスタブおよび 320 スケルトンクラスを生成します (1.5 より前の 321 リリースでは、このオプションはデフォルト)。 322 生成されたスタブクラスは、JDK 1.1 の仮想マシンに 323 読み込まれる場合、1.1 のスタブプロトコルバージョンを 324 使用し、1.2 以降の仮想マシンに読み込まれる場合は、 325 1.2 のスタブプロトコルバージョンを使用します。 326 生成されたスケルトンクラスは、1.1 と 1.2 の両方の 327 スタブプロトコルバージョンをサポートします。 328 生成されたクラスは、両方の操作モードをサポート 329 するため、比較的サイズが大きくなります。 330 .if t .TP 20 331 .if n .TP 15 332 .B \-verbose 333 コンパイラとリンカに詳細情報を出力させます。具体的には、 334 コンパイルされるクラスファイル、およびロードされる 335 クラスファイルに関する情報が出力されます。 336 .TP 15 337 .B \-v1.1 338 JDK 1.1 のスタブプロトコルバージョン 339 専用のスタブおよびスケルトンを作成します。 340 このオプションは、JDK 1.1 から 341 .B rmic 342 によって生成され、アップグレードできない 343 (および動的クラスローディングが使用 344 されていない) 既存の静的に配備された 345 スタブクラスと直列化互換性のあるスタブ 346 クラスを生成する場合にのみ使用します。 347 .if t .TP 20 348 .if n .TP 15 349 .B \-v1.2 350 (デフォルト) 1.2 JRMP のスタブプロトコル 351 バージョン専用のスタブクラスを生成します。 352 スケルトンクラスは 1.2 のスタブプロトコル 353 バージョンで使用されないため、このオプション 354 ではスケルトンクラスが生成されません。 355 生成されたスタブクラスが JDK 1.1 の仮想マシンに 356 読み込まれた場合は、機能しません。 357 .SH 環境変数 358 .if t .TP 20 359 .if n .TP 15 360 .B CLASSPATH 361 ユーザ定義クラスへのパスをシステムに通知するために使用します。 362 ディレクトリはコロンで 363 区切ります。以下に例を示します。 364 .sp 1n 365 .ti +5n 366 .B .:/usr/local/java/classes 367 .SH 関連項目 368 .BR java (1), 369 .BR javac (1), 370 .BR CLASSPATH