分散オブジェクトは,未だ発展中の分野であり,Javaでも様々な分散オブジェクト技術が 展開されている. その中でも有名なものとして,SUNによるRMI(Remote Method Invocation:リモートメソッ ド呼び出し)と,電総研の平野氏によるHORB(Hirano Object Request Broker)がある. また,分散オブジェクトの標準技術として仕様化が進められているCORBA(Common Object Request Broker)に対応したJavaIDLがJava1.1より用意されている.
いずれの分散オブジェクト技術も,代理オブジェクトを介してリモートオブジェクト(サー バ側のオブジェクト)と通信するという基本は同じであるが,RMIやCORBAとHORBは,リモー トオブジェクトの生成のタイミングが異なる. RMIやCORBAは,すでにサーバ側で用意されているオブジェクトに代理オブジェクトを介し て接続するという形式であり,これは 接続モデルと呼ばれる. HORBは接続モデルでの利用も可能であるが,代理オブジェクトが生成されると,対応する リモートオブジェクトも自動的に生成されるという 生成モデルをサポートしている 点が大きく異なる.
生成モデルでは,クライアント側で代理オブジェクトを生成すれば,対応するリモートオ
ブジェクトが自動的に生成されるため,クライアント側では代理オブジェクトとリモート
オブジェクトの対応を考えることなく,分散オブジェクトを使わない場合と同様のプログ
ラミングが可能なことが大きな特徴である(図).
接続モデルは,もっとも多くの分散オブジェクト技術でサポートされている方法であるが,
新たなリモートオブジェクトを生成するには,それを行うメソッドをサーバ側に用意して,
これを明示的に呼び出す必要がある(図
).
本章ではJavaに標準で用意されているRMIを用いて分散オブジェクトプログラミングを体 験してみる. Java RMIは Java環境で動作させるために特別に設計された通信メカニズムである. これは,敢えて他の言語との相互運用性を犠牲にしながら,Java の特徴を生かすように 設計された分散オブジェクトプログラム用のシステムである.