Java Remote Method Invocation ( RMI
Java遠程方法調用)允許您使用Java編寫分布式對象
本文將介紹RMI的優點以及如何將其連接到現有的和原有的系統中
以及與用Java 編寫的組件的連接
RMI為采用Java對象的分布式計算提供了簡單而直接的途徑
這些對象可以是新的Java對象
也可以是圍繞現有API的簡單的Java包裝程序
Java體現了
編寫一次就能在任何地方運行的模式
而RMI可將Java模式進行擴展
使之可在任何地方運行
因為RMI是以Java為核心的
所以
它將Java的安全性和可移植性等強大功能帶給了分布式計算
您可將代理和梢?務邏輯等屬性移動到網絡中最合適的地方
如果您要擴展Java在系統中的使用
RMI將使您充分利用其強大功能
RMI可利用標准Java本機方法接口JNI與現有的和原有的系統相連接
RMI還可利用標准JDBC包與現有的關系數據庫連接
RMI/JNI和RMI/JDBC相結合
可幫助您利用RMI與目前使用非Java語言的現有服務器進行通信
而且在您需要時可擴展Java在這些服務器上的使用
RMI可幫助您在擴展使用時充分利用Java的強大功能
優點
從最基本的角度看
RMI是Java的遠程過程調用(RPC)機制
與傳統的RPC系統相比
RMI具有若干優點
因為它是Java面向對象方法的一部分
傳統的RPC系統采用中性語言
所以是最普通的系統
它們不能提供所有可能的目標平台所具有的功能
RMI以Java為核心
可與采用本機方法與現有系統相連接
這就是說
RMI可采用自然
直接和功能全面的方式為您提供分布式計算技術
而這種技術可幫助您以不斷遞增和無縫的方式為整個系統添加Java功能
RMI的主要優點如下
面向對象
RMI可將完整的對象作為參數和返回值進行傳遞
而不僅僅是預定義的數據類型
也就是說
您可以將類似Java哈希表這樣的復雜類型作為一個參數進行傳遞
而在目前的RPC系統中
您只能依靠客戶機將此類對象分解成基本數據類型
然後傳遞這些數據類型
最後在服務器端重新創建哈希表
RMI則不需額外的客戶程序代碼(將對象分解成基本數據類型)
直接跨網傳遞對象
可移動屬性
RMI可將屬性(類實現程序)從客戶機移動到服務器
或者從服務器移到客戶機
例如
您可以定義一個檢查雇員開支報告的接口
以便察看雇員是否遵守了公司目前實行的政策
在開支報告創建後
客戶機就會從服務器端獲得實現該接口的對象
如果政策發生變化
服務器端就會開始返回使用了新政策的該接口的另一個實現程序
您不必在用戶系統上安裝任何新的軟件就能在客戶端檢查限制條件
從而向用戶提供爍?快的反饋
並降低服務器的工作量
這樣就能具備最大的靈活性
因為政策改變時只需要您編寫一個新的Java類
並將其在服務器主機上安裝一次即可
設計方式
對象傳遞功能使您可以在分布式計算中充分利用面向對象技術的強大功能
如二層和三層結構系統
如果您能夠傳遞屬性
那麼您就可以在您的解決方案中使用面向對象的設計方式
所有面向對象的設計方式無不依靠不同的屬性來發揮功能
如果不能傳遞完整的對象
包括實現和類型
就會失去設計方式上所提供的優點
安 全
RMI使用Java內置的安全機制保證下載執行程序時用戶系統的安全
RMI使用專門為保護系統免遭惡意小應用程序侵害而設計的安全管理程序
可保護您的系統和網絡免遭潛在的惡意下載程序的破壞
在情況嚴重時
服務器可拒絕下載任何執行程序
便於編寫和使用
RMI使得Java遠程服務程序和訪問這些服務程序的Java客戶程序的編寫工作變得輕松
簡單
遠程接口實際上就是Java接口
服務程序大約用三行指令宣布本身是服務程序
其它方面則與任何其它Java對象類似
這種簡單方法便於快速編寫完整的分布式對象系統的服務程序
並快速地制做軟件的原型和早期版本
以便於進行測試和評估
因為RMI程序編寫簡單
所以維護也簡單
可連接現有/原有的系統
RMI可通過Java的本機方法接口JNI與現有系統進行進行交互
利用RMI和JNI
您就能用Java語言編寫客戶端程序
還能使用現有的服務器端程序
在使用RMI/JNI與現有服務器連接時
您可以有選擇地用Java重新編寫服務程序的任何部分
並使新的程序充分發揮Java的功能
類似地
RMI可利用JDBC
在不修改使用數據庫的現有非Java源代碼的前提下與現有關系數據庫進行交互
編寫一次
到處運行
RMI是Java
編寫一次
到處運行
方法的一部分
任何基於RMI的系統均可
%地移植到任何Java虛擬機上
RMI/JDBC系統也不例外
如果使用RMI/JNI與現有系統進行交互工作
則采用JNI編寫的代碼可與任何Java虛擬機進行編譯
運行
分布式垃圾收集
RMI采用其分布式垃圾收集功能收集不再被網絡中任何客戶程序所引用的遠程服務對象
與Java 虛擬機內部的垃圾收集類似
分布式垃圾收集功能允許用戶根據自己的需要定義服務器對象
並且明確這些對象在不再被客戶機引用時會被刪除
並行計算
RMI采用多線程處理方法
可使您的服務器利用這些Java線程更好地並行處理客戶端的請求
Java分布式計算解決方案
RMI從JDK
開始就是Java平台的核心部分
因此
它存在於任何一台
Java虛擬機中
所有RMI系統均采用相同的公開協議
所以
所有Java 系統均可直接相互對話
而不必事先對協議進行轉換
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26901.html