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

Java 學習雜談(六)—— RMI 機制深度解析與 JVM 沙箱安全模型

     編輯:Java 相關知識

RMI (Remote Method Invocation) 核心原理

經典比喻:A 機器需計算加法,調用 B 機器的方法如同本地調用。RMI 是 EJB 實現支柱,構建分布式應用核心:客戶端不見服務端實現代碼,天然安全。

RMI 實現四要素

  1. 服務端:擁有實現代碼(如加法服務)。
  2. 客戶端知曉服務端 IP。
  3. 客戶端知曉服務名稱。
  4. Java 反射機制 + 接口:客戶端持有接口引用,服務端運行時 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) 目錄中的服務名,類比餐廳菜單:客戶點菜(查找服務),廚房烹飪(服務端實現),過程不透明。
  • JDK bin/rmiregistry.exe 啟動 RMI 註冊表,rmic 生成 Stub/Skeleton(舊版本),新版本動態生成。

JVM 沙箱安全模型

四大核心組件:

  1. 類加載器結構
  2. Class 文件驗證器
  3. JVM 內置安全特性
  4. 安全管理器及 Java API

類加載器三大安全職能

  • 防止惡意代碼干擾善意代碼。
  • 守護受信類庫邊界。
  • 將代碼歸入保護域,確定權限。

雙親委派模型與命名空間隔離

  • JVM 為每個類加載器維護獨立命名空間,相互不可見。
  • 包定義:同一加載器加載、同一包名的類型集合。
  • 加載順序:Bootstrap → Extension → Application (AppClassLoader) → URLClassLoader (網絡)。
  • 安全邏輯:
    1. 內層優先加載,外層同名惡意類無法生效。
    2. 包隔離訪問域,外層代碼無權訪問內層類。

Java 平台無關性鐵證

C/C++ 中 int 寬度隨平台字長變化;Java int 永遠 32 位有符號二進制補碼,float 永遠 IEEE 754 32 位浮點數。數據類型規範統一,實現「一次編寫,到處運行」。

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