經典比喻:A 機器需計算加法,調用 B 機器的方法如同本地調用。RMI 是 EJB 實現支柱,構建分布式應用核心:客戶端不見服務端實現代碼,天然安全。
Class.newInstance() 返回實現對象,客戶端調用接口方法,不知具體實現類(如 PersonImplA 或 PersonImplB)。public interface Person { void sayHello(); }
public class PersonImplA implements Person {
public void sayHello() { System.out.println("Hello!"); }
}
public class PersonImplB implements Person {
public void sayHello() { System.out.println("Nice to meet you!"); }
}
// 客戶端
Person p = (Person) Naming.lookup("PersonService");
p.sayHello();
Naming.lookup 查找 JNDI (Java Naming and Directory Interface) 目錄中的服務名,類比餐廳菜單:客戶點菜(查找服務),廚房烹飪(服務端實現),過程不透明。bin/rmiregistry.exe 啟動 RMI 註冊表,rmic 生成 Stub/Skeleton(舊版本),新版本動態生成。四大核心組件:
C/C++ 中 int 寬度隨平台字長變化;Java int 永遠 32 位有符號二進制補碼,float 永遠 IEEE 754 32 位浮點數。數據類型規範統一,實現「一次編寫,到處運行」。