首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

RMI 與 CORBA 分散式 Java 程式設計實戰:從檔案傳輸範例看兩大技術棧異同

     編輯:J2EE

分布式模型演進:從 Client/Server 到分布式物件

  • Client/Server:自定義協定(命令集),Socket 實作,耦合度高
  • 分布式物件:明確介面封裝,Client 對物件發送訊息,物件決定執行邏輯(本地或代理),**介面與實現分離**
  • RMI 與 CORBA 皆屬此模型

RMI:Java 原生分布式物件,開發極簡

開發五步驟

  1. 定義 Remote 介面(extends Remote,方法拋 RemoteException)
  2. 實作介面(extends UnicastRemoteObject)
  3. 開發 Server:安裝 RMISecurityManager、建立實例、Naming.rebind() 註冊
  4. 開發 Client:Naming.lookup() 取得 Stub、呼叫遠端方法
  5. rmic 產生 Stub/Skel、啟動 rmiregistry、啟動 Server/Client

檔案下載範例核心代碼

// 介面
public interface FileInterface extends Remote {
    byte[] downloadFile(String fileName) throws RemoteException;
}

// 實作
public class FileImpl extends UnicastRemoteObject implements FileInterface {
    public byte[] downloadFile(String fileName) {
        File file = new File(fileName);
        byte[] buffer = new byte[(int)file.length()];
        new BufferedInputStream(new FileInputStream(file)).read(buffer);
        return buffer;
    }
}

// Server
Naming.rebind("//127.0.0.1/FileServer", new FileImpl("FileServer"));

// Client
FileInterface fi = (FileInterface) Naming.lookup("//host/FileServer");
byte[] data = fi.downloadFile("test.pdf");
// 寫入本地檔案

CORBA:跨語言、標準化的分布式物件標準

  • IDL (Interface Definition Language) 定義介面,語言中立
  • ORB (Object Request Broker) 處理通訊、編碼/解碼 (GIOP/IIOP)
  • 支援 C++、Java、COBOL 等多語言互操作
  • 流程:IDL → 編譯器產生 Stub/Skeleton → Server 實作 Servant → Client 透過 ORB 取得物件引用

RMI vs CORBA 核心對比

維度RMICORBA
語言綁定 Java Only Multi-language (IDL)
開發複雜度 低(純 Java、註解/介面驅動) 高(IDL、編譯器、ORB 配置)
傳輸協定 JRMP (Java Remote Method Protocol) IIOP (Internet Inter-ORB Protocol)
序列化 Java Serialization CDR (Common Data Representation)
安全/交易/命名 J2EE 容器整合 (JNDI, JTA, JAAS) CORBA Services (Security, Transaction, Naming, Trading)
防火牆穿透 較難(動態埠口) IIOP 固定埠口較易控制
效能 Java 之間極佳 跨語言有序列化開銷

選型建議

  • 純 Java 環境、追求開發效率 → RMI (或更現代的 Spring Remoting, gRPC, REST)
  • 異構系統整合、非 Java 系統互操作 → CORBA (或 Web Services, gRPC, Message Queue)
  • 現代架構:RMI/CORBA 多為維護舊系統,新專案傾向 REST/gRPC/Message-Driven Architecture

本文以檔案傳輸為例展示 RMI 完整開發流程,CORBA 篇幅受限略過詳細代碼,核心差異在於「語言中立」與「標準化開銷」的權衡。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved