." Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. ." .TH rmic 1 "06 Apr 2010" ." Generated from HTML by html2man (author: Eric Armstrong) .LP .SH "名前" rmic \- Java RMI コンパイラ .LP .RS 3 .LP .LP \f3rmic\fP によって、JRMP または IIOP プロトコルを使用するリモートオブジェクトのスタブ、スケルトン、および Tie クラスが生成されます。また、OMG IDL も生成されます。 .LP .RE .SH "形式" .LP .LP .nf \f3 .fl rmic [ \fP\f3options\fP\f3 ] \fP\f4package\-qualified\-class\-name(s)\fP\f3 .fl \fP .fi .LP .SH "説明" .LP .LP .LP \f3rmic\fP コンパイラによって、リモートオブジェクトの、スタブ、スケルトンクラスファイル (JRMP プロトコル)、およびスタブと Tie クラスファイルの組み合わせ (IIOP プロトコル) が生成されます。リモートオブジェクトの実装クラスであるこれらのクラスファイルは、Java プログラミング言語のクラスをコンパイルしたときに生成されます。リモート実装クラスは、\f2java.rmi.Remote\fP インタフェースを実装するクラスです。\f3rmic\fP コマンドでのクラス名は、そのクラスが \f3javac\fP コマンドでコンパイルが成功していて、かつ完全なパッケージ名が指定されている必要があります。たとえば、クラスファイル名 \f2HelloImpl\fP で \f3rmic\fP を実行するには、次のようにします。 .LP .nf \f3 .fl rmic hello.HelloImpl .fl \fP .fi .LP .LP \f2HelloImpl_Stub.class\fP ファイルが、クラスのパッケージ名が付いた \f2hello\fP サブディレクトリに作成されます。 .LP .LP リモートオブジェクトの「スケルトン」は JRMP プロトコルサーバー側のエンティティーで、実際のリモートオブジェクト実装を呼び出すメソッドを含みます。 .LP .LP リモートオブジェクトの「Tie」は、スケルトンと同様にサーバー側のエンティティーですが、IIOP プロトコルを使ってクライアントと通信します。 .LP .LP 「スタブ」とは、リモートオブジェクトのクライアント側での代理です。 スタブは、リモートオブジェクトのメソッド呼び出しを、実物のリモートオブジェクトが常駐するサーバーと通信する役割を持ちます。したがって、クライアントのリモートオブジェクトへの参照は、実際はローカルスタブへの参照となります。 .LP .LP デフォルトで \f3rmic\fP では、1.2 JRMP スタブプロトコルバージョンだけを使用するスタブクラスを生成します。 これは、\f2\-v1.2\fP オプションを指定した場合と同じ動作です。(5.0 以前では \f2\-vcompat\fP オプションがデフォルトであったことに注意。) IIOP プロトコル用のスタブおよび Tie クラスを生成するには \f2\-iiop\fP オプションを使用します。 .LP .LP スタブはリモートインタフェースだけを実装し、リモートオブジェクトが実装する局所インタフェースは実装していません。JRMP スタブはリモートオブジェクト自体が実装するリモートインタフェースと同じものを実装しているので、クライアントは、キャストや型チェックに Java プログラミング言語に組み込まれた演算子を使用することができます。IIOP の場合は、\f2PortableRemoteObject.narrow\fP メソッドを使わなければなりません。 .LP .SH "オプション" .LP .LP .RS 3 .TP 3 \-bootclasspath path ブートストラップクラスファイルの位置をオーバーライドします。 .TP 3 \-classpath path \f3rmic\fP がクラスを探すためのパスを指定します。このオプションは、デフォルトや CLASSPATH 環境変数設定を上書きします。ディレクトリはコロンで分割します。したがって、\f2path\fP の一般形式は次のようになります。 .RS 3 .LP .nf \f3 .fl .: .fl \fP .fi .RE 例を示します。 .RS 3 .LP .nf \f3 .fl .:/usr/local/java/classes .fl \fP .fi .RE .TP 3 \-d directory 生成されたクラス階層の出力先ディレクトリのルートを指定します。このオプションを使えば、スタブ、スケルトン、および Tie ファイルを格納するディレクトリを指定できます。たとえば、次のようにして使います。 .RS 3 .LP .nf \f3 .fl % rmic \-d /java/classes foo.MyClass .fl \fP .fi .RE \f2MyClass\fP から取得したスタブとスケルトンクラスを \f2/java/classes/foo\fP ディレクトリに置きます。\f2\-d\fP オプションが指定されていない場合は、\f2「\-d\ .」\fPが指定されていると見なされます。ターゲットクラスのパッケージ階層が現在のディレクトリに作成され、スタブ、Tie、およびスケルトンファイルがそのディレクトリに格納されます。(以前のバージョンの \f3rmic\fP では、\f2\-d\fP が指定されていない場合は、パッケージ階層は作成されず、出力ファイルはすべて現在のディレクトリに直接格納されていた)。 .br \ .TP 3 \-extdirs path インストール型拡張機能の位置をオーバーライドします。 .TP 3 \-g 局所変数を含むすべてのデバッグ情報を生成します。デフォルトでは、行番号情報だけが生成されます。 .LP .TP 3 \-idl \f2rmic\fP によって、指定したクラスおよび参照されたクラスの OMG IDL が生成されます。IDL では、プログラミング言語に依存せずに、宣言するだけでオブジェクトの API を指定することができます。IDL は、メソッドおよびデータの仕様として使用します。 CORBA バインディングを提供する任意の言語で、メソッドおよびデータの作成および呼び出しを行うことができます。これらの言語には、Java および C++ が含まれています。詳細は、 .na \f2Java Language to IDL Mapping\fP @ .fi http://www.omg.org/technology/documents/formal/java_language_mapping_to_omg_idl.htm (OMG) を参照してください。 .LP \f2\-idl\fP オプションを使うときは、ほかのオプションも指定できます。 .RS 3 .TP 3 \-always または \-alwaysgenerate 既存のスタブ、Tie、および IDL が入力クラスより新しいときでも、強制的に生成し直します。 .TP 3 \-factory 生成された IDL で factory キーワードを使います。 .TP 3 \-idlModule\ fromJavaPackage[.class]\ toIDLModule IDLEntity パッケージのマップを指定します。例を示します。 \f2\-idlModule foo.bar my::real::idlmod\fP .TP 3 \-idlFile\ fromJavaPackage[.class]\ toIDLFile IDLEntity ファイルのマップを指定します。例を示します。 \f2\-idlFile test.pkg.X TEST16.idl\fP\ .RE .LP .TP 3 \-iiop \f2rmic\fP によって、JRMP のスタブとスケルトンクラスの代わりに、IIOP のスタブと Tie クラスが生成されます。スタブクラスは、リモートオブジェクトのローカルプロキシで、クライアントからサーバーに呼び出しを送信するときに使われます。各リモートインタフェースにはスタブクラスが必要です。 スタブクラスによってリモートインタフェースが実装されます。クライアントでリモートオブジェクトを参照するときは、実際にはスタブを参照することになります。タイクラスは、サーバー側で着呼を処理し、その呼び出しを適切な実装クラスにディスパッチするときに使われます。各実装クラスには、タイクラスが必要です。 .LP \f2\-iiop\fP を使って \f2rmic\fP を呼び出すと、次の命名規約に準拠したスタブと Tie が生成されます。 .RS 3 .LP .nf \f3 .fl __stub.class .fl \fP .br \f3 .fl __tie.class .fl \fP .fi .RE .LP \f2\-iiop\fP オプションを使うときは、ほかのオプションも指定できます。 .RS 3 .TP 3 \-always または \-alwaysgenerate 既存のスタブ、Tie、および IDL が入力クラスより新しいときでも、強制的に生成し直します。 .TP 3 \-nolocalstubs 同じプロセスのクライアントとサーバーに対して最適化されたスタブを作成しません。 .TP 3 \-noValueMethods \f2\-idl\fP オプションとともに使われなければなりません。発行された IDL に、\f2valuetype\fP メソッドおよび初期化子を追加しません。このメソッドおよび初期化子は、\f2valuetype\fP の場合はオプションです。 \f2\-idl\fP オプションを使うときは、 \f2\-noValueMethods\fP オプションを指定しない限り生成されます。 .TP 3 \-poa 継承が \f2org.omg.CORBA_2_3.portable.ObjectImpl\fP から \f2org.omg.PortableServer.Servant\fP に変わります。 .LP .na \f2Portable Object Adapter\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/idl/POA.html (POA) の \f2PortableServer\fP モジュールは、ネイティブの \f2Servant\fP 型を定義します。Java プログラミング言語では、\f2Servant\fP 型は、Java の \f2org.omg.PortableServer.Servant\fP クラスにマッピングされています。これはあらゆる POA サーバント実装の基底クラスとなり多数のメソッドを提供します。 これらのメソッドはアプリケーションプログラマが呼び出すだけではなく、POA 自身からも呼び出され、場合によってはサーバントの動作を制御するためにユーザーがオーバーライドすることもあります。OMG IDL to Java Language Mapping Specification、CORBA V 2.3.1 ptc/00\-01\-08.pdf に準拠しています。 .RE .TP 3 \-J \f2\-J\fP の後ろに続くオプションを \f2java\fP インタプリタに引き渡します。 \f2java\fP オプションと組み合わせて使います (\f2\-J\fP と \f2java\fP オプションの間にスペースは入れない)。 .TP 3 \-keep または \-keepgenerated スタブ、スケルトン、または Tie クラスのための \f2.java\fP ソースファイルを \f2.class\fP ファイルと同じディレクトリに残します。 .TP 3 \-nowarn 警告をオフにします。このオプションを指定すると、コンパイラは警告を表示しません。 .LP .TP 3 \-vcompat 1.1 と 1.2 の両方の JRMP スタブプロトコルバージョンと互換性のあるスタブおよびスケルトンクラスを作成します。(5.0 以前のリリースではこのオプションはデフォルト。)生成されたスタブクラスは、JDK 1.1 仮想マシンにロードされると 1.1 スタブプロトコルバージョンを使用し、JDK 1.2 以降の仮想マシンにロードされると 1.2 スタブプロトコルバージョンを使用します。生成されたスケルトンクラスでは、1.1 と 1.2 の両方のスタブプロトコルバージョンをサポートします。生成されたクラスは両方の操作モードをサポートするために、サイズが大きくなります。 .TP 3 \-verbose コンパイラやリンカーが、コンパイルされているクラスやロードされているクラスファイルについてのメッセージを表示するようにします。 .LP .TP 3 \-v1.1 1.1 JRMP スタブプロトコルバージョンのみのスタブおよびスケルトンクラスを生成します。このオプションが使用できるのは、JDK 1.1 から \f3rmic\fP ツールで生成され、アップグレードできない (さらにダイナミッククラスローディングを使用していない) 、既存の静的配備されたスタブクラスに対し、直列化互換性のあるスタブクラスを生成場合だけです。 .LP .TP 3 \-v1.2 (デフォルト) 1.2 JRMP スタブプロトコルバージョンのみのスタブクラスを生成します。スケルトンクラスは 1.2 スタブプロトコルバージョンで使用できないため、このオプションではスケルトンクラスは生成されません。生成されたスタブクラスは、JDK 1.1 仮想マシンにロードされても動作しません。 .RE .LP .SH "環境変数" .LP .LP .RS 3 .TP 3 CLASSPATH ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。次に例を示します。 .RS 3 .LP .nf \f3 .fl .:/usr/local/java/classes .fl \fP .fi .RE .RE .LP .SH "関連項目" .LP .LP .LP java(1)、javac(1)、 .na \f2CLASSPATH\fP @ .fi http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpath .LP