next up previous
: 分散オブジェクトの実現 : 分散オブジェクト : 分散オブジェクトとは

Javaにおける分散オブジェクト

分散オブジェクトは,未だ発展中の分野であり,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 の特徴を生かすように 設計された分散オブジェクトプログラム用のシステムである.

図: 生成モデル:代理オブジェクトが生成されると,対応するリモートオブジェク トも生成される.
\begin{figure}
\begin{center}
\epsfile {file=img/genmodel.eps,width=7.5cm}\end{center}\end{figure}

図: 接続モデル:代理オブジェクトはすでに生成されているリモートオブジェクト に接続する.
\begin{figure}
\begin{center}
\epsfile {file=img/conmodel.eps,width=7.5cm}\end{center}\end{figure}



U-GM\murao 平成14年7月12日