天天看點

OSGi規範概要

目前最新的OSGi規範是2012年7月釋出的Release 5,Version5.0(後文簡稱為R5.0)版本,該規範定義了Java子產品化系統所涉及的各種場景(開發、打包、部署、更新和互動等),以及其中用到的标準接口和參考模型。它是一份内容很全面、涉及範圍很廣泛的技術規範,從嵌入式系統到大型伺服器系統,從子產品的編碼開發到部署使用,從OSGi核心架構到外圍擴充服務都有專門的定義。

OSGi規範并不是單一的規範文檔,而是由一系列子規範構成,這些子規範主要可分為兩大部分,其中一部分用于描述OSGi的核心架構(OSGi Framework)。OSGi核心架構是一個可運作OSGi系統的最小集合,它由以下内容組成:

  • 執行環境(Execution Environment)。由于OSGi所适用的目标範圍非常廣泛,為了更好地處理不同硬體、軟體環境對OSGi造成的相容性問題,在建立其他約定之前,必須先定義好系統的執行環境。
  • 安全層(Security Layer)。描述了基于Java 2安全架構實作的代碼驗證、JAR檔案數字簽名、數字證書服務,安全層貫穿了OSGi架構的其他各個層次。
  • 子產品層(Module Layer)。子產品層從“靜态”的角度描述了一個子產品的中繼資料資訊、執行環境定義、子產品限制和解析過程、類加載順序等内容。子產品層是整個OSGi中最基礎、最底層的層次。
  • 生命周期層(Life Cycle Layer)。生命周期層從“動态”的角度描述了一個子產品從安裝到被解析、啟動、停止、更新、解除安裝的過程,以及在這些過程中的事件監聽和上下文支援環境。
  • 服務層(Service Layer)。描述了如何定義、注冊、導出、查找、監聽和使用OSGi中的服務。服務層是所有OSGi标準服務的基礎。
  • 架構API(Framework API)。由一系列通過Java語言實作的接口和常量類構成,為上面各層提供面向Java語言的程式設計接口。

構成OSGi規範的另外一部分内容是OSGi标準服務,這些标準服務試圖以OSGi為基礎,在軟體開發的各種場景中(如配置管理、裝置通路、處理網絡請求等),建立一套标準服務和程式設計接口。軟體開發所遇到的場景是多種多樣、極其複雜的,是以OSGi對應定義的标準服務也非常龐大和複雜,OSGi所包含的數十個子規範大部分都用于定義這些标準服務。以下列舉了一小部分較為常用的OSGi标準服務。

  • 事件服務(Event Admin Service)
  • 包管理服務(Package Admin Service)
  • 日志服務(Log Service)
  • 配置管理服務(Configuration Admin Service)
  • HTTP服務(HTTP Service)
  • 使用者管理服務(User Admin Service)
  • 裝置通路服務(Device Access Service)
  • IO連接配接器服務(IO ConnectorService)
  • 聲明式服務(Declarative Services)

其他OSGi标準服務

大部分OSGi标準服務都沒有寫入OSGi核心(Core)規範之中,而是定義在OSGi服務綱要(Service Compendium)規範和企業級(Service Enterprise)規範之中。從上面對OSGi規範簡要介紹我們可以總結出來,平時所說的“OSGi”大緻包含了如下圖所示的内容。

OSGi規範概要

圖:OSGI内容總覽

雖然伴随着OSGi規範文檔還釋出了一些代碼性質的内容,例如XML Schema定義和少量的JAR包,但是這些JAR包僅僅包含OSGi架構API及一些标準服務的接口。換句話說,僅僅靠這些随規範釋出的代碼是無法建立一個可運作的OSGi系統的。要讓OSGi運作起來,還需要具體實作OSGi規範的程式才行,我們把這些程式稱為“實作架構”或“OSGi實作”,如Eclipse的Equinox、Apache的Felix和Makewave的Knopflerfish等都是常見的OSGi實作。

------------------------------------

OSGi規範概要

本文節選自《深入了解OSGi:Equinox原理、應用與最佳實踐》第2章"子產品層規範與原理"第1節”OSGi規範概要“。

《深入了解OSGi:Equinox原理、應用與最佳實踐》作者:周志明,謝小明。

豆瓣收藏:http://book.douban.com/subject/21324330/

樣章試讀:http://download.csdn.net/detail/hzbooks/5069476

《深入了解OSGi:Equinox原理、應用與最佳實踐》共14章,分4個部分。第一部分(第1章):走近OSGi,主要介紹了什麼是OSGi以及為什麼要使用OSGi。第二部分(第2~4章):OSGi規範與原理,對最新的OSGi R5.0中的核心規範進行了全面的解讀,首先講解了OSGi子產品的建立、描述、依賴關系的處理,然後講解了Bundle的啟動原理和排程管理,最後講解了與本地及遠端服務相關的内容。第三部分:OSGi服務與Equinox應用實踐(第5~11章),不僅詳細講解了OSGi服務綱要規範和企業級規範中最常用的幾個子規範和服務的技術細節,還通過一個基于Equinox的BBS案例示範了Equinox的使用方法,最重要的是還通過源碼分析了Equinox關鍵功能的實作機制和原理。第四部分:最佳實踐(第12~14章),總結了大量關于OSGi的最佳實踐,包括從Bundle如何命名、子產品劃分、依賴關系處理到保持OSGi動态性、管理程式啟動順序、使用API基線管理子產品版本等各方面的實踐技巧,此外還介紹了Spring DM的原理以及如何在OSGi環節中進行程式測試。

繼續閱讀