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