| 維度 | RMI | CORBA |
| 語言支援 | 純 Java | 任意語言 (C++, COBOL, Python...) |
| 傳輸協議 | JRMP / RMI-IIOP | GIOP/IIOP (標準化) |
| 物件模型 | Java 物件序列化 | IDL 定義語言中立介面 |
| 部署複雜度 | 低 (JDK 內建) | 高 (需商用/開源 ORB) |
| 效能 (Java-Java) | 高 (原生序列化) | 中 (IDL 映射開銷) |
| 防火牆穿透 | 需額外配置 | IIOP 標準埠較易 |
混合架構:RMI 封裝非 Java 代碼
若團隊以 Java 為主、少量非 Java 元件,可避免引入 CORBA:
[Java Client] --RMI--> [Java Wrapper Object] --JNI/JNA/JDBC--> [Native Code / DB / Legacy]
- Wrapper 物件作為適配器,內部用 JNI/JNA 調用本地庫、或 JDBC 訪問資料庫
- 客戶端純 RMI 體驗,無感知後端異構性
- 省去 ORB 採購、部署、版本升級成本
選型決策樹
- 全棧 Java? → RMI (或 gRPC/Thrift 現代替代)
- 跨語言、跨組織、長期演進? → CORBA (或 Web Services/REST)
- Java 主導、少量本地整合? → RMI + Wrapper
- 高效能、低延遲、內網微服務? → gRPC / Netty 自定協議
現代視角
CORBA/RMI 屬第一代分散式技術。新專案優先考慮:REST/JSON (HTTP 友好)、gRPC/Protobuf (高效能 RPC)、GraphQL (靈活查詢)、Message Queue (異步解耦)。CORBA 仍存活於金融、電信、航太等遺留核心系統維護中。
- 上一篇文章: CORBA 學習總結:Java 整合非 Java 代碼的跨語言方案
- 下一篇文章: Java Applet 與 CORBA 整合:安全沙箱與防火牆挑戰
Copyright ©
程式碼之家 All Rights Reserved