Java Remote Method Invocation

Java Remote Method Invocation (RMI) は、Javaで記述されたプログラム間で、リモートオブジェクトのメソッドを呼び出すためのメカニズムを提供するAPIです。これは、分散オブジェクト技術の一種であり、異なるJava仮想マシン (JVM) 上で動作するオブジェクト間で、メソッド呼び出しを可能にします。RMIは、RPC (Remote Procedure Call) のオブジェクト版と考えることができます。

RMIの概要



RMIは、異なるJVM上で動作するオブジェクト間のメソッド呼び出しを可能にする分散オブジェクト技術です。このAPIを利用することで、ネットワークの複雑さを抽象化し、開発者はローカルオブジェクトを操作するのとほぼ同じ感覚でリモートオブジェクトのメソッドを呼び出すことができます。これは、ネットワーク層やトランスポート層などの複雑な通信メカニズムを隠蔽し、透過的な通信を実現するものです。

RMIの基本的な仕組みは以下の通りです。

1. クライアントがリモートオブジェクトのメソッドを呼び出す
2. RMIは、そのメソッド呼び出しをネットワーク経由でサーバーに送信
3. サーバー側で、対応するオブジェクトのメソッドが実行される
4. 結果がクライアントに返送される

このプロセス全体を、開発者は意識することなく、あたかもローカルオブジェクトのメソッドを呼び出しているかのように操作できます。

RMIの具体的な実装



RMIには、主に2つの実装が存在します。1つは、Java仮想マシンに依存する本来の実装であり、もう1つは、CORBA (Common Object Request Broker Architecture) を利用した実装です。

JRMP (Java Remote Method Protocol)


JavaによるRMIの本来の実装は、JRMP (Java Remote Method Protocol) というプロトコルを基盤としています。JRMPは、Java環境内でのみ利用可能で、異なるJVM間でメソッド呼び出しを可能にします。この実装では、ソケット通信を利用して、リモートオブジェクトのメソッド呼び出しを伝送します。JRMPは、RMIの基本的な機能を提供しますが、非Java環境との連携はサポートされていません。

RMI-IIOP (RMI over IIOP)


非JVM環境でのコード実行をサポートするために、RMIはCORBAとの連携機能を提供します。RMI over IIOP (RMI-IIOP) は、CORBAのIIOP (Internet Inter-ORB Protocol) プロトコルを利用して、RMIオブジェクトをCORBA環境で利用できるようにするものです。これにより、RMIは、異なる言語やプラットフォームで開発されたアプリケーションとの連携が可能になります。

RMIの透過性



RMIの大きな特徴の一つは、ネットワークの複雑さを隠蔽する透過性です。開発者は、ネットワーク通信の詳細を意識することなく、ローカルオブジェクトと同様にリモートオブジェクトを操作することができます。これにより、分散システムを開発する際の複雑さが大幅に軽減されます。また、RMIは、HTTP転送などの異なるトランスポート層を概括し、柔軟なシステム設計を可能にします。

RMIのAPI



RMIのAPIは `java.rmi` パッケージにまとめられています。このパッケージには、リモートインターフェースの定義、リモートオブジェクトの実装、RMIレジストリの利用など、RMIを利用するために必要なクラスとインターフェースが含まれています。

まとめ



Java RMIは、Javaアプリケーションにおける分散処理を容易にする強力なツールです。その透過性により、ネットワークの複雑さを意識することなく、リモートオブジェクトのメソッド呼び出しを実現できます。また、JRMPとRMI-IIOPという2つの実装により、Java環境だけでなく、CORBAなどの他のプラットフォームとの連携も可能です。これにより、Javaアプリケーションは、より広い範囲で分散システムを構築することができます。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。