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