rmic(1)

名前
rmic - Java RMIコンパイラ

rmicによって、JRMPまたはIIOPプロトコルを使用するリモート・オブジェクトのスタブ、スケルトン、およびTieクラスが生成されます。また、OMG IDLも生成されます。

形式

rmic [ options ] package-qualified-class-name(s)

説明

rmicコンパイラによって、リモート・オブジェクトの、スタブ、スケルトン・クラス・ファイル(JRMPプロトコル)、およびスタブとTieクラス・ファイルの組合せ(IIOPプロトコル)が生成されます。リモート・オブジェクトの実装クラスであるこれらのクラス・ファイルは、Javaプログラミング言語のクラスをコンパイルしたときに生成されます。リモート実装クラスは、java.rmi.Remoteインタフェースを実装するクラスです。rmicコマンドでのクラス名は、そのクラスがjavacコマンドでコンパイルが成功していて、かつ完全修飾パッケージ名である必要があります。たとえば、クラス・ファイル名HelloImplでrmicを実行するには、次のようにします。

rmic hello.HelloImpl

HelloImpl_Stub.classファイルが、クラスのパッケージ名が付いたhelloサブディレクトリに作成されます。

リモート・オブジェクトのスケルトンはJRMPプロトコル・サーバー側のエンティティで、実際のリモート・オブジェクト実装を呼び出すメソッドを含みます。

リモート・オブジェクトのTieは、スケルトンと同様にサーバー側のエンティティですが、IIOPプロトコルを使用してクライアントと通信します。

スタブとは、リモート・オブジェクトのクライアント側での代理です。スタブは、リモート・オブジェクトのメソッド呼出しを、実物のリモート・オブジェクトが常駐するサーバーと通信する役割を持ちます。したがって、クライアントのリモート・オブジェクトへの参照は、実際はローカル・スタブへの参照となります。

デフォルトでrmicでは、1.2 JRMPスタブ・プロトコル・バージョンのみを使用するスタブ・クラスを生成します。これは、-v1.2オプションを指定した場合と同じ動作です。(5.0以前では-vcompatオプションがデフォルトであったことに注意。)IIOPプロトコル用のスタブおよびTieクラスを生成するには-iiopオプションを使用します。

スタブはリモート・インタフェースのみを実装し、リモート・オブジェクトが実装するローカル・インタフェースは実装していません。JRMPスタブはリモート・オブジェクト自体が実装するリモート・インタフェースと同じものを実装しているので、クライアントは、キャストや型チェックにJavaプログラミング言語に組み込まれた演算子を使用することができます。IIOPの場合は、PortableRemoteObject.narrowメソッドを使用する必要があります。

オプション

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

    -classpath path
        rmicがクラスを探すためのパスを指定します。このオプションは、デフォルトやCLASSPATH環境変数設定を上書きします。ディレクトリはコロンで分割します。したがって、pathの一般形式は次のようになります。

        次に例を示します。

    -d directory
        生成されたクラス階層の出力先ディレクトリのルートを指定します。このオプションを使用すると、スタブ、スケルトン、およびTieファイルを格納するディレクトリを指定できます。たとえば、次のように使用します。

        % rmic -d /java/classes foo.MyClass

        MyClassから取得したスタブとスケルトン・クラスを/java/classes/fooディレクトリに置きます。-dオプションが指定されていない場合は、「-d .」が指定されていると見なされます。ターゲット・クラスのパッケージ階層が現在のディレクトリに作成され、スタブ、Tie、およびスケルトン・ファイルがそのディレクトリに格納されます。(以前のバージョンのrmicでは、-dが指定されていない場合は、パッケージ階層は作成されず、出力ファイルはすべて現在のディレクトリに直接格納されていた。)

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

    -g  ローカル変数を含むすべてのデバッグ情報を生成します。デフォルトでは、行番号情報のみ生成されます。

    -idl
        rmicによって、指定したクラスおよび参照されたクラスのOMG IDLが生成されます。IDLでは、プログラミング言語に依存せずに、宣言するだけでオブジェクトのAPIを指定することができます。IDLは、メソッドおよびデータの仕様として使用します。CORBAバインディングを提供する任意の言語で、メソッドおよびデータの作成および呼出しを行うことができます。これらの言語には、JavaおよびC++が含まれています。詳細は、 Java 言語とIDLのマッピング @
        http://www.omg.org/technology/documents/formal/java_language_mapping_to_omg_idl.htm(OMG)を参照してください。
        -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クラスが生成されます。スタブ・クラスは、リモート・オブジェクトのローカル・プロキシで、クライアントからサーバーに呼出しを送信するときに使用されます。各リモート・インタフェースにはスタブ・クラスが必要です。スタブ・クラスによってリモート・インタフェースが実装されます。クライアントでリモート・オブジェクトを参照するときは、実際にはスタブを参照することになります。タイ・クラスは、サーバー側で着呼を処理し、その呼出しを適切な実装クラスにディスパッチするときに使用されます。各実装クラスには、タイ・クラスが必要です。
        -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 @
            http://docs.oracle.com/javase/7/docs/technotes/guides/idl/POA.html(POA)のPortableServerモジュールは、ネイティブのServant型を定義します。Javaプログラミング言語では、Servant型はJavaのorg.omg.PortableServer.Servantクラスにマップされます。このクラスは、すべてのPOAサーバント実装のベース・クラスとして機能し、アプリケーション・プログラマが呼び出すことのできるいくつかのメソッドの他に、POAそのものによって呼び出され、サーバントの動作を制御するためにユーザーがオーバーライドできるメソッドも提供します。OMG IDL to Java Language Mapping Specification、CORBA V 2.3.1 ptc/00-01-08.pdfに準拠しています。

    -J  -Jの後ろに続くオプションをjavaインタプリタに引き渡します。javaオプションと組み合せて使用します(-Jとjavaオプションの間にスペースは入れない)。

    -keepまたは-keepgenerated
        スタブ、スケルトン、またはTieクラスのための.javaソース・ファイルを.classファイルと同じディレクトリに残します。

    -nowarn
        警告をオフにします。このオプションを指定すると、コンパイラは警告を表示しません。

    -nowrite
        コンパイルしたクラスをファイル・システムに書き込みません。

    -vcompat
        1.1と1.2の両方のJRMPスタブ・プロトコル・バージョンと互換性のあるスタブおよびスケルトン・クラスを作成します。(5.0以前のリリースではこのオプションはデフォルト。)生成されたスタブ・クラスは、JDK 1.1仮想マシンにロードされると1.1スタブ・プロトコル・バージョンを使用し、JDK 1.2以降の仮想マシンにロードされると1.2スタブ・プロトコル・バージョンを使用します。生成されたスケルトン・クラスでは、1.1と1.2の両方のスタブ・プロトコル・バージョンをサポートします。生成されたクラスは両方の操作モードをサポートするために、サイズが大きくなります。

    -verbose
        コンパイラやリンカーが、コンパイルされているクラスやロードされているクラス・ファイルについてのメッセージを表示するようにします。

    -v1.1
        1.1 JRMPスタブ・プロトコル・バージョンのみのスタブおよびスケルトン・クラスを生成します。このオプションが使用できるのは、JDK 1.1からrmicツールで生成され、アップグレードできない(さらにダイナミック・クラス・ローディングを使用していない)、既存の静的デプロイされたスタブ・クラスに対し、直列化互換性のあるスタブ・クラスを生成する場合のみです。

    -v1.2
        (デフォルト)1.2 JRMPスタブ・プロトコル・バージョンのみのスタブ・クラスを生成します。スケルトン・クラスは1.2スタブ・プロトコル・バージョンで使用できないため、このオプションではスケルトン・クラスは生成されません。生成されたスタブ・クラスは、JDK 1.1仮想マシンにロードされても動作しません。

環境変数

    CLASSPATH
        ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。次に示します。

関連項目

java(1)、javac(1)、 CLASSPATH @
http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#classpath