2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MDCAdvent Calendar 2021

Day 25

はじめて学ぶJava Remote Method Invocation(RMI)

Last updated at Posted at 2021-12-24

前書き

技術名を聞いた時には、全くピンとこなかったのですが
調べてみたら面白かったです。

備忘がてら、概要と動向を纏めます。

概要

この技術なに?

  • Java Remote Method Invocation(RMI)とは、
    異なるJVM上のインスタンス(RemoteObject)に設けたメソッドを呼び出す為の機能。
    • RepogitoryからRemoteObject取得後、普段どおりJavaコーディングする。
    • RESTのように「Httpリクエスト投げて...」等と通信を意識する必要は無い。
    • 実装例はひしだまさんが詳しい。
  • Java 1.1で導入。
  • java.rmiパッケージ配下に、ServerやClientの関連classとinterfaceが有る。

興味深い点

  • JVMコンテキストでメソッド呼び出せる。
    • 分散ガベージコレクション機構を備える。
      • RMIで呼び出すと、Server側JVMはClientに参照をリースする。
      • Clientが一定期間リース更新しなければ、Server側JVMはインスタンスをGC可能として扱う。
      • GCタイミングで、マーク済のRemoteObjectも破棄する。
  • 通信プロトコルを選べる。
    • Java Remote Method Protocol(JRMP): Java専用。
      • SOAPと比べてXML処理がない分、オーバーヘッド低い。シリアライズのみ行うイメージ。
    • HTTP: 非推奨。
    • Internet Inter-ORB Protocol(IIOP): 標準外だが利点あり。
      • CORBA仕様の一部。Java SE 11でJEP 320にて標準からは廃止された。
      • Java以外の、異なる言語のObject Request Brokerとも通信が可能。

動向

  • RemoteObjectには状態が定義されていたがJava SE 15でJEP 385にて廃止。

  • 数年前の情報によれば、Remote EJBではRMIを利用...だが、現状どうなのか?調べきれず。

参考リンク

  • パッケージ概要:java.rmi

  • Java Remote Method Invocation(Java SE 8)

  • RMIと関連技術

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?