rmic(1)

名前
rmic - Java RMI スタブコンパイラ

形式
rmic [ -bootclasspath path ] [ -classpath path ]
[ -d directory ] [ -depend ] [ -extdirs path ] [ -g ]
[ -idl ] [ -iiop ] [ -keepgenerated ] [ -J ]
[ -nowarn ] [ -sourcepath path ] [ -vcompat ]
[ -verbose ] [ -v1.1 ] [ -v1.2 ]
package-qualified-class-names

機能説明
rmic コンパイラは、リモートオブジェクトを含んだコンパイル後の Java クラスの名前から、スタブとスケルトンクラスファイルを生成します。 リモートオブジェクトとは、インタフェース java.rmi.Remote を実装するオブジェクトです。 rmic コマンドに指定するクラス名は、 javac(1) コマンドで正しくコンパイルされたクラスを表し、かつ パッケージ名で完全に修飾されている必要があります。 次に示す例では、 HelloImpl というクラスファイルに対して rmic を実行しています。

example% rmic hello.HelloImpl

これにより、 HelloImpl_Skel.class と HelloImpl_Stub.class の 2 つのファイルが生成されます。

リモートオブジェクト用のスケルトンはサーバ側のエンティティで、 実装されているリモートオブジェクトを呼び出すメソッドを含んでいます。

スタブとはリモートオブジェクトのプロキシで、 リモートオブジェクトのメソッド呼び出しを 実際のリモートオブジェクトが存在するサーバへ 転送する役目を果たします。 したがってクライアントによるリモートオブジェクトの参照は、 実際には局所スタブへの参照となります。

スタブはリモートインタフェースだけを実装していて、 リモートオブジェクトが実装している局所インタフェースは 扱いません。スタブが実装しているリモートインタフェースは、 リモートオブジェクトのものとまったく同一です。 したがってクライアントは、 キャストしたり型チェックしたりするのに Java 言語の組み込み演算子を使うことができます。

オプション
以下のオプションが使用できます。

-bootclasspath path
    ブートストラップクラスファイルの位置をオーバーライドします。

-classpath path
    rmic がクラスを探すのに用いるパスを path で指定します。この指定値は、デフォルトおよび CLASSPATH 環境変数の設定値をオーバーライドします。 複数のディレクトリを指定する場合はコロンで区切ります。 したがって path の通常の形式は次のようになります。

    .:<your_path>

    以下に例を示します。

    .:/usr/local/java/classes

-d directory
    クラス階層構造のルートディレクトリを指定します。 省略した場合、ルートディレクトリはデフォルトで現在のディレクトリ になります。

-depend
    他のクラスファイルから参照されているクラスファイルを 再コンパイルさせます。 デフォルトでは、コンパイラが再コンパイルするのは、 ソースコードが参照しているクラスファイルのうち見つからないファイル および以前のファイルだけです。

-extdirs path
    インストールされる拡張機能の位置をオーバーライドします。

-g  デバッグ用テーブルの生成を行います。 このテーブルには行番号と局所変数に関する情報が含まれ、 この情報は Java のデバッグツールが使用します。 デフォルトでは、行番号だけが生成されます。

-idl
    rmic によって、指定したクラスおよび参照されたクラスの OMG IDL が生成されます。 IDL では、プログラミング言語に依存せずに、宣言するだけでオブジェクトの API を指定できます。 IDL は、 CORBA バインディングを提供する任意の言語 (Java、C++ など) を使用して、メソッドおよびデータの 書き込みおよび呼び出しを行うときの仕様として使われます。 -idl オプションは、合わせて以下のオプションも指定できます。

    -always または -alwaysgenerate
        既存のスタブ、Tie、および IDL が入力クラスより新しいときでも、強制的に生成し直します。
    -factory
        生成された IDL で factory キーワードを使います。
    -idlModule fromJavaPackage[.class] toIDLModule
        IDLEntity パッケージのマッピングを指定します。次に例を示します。

        -idlModule foo.bar
        my::real::idlmod.

    -idlFile fromJavaPackage[.class] toIDLFile
        IDLEntity ファイルのマッピングを指定します。次に例を示します。

        -idlFile test.pkg.X TEST16.idl

-iiop
    rmic は、 JRMP のスタブとスケルトンクラスの代わりに、 IIOP のスタブと Tie クラスを生成します。スタブクラスは、リモートオブジェクトの ローカルプロキシで、クライアントがサーバに呼び出しを送信するときに 使われます。各リモートインタフェースにはスタブクラスが必要です。スタブクラス によってリモートインタフェースが実装されます。クライアントでリモートオブジェクト を参照すると、実際にはスタブを参照することになります。Tie クラスは、 サーバ側で受信した呼び出しを処理し、その呼び出しを適切な実装クラスにディスパッチ するときに使われます。各実装クラスには、Tie クラスが必要です。

    -iiop を指定して rmic を起動すると、次の命名規約に準拠したスタブと Tie が生成されます。

    _<implementationName>_stub.class

    _<interfaceName>_tie.class

    -iiop オプションは、合わせて以下のオプションも指定できます。

    -always または -alwaysgenerate
        既存のスタブ、Tie、および IDL が入力クラスより新しいときでも、強制的 に生成し直します。
    -nolocalstubs
        同じプロセスのクライアントとサーバに対して最適化されたスタブを作成しません。
    -noValueMethods
        -idl オプションとともに使用する必要があります。発行された IDL に、valuetype メソッドおよび初期化子を追加しません。このメソッドおよび初期化子 は、valuetype のオプションです。 -idl オプションを使うときは、 -noValueMethods オプションを指定しない限り生成されます。
    -poa
        継承を org.omg.CORBA_2_3.portable.ObjectImplから org.omg.PortableServer.Servant.へ変更します。
        Portable Object Adapter (POA) の PortableServer モジュールは、ネイティブ の servant 型を定義します。 Java プログラミング言語では、servant 型は、Java の org.omg.PortableServer.Servant クラスにマップされます。これはすべての POA サーバント実装の基底クラスとして 機能し、アプリケーション開発者が呼び出せる多数のメソッドを提供します。また、 POA 自体が読み出したり、サーバント動作を制御するためにユーザが上書きした りできるメソッドも提供します。CORBA V 2.3.1 の「OMG IDL to Java Language Mapping Specfication (ptc/00-01-08.pdf)」に基づいています。

-J  -D オプションと一緒に使用して、これに続く オプションを java インタプリタに渡します。 -J と -D の間に空白は入れません。

-keepgenerated
    スタブおよびスケルトン用に生成された .java ソースファイルを保持します。 -d オプションが指定されていれば、ソースファイルは .class ファイルと同じディレクトリに出力されます。

-nowarn
    警告を出力しません。 つまり、コンパイラは警告メッセージをいっさい出力しません。

-sourcepath path
    ユーザのソースファイルを検索する場所を指定します。

-vcompat
    JDK 1.1 と 1.2 のスタブプロトコルバージョンと互換性の あるスタブとスケルトンを作成します (デフォルト)。

-verbose
    コンパイラとリンカに詳細情報を出力させます。具体的には、 コンパイルされるクラスファイル、およびロードされる クラスファイルに関する情報が出力されます。

-v1.1
    JDK 1.1 スタブプロトコルバージョンのスタブとスケルトンを作成します。

-v1.2
    JDK 1.2 スタブプロトコルバージョンのスタブだけを作成します。

環境

CLASSPATH
    ユーザ定義クラスへのパスをシステムに通知するために使用します。 複数のディレクトリを指定する場合はコロンで区切ります。 以下に例を示します。

    .:/usr/local/java/classes