Java Platform, Standard Editionツール・リファレンス
目次      

rmic

Java Remote Method Protocol (JRMP)またはInternet Inter-ORB Protocol (IIOP)を使用するリモート・オブジェクトのスタブ、スケルトンおよびTieクラスを生成します。Object Management Group (OMG)のインタフェース定義言語(IDL)も生成します。

形式

rmic [ options ] package-qualified-class-names

options

コマンド行オプションです。「オプション」を参照してください。

package-qualified-class-names

パッケージを含むクラス名(例: java.awt.Color)です。

説明

非推奨に関する注: Java Remote Method Protocol (JRMP)のスタブおよびスケルトンの静的な生成のサポートは、非推奨になりました。その代わりに、動的に生成されたJRMPスタブを使用することをお薦めします。これにより、このツールをJRMPベースのアプリケーションで使用する必要がなくなります。詳細は、http://docs.oracle.com/javase/jp/8/api/java/rmi/server/UnicastRemoteObject.htmljava.rmi.server.UnicastRemoteObjectの仕様を参照してください。

rmicコンパイラでは、Java Remote Method Protocol (JRMP)を使用したスタブとスケルトン・クラス・ファイル、およびリモート・オブジェクト用のスタブとTieクラス・ファイル(IIOPプロトコル)が生成されます。リモート・オブジェクトの実装クラスであるこれらのクラス・ファイルは、Javaプログラミング言語のクラスをコンパイルしたときに生成されます。リモート実装クラスは、java.rmi.Remoteインタフェースを実装するクラスです。rmicコマンドでのクラス名は、そのクラスがjavacコマンドで正常にコンパイルされていて、かつパッケージ名が完全修飾されている必要があります。たとえば、ここで示すように、クラス・ファイル名HelloImplrmicコマンドを実行すると、クラスのパッケージ名が付いたhelloサブディレクトリにHelloImpl_Stub.classファイルが作成されます。

rmic hello.HelloImpl

リモート・オブジェクト用のスケルトンは、リモート・オブジェクト実装の呼出しをディスパッチするメソッドを含むJRMPプロトコル・サーバー側のエンティティです。

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

スタブは、リモート・オブジェクト用のクライアント側プロキシです。スタブは、リモート・オブジェクトでのメソッド呼出しを、実際のリモート・オブジェクト実装が存在するサーバーと通信する役割を持っています。したがって、クライアントによるリモート・オブジェクトへの参照は、実際はローカル・スタブへの参照となります。

デフォルトでは、rmicコマンドは、-v1.2オプションを指定した場合と同様に、1.2 JRMPスタブ・プロトコル・バージョンのみを使用するスタブ・クラスを生成します。5.0よりも前のリリースでは、-vcompatオプションがデフォルトでした。IIOPプロトコル用のスタブおよびTieクラスを生成するには、-iiopオプションを使用します。「オプション」を参照してください。

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

オプション

-bootclasspath path

ブートストラップ・クラス・ファイルの場所をオーバーライドします。

-classpath path

rmicコマンドがクラスを探すために使用するパスを指定します。このオプションを設定すると、デフォルトやCLASSPATH環境変数がオーバーライドされます。ディレクトリはセミコロンで分割します。パスの一般的な形式は、.;<your_path> (例: .;/usr/local/java/classes)です。

-d directory

生成されたクラス階層の出力先ディレクトリのルートを指定します。このオプションを使えば、スタブ、スケルトン、およびTieファイルを格納するディレクトリを指定できます。たとえば、次のコマンドは、MyClassから取得したスタブとスケルトン・クラスをC:\java\classes\exampleclassディレクトリに配置します。

rmic -d C:\java\classes exampleclass.MyClass

-dオプションが指定されていない場合、デフォルトの動作は、-d .が指定された場合と同様です。ターゲット・クラスのパッケージ階層が現在のディレクトリに作成され、スタブ、Tieおよびスケルトン・ファイルがそのディレクトリに配置されます。以前のバージョンのrmicコマンドの一部では、-dオプションが指定されていない場合は、パッケージ階層は作成されず、出力ファイルはすべて現在のディレクトリに直接配置されていました。

-extdirs path

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

-g

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

-idl

rmicコマンドによって、指定したクラスおよび参照されたクラスのOMG IDLが生成されます。IDLでは、プログラミング言語に依存せずに、宣言するだけでオブジェクトのAPIを指定できます。IDLは、メソッドおよびデータの仕様として使用します。CORBAバインディングを提供する任意の言語で、メソッドおよびデータの作成および呼出しを行うことができます。これらの言語には、JavaおよびC++が含まれています。「Java IDL: IDLとJava言語のマッピング」を参照してください。
http://docs.oracle.com/javase/jp/8/technotes/guides/idl/mapping/jidlMapping.html

-idlオプションを使用されるときは、ほかのオプションも含まれます。

  • -alwaysまたは-alwaysgenerateオプションは、既存のスタブ、TieまたはIDLが入力クラスより新しいときでも強制的に再生成します。

  • -factoryオプションでは、生成されたIDLでfactoryキーワードが使用されます。

  • -idlModule from JavaPackage[.class] toIDLModuleは、IDLEntityパッケージのマッピング(例: -idlModule my.module 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オプションと一緒に使用する必要があります。-noValueMethodsオプションでは、発行された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によって呼び出され、サーバントの動作を制御するためにユーザーがオーバーライドできるメソッドも提供します。OMG IDL to Java Language Mapping Specification、CORBA V 2.3.1 ptc/00-01-08.pdfに準拠しています。

-J

-Jオプションを任意のJavaコマンドと組み合わせて使用すると、-Jの後ろに続く引数(-Jと引数の間に空白を入れない)がJavaインタプリタに渡されます。

-keep or -keepgenerated

スタブ、スケルトンまたはTieクラス用に生成された.javaソース・ファイルを保持し、.classファイルと同じディレクトリに書き込みます。

-nowarn

警告をオフにします。-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スタブ・プロトコル・バージョンのみのスタブおよびスケルトン・クラスを生成します。-v1.1オプションが役立つのは、JDK 1.1からrmicコマンドで生成され、アップグレードできない(さらに動的なクラス・ローディングを使用していない)既存の静的に配備されたスタブ・クラスに対して、直列化互換性のあるスタブ・クラスを生成する場合のみです。注: このオプションは非推奨になりました。「非推奨」を参照してください。

-v1.2 (非推奨)

(デフォルト) 1.2 JRMPスタブ・プロトコル・バージョンのみのスタブ・クラスを生成します。スケルトン・クラスは1.2スタブ・プロトコル・バージョンで使用できないため、スケルトン・クラスは生成されません。生成されたスタブ・クラスは、JDK 1.1仮想マシンにロードされても動作しません。注: このオプションは非推奨になりました。「非推奨」を参照してください。

環境変数

CLASSPATH

ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで区切られます(例: .;C:\usr\local\java\classes)。

関連項目

目次      

Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved.