OSGi是什么?
OSGi是一種松散耦合的組件和服務運行平臺規范. 簡單的說, 用戶只需要修改通用的Java類庫檔案JAR文件中的META-INF下的元數據文件MANIFEST.MF, 添加必要的標簽信息, 放置到OSGi框架的Bundle Repository中, 用戶的類庫就成了OSGi環境的一部分.
成為OSGi環境的組件, 為其他標準的OSGi組件提供代碼功能是最為直接的一種功能. 用戶也可以將提供組件中的某種功能的接口和實現實例發布到OSGi服務注冊表中, 供其他組件直接查找使用. 這就是OSGi的Serivce概念. 同樣, 用戶可以查找OSGi環境中其他組件提供的接口服務, 調用改服務完成必要的處理.
OSGi組件提供的服務具有兩種層面的含義: 系統層面, 即一個組件為其他組件提供服務, 這些服務體現為Java接口的實現; 業務層面, 即一個組件為外部系統或用戶提供某種業務服務實現.
OSGi的組成.
OSGi框架由4層組成:運行環境、模塊、生命周期管理、服務注冊.
運行環境是指標準的java環境. 只要具備了java2的構造和輪廓的都是被認可的運行環境.
模塊層定義了采用的ClassLoader機制.
生命周期管理層則為bundle的安裝、啟動、停止、更新和卸載提供了支持.
服務注冊為Bundles提供了一個動態的協作模型. 本來Bundles可通過傳統的class共享方式來實現協作, 但在動態的安裝和卸載代碼的環境下這種方法是不適用的. 服務注冊為Bundles間共享Objects提供了一種可用的模型, OSGI提供了一堆的事件來通知服務的使用者關于服務的注冊和卸載, 服務其實就是簡單的Java objects.