目次 前項目 次項目

入門


トピックス:

概要

分散システムでは異なるアドレス空間上、そして多くの場合異なるホスト上で実行されている計算が相互に通信できることが必要です。通信のための基本メカニズムとして、Java 言語はソケットをサポートします。これは柔軟性に富み一般的通信には十分な機能を備えています。 しかし、ソケットではクライアントとサーバは情報交換メッセージをエンコード、デコードするためにアプリケーションレベルでのプロトコルを必要とし、このようなプロトコルの設計はやっかいでエラーを招きがちなものです。

ソケットに替わる手段として RPC (Remote Procedure Call) があり、これは通信インタフェースをプロシージャ呼び出しのレベルまで抽象化したものです。 直接ソケットを取り扱うのではなく、あたかもローカルなプロシージャコールとしてプログラムしますが、実際は引数はパッケージ化されてコールの対象であるリモートターゲットへ送られます。 PRC システムが引数をエンコードし、値を返すときは XDRのような外部データ表現を用います。

しかし、PRCは異なるアドレス空間に存在するプログラムレベルオブジェクト間の通信を必要とする分散オブジェクトシステムに適合させるには難点があります。 オブジェクト呼び出しのセマンティクスを一致させるために、分散オブジェクトシステムは RMI (Remote Method Invocation) を必要とします。 このようなシステムでは、ローカルな代理オブジェクト (スタブ) がリモートオブジェクト呼び出しを管理します。

この仕様書で説明される Java RMI システムは Java 環境で動作させるために特別に設計されたものです。他の RMI システムを適用して Java オブジェクトを取り扱うことも可能ですが、それらは別な言語との相互運用性を考慮しているため Java システムと完全に滑らかに接続することは一般にできません。例えば、CORBA はヘテロジニアスな多重言語環境を指向しているため、言語に中立なオブジェクトモデルを使います。対照的に、Java 言語の RMI システムは Java 仮想マシンから構成されるホモジニアスな環境を仮定し、Java オブジェクトモデルの特性を可能な限り積極的に活用するように設計されています。

システムの目標

Java 言語における分散オブジェクトサポートの目標は:

これらの目標の下に共通に横たわるのは、RMI モデルは単純(使いやすい)かつ自然(言語にフィットする)でなければならないという要請です。

これに加えて、RMI システムはリモートオブジェクトのガーベッジコレクション、サーバの複製、呼び出しへのサービスのための持続オブジェクト活性化などへの機能拡張が可能でなければなりません。これらの拡張機能はクライアントから見て透過的であるべきであり、それを使用するサーバへの実装上の負担はできるだけ小さなものであるべきです。拡張機能をサポートするために、システムは次のようなサポートを必要とします。

本仕様の最初の2つの章は Java 言語における分散オブジェクトモデルとシステムアーキテクチャを説明します。残りの章では RMI クライアントと、JDK 1.1 の一部である可視 (visible) API を解説します。



目次 前項目 次項目

Copyright (C) 1996, 1997 Sun Microsystems, Inc. All rights reserved.