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

OSGi:Java 模組化框架的另類進化 (一) —— 模組隔離、類別載入器與可見性恢復

     編輯:J2EE

為何需要 OSGi?

傳統 Classpath 是單一扁平列表:同名類別**首個勝出**,後續被忽略。多庫依賴時極易發生版本衝突、LinkageError、IncompatibleClassChangeError,甚至**靜默錯誤** (錯誤類別被載入卻無異常)。

第一步:模組隔離 — 每模組一個 ClassLoader

  • 各模組擁有專屬 ClassLoader,只能載入自身內容。
  • 可委派其他 ClassLoader 載入類別 (雙親委派或同級委派)。
  • 結果:同名類別共存互不干擾,保證拿到預期版本。

第二步:受控恢復可見性 — 匯出/匯入機制

隔離後模組無法通信。需**謹慎、受控**地恢復可見性:

  • Java 缺「模組級」存取修飾符:public 公開給全世界,protected/package-private 只限包/繼承,javac 無法識別模組邊界。
  • OSGi 方案:**套件級匯出/匯入**。
    • 模組在 Manifest 宣告 Export-Package: com.api。
    • 其他模組宣告 Import-Package: com.api 才能使用。
    • 非匯出套件 (如 com.impl) 完全不可見,實現真正封裝。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved