目次 | 前の項目 | 次の項目 | Java Remote Method Invocation |
分散システムでは、異なるアドレス空間上、つまり潜在的には異なるホスト上で、実行されている計算過程が相互に通信できる必要があります。通信のための基本的な機構として、JavaTM 言語はソケットをサポートします。これは、柔軟性に富み一般的通信には十分な機能を備えています。しかし、ソケットでは、クライアントとサーバは情報交換メッセージを符号化および復号化するためにアプリケーションレベルでのプロトコルに集中せねばならず、このようなプロトコルの設計は複雑でエラーを招きやすいものです。ソケットに替わる手段として RPC (Remote Procedure Call) があり、これは通信インタフェースをプロシージャ呼び出しのレベルまで抽象化したものです。直接ソケットを取り扱うのではなく、あたかもローカルなプロシージャ呼び出しとしてプログラムしますが、実際には、引数はパッケージ化されて呼び出しの対象であるリモートターゲットへ送られます。RPC システムが、XDR のような外部データ表現を用いて、引数と戻り値を符号化します。
しかし、PRCは、異なるアドレス空間に存在するプログラムレベルオブジェクト間の通信を必要とする、分散オブジェクトシステムに適合させるには難点があります。オブジェクト呼び出しのセマンティクスを適合させるために、分散オブジェクトシステムは RMI (Remote Method Invocation) を必要とします。このようなシステムでは、ローカルな代理オブジェクト (スタブ) がリモートオブジェクト呼び出しを管理します。
この仕様書で説明される Java RMI システムは、Java 環境で動作させるために特別に設計されたものです。Java 言語の RMI システムは、Java Virtual Machine から構成される同機種システムだけの環境を仮定し、Java オブジェクトモデルの特性をできる限り積極的に活用するように設計されています。