51CTO 曾發布《OSGi 為什麼重要:向模組化轉移的主攻手》分析優勢,但許多人對 OSGi 實質仍模糊。本系列《你好,OSGi》從基礎介紹,本部分闡述 OSGi 定義與容器現狀(原文 2008 年 3 月發布於 JavaWorld)。
OSGi 即 Java 動態模組系統,為模組化應用開發定義基礎架構。多家開源容器實作:Knopflerfish、Equinox、Apache Felix。透過容器將應用拆分多模組單元,輕鬆管理交叉相依。
OSGi 規範類比 Servlet/EJB 規範,定義兩類物件:容器提供的服務物件、容器與應用間契約(服務物件由容器實作)。開發者須使用 OSGi API 建構應用並部署至容器。開發者視角三大優勢:
若 Servlet 容器開發 Web 應用、EJB 容器開發交易應用,為何仍需 OSGi 容器?簡短回答:OSGi 專為複雜 Java 應用設計,極需將應用拆分模組。後續文章將深入探討。
OSGi Alliance 1999 年 3 月起草規範,旨在制定開放標準向區域網路設備提供可管理服務。核心思維:網路設備(伺服器、嵌入式裝置)採用 OSGi 服務平台後,可從網路任何位置管理軟體元件生命週期,背景安裝、升級、卸載不中斷設備運作。
近年 OSGi 廣泛應用於嵌入式系統與網路設備市場。隨 Eclipse 成功,OSGi 在企業開發成為切實可行的高價值技術。
企業開發者視角:OSGi 容器需求低,易嵌入企業應用。例:Web 應用拆分視圖層、DAO 層、資料存取層模組,OSGi 容器管理交叉相依,可不重啟 Web 應用將慢速 DAO 升級為快速 DAO。
應用相容 OSGi 規範即可運行於任一容器。三大主流開源容器:
本系列採用 Equinox 作為 OSGi 容器。下部分將繼續介紹 OSGi 基礎知識。