view paper/comparing.tex @ 15:c3eb838fb504

*** empty log message ***
author fuchita
date Sat, 16 Feb 2008 11:39:51 +0900
parents 420c2d37b2bf
children 9bbcbcd1c3ec
line wrap: on
line source

\chapter{比較}

ここではSun Microsystems社の提案する高レベルの分散アーキテクチャである、
Jini と Federated Linda の比較を行う。

\section{Jini}
Jiniとは、ハードウェア/ソフトウェアに関わらず様々な資源をネットワークに接続し、
お互いにその機能を提供し合う為の、Javaをベースとした技術である。
Jiniは比較的小さな実行単位が、多数集まって仕事をするのに適した、
柔軟で、動的な、信頼性の高い分散アーキテクチャの提供をうたい、
その集合をfederation(連合体)と呼んでいる。
Jiniのアイデアの基本にあるのは、ネットワーク上の「連合」を、
単なるノードの接続とデータの交換として捉えるのではなく、
それぞれのノードが、固有の「サービス」の担い手としてネットワークに存在し、
相互に「サービス」を交換し合うという考えである。

Jiniにおける「サービス」を、ネットワーク上の何処からでも利用する事ができるモデルを
実現する為に、ネットワーク上で自由に移動可能な「オブジェクト」、すなわち分散オブジェクト
技術が用いられる。
Jiniがこの分散オブジェクトと「サービス」を結びつける機能をLookupとよび、Jini上での様々な
サービスの「連合」は、実際にはこのLookupサービスの仲立ちによって各々のサービスを提供する。

Jiniが分散オブジェクト、すなわちネットワーク上でオブジェクトを共有する空間を構築する為
の仕組みは、JavaSpaceという技術によって提供される。
JavaSpaceはネットワーク上に共通領域として存在し、オブジェクトを登録する「エントリー」
という単位での入れ物として機能する。JavaSpaceのエントリーに対するアクセスは、
write(書き込み)、read(読み出し)、take(取り出し)、という操作によって得られる。
このような仕組みはLindaシステムのタプルスペースに非常によく似ている。

対して、Federated Lindaはソフトウェアにおける資源の、ネットワーク上での相互の接続を
提供する。ベースとなる技術はC言語,Java言語であり、Jiniにおけるサービスを実現させるのは、
Federated Lindaに接続されるクライアントプログラムの機能によって実現される。

Jiniの持つ様な分散オブジェクト技術は、現在のデータ単位での通信を行うFederated Lindaでは
実現されていないが、今回Java言語によるFederated Lindaの実装を得た事により、そのような
機能追加を行う事は実現可能である。Java言語により実現が可能である理由は、Javaではオブジェクト
単位でのネットワークを介した移動を実現する、シリアライズ機能やRMIという仕組みが存在することや、
複数のThread(プロセス)が同一のオブジェクトに同期を取ってアクセスする
メカニズムが備わっているということからである。

Jiniに対してFederated Lindaが優れていると考えられる点は、Jiniでは分散オブジェクト実現の
為に、エントリーに対して強い型宣言が強制されるが、Federated Lindaでは自由なデータ形式での
通信単位を許可している事。Jiniがそのサービスを立ち上げるのに必要な要素として、
RMI Activation Daemon, ,Jiniサービスプロバイダ, Jini Lookupサービス, Lookupサービスブラウザ,
 webサーバー, クライアントプログラムといった、多くの要素を要求するのに対して、Federated Linda
はLindaサーバー, Protocol Engine, クライアントプログラムの3要素で済むという点などが挙げられる。

%表\ref{comp}にJiniとFederated Lindaの比較を示す。