1. 程式人生 > >OSGi是什麽:Java語言的動態模塊系統(一)

OSGi是什麽:Java語言的動態模塊系統(一)

平臺 使用 數據 osgi servle http cto 優點 重啟

OSGi是什麽

OSGi亦稱做Java語言的動態模塊系統,它為模塊化應用的開發定義了一個基礎架構。OSGi容器已有多家開源實現,比如Knoflerfish、Equinox和Apache的Felix。您可以通過這些容器,把您的應用程序劈分為多個模塊單元,這樣,您就可以更容易地管理這些模塊單元之間的交叉依賴關系。

OSGi規範和Servlet規範及EJB規範類似,該規範定義了兩種對象,一是容器對外提供的服務對象,另一個是容器和您的應用程序之間必須遵守的契約,其中,服務對象是容器要實現的。您如果想要在OSGi平臺上進行開發,首先,您必須要使用OSGi API來創建您的應用,然後將之部署到OSGi容器中。從開發者的角度看,OSGi具有以下優點:

a) 您可以在不重啟容器的情況下,動態地安裝、卸載、啟動和停止您的應用程序中的不同模塊

b) 對於您應用程序中的某一特定模塊,容器可以同時運行該模塊的多個版本

c) OSGi為開發嵌入式應用、移動應用、富互聯網應用(RIA)提供了非常優秀的基礎架構

如果說您使用Servlet容器開發您的網絡應用,使用EJB容器開發交易式應用,您可能會問,為什麽我們還需要另外的容器呢?對這個問題的簡短回答是,OSIG容器是專門為開發復雜的Java應用準備的,在這些應用的開發過程中,您非常需要將這些應用分割為一個個的模塊。在本系列以後的文章中,我將針對這個問題進行展開並深入回答。

1. OSGi在企業開發中的應用

OSGi聯盟(OSGiAlliance)於1999年3月開始著手制定OSGi規範,其主要目的就是要制定一套開放式標準,以便向局域網及其中的設備提供可管理的服務;其基本思路是,一旦您在網絡設備(如服務器和嵌入式設備)上使用了OSGi服務平臺,您就可以在網絡上的任何地方管理這些設備上運行的軟件組件的生命周期,可以在後臺對這些組件進行安裝、升級或卸載,但不需要打斷該設備的正常運行。

近年來,OSGi技術在嵌入式系統及網絡設備市場得到廣泛應用。現在,由於Eclipse的成功,OSGi在企業開發中逐漸成為切實可行的、較有價值的一種技術。

1.1. 業界對OSGi的支持逐漸上升

2003年,Eclipse開發團隊開始想辦法提高Eclipse工具集的模塊化,以便讓它成為更加動態的富客戶端平臺。Eclipse團隊最終選中OSGi框架作為其組件的運行時模型,2004年6月發布的Eclipse3.0就是第一個基於OSGi平臺的版本。現在幾乎所有的企業應用服務器都支持OSGi,Spring也通過一個叫“OSGi服務平臺上的Spring動態模型(亦稱之為OSGiSpring)”的項目來支持OSGi。該項目提供OSGi基礎架構,以便我們在Spring的企業開發中更容易使用OSGi。

2. 開放源碼的OSGi容器

從企業開發者的角度看,OSGi容器的要求很低,您可以很容易地把它嵌入到企業應用中,比如我們在開發Web應用時,我們可以把這個Web應用分為多個模塊,一個模塊負責視圖層,另一個模塊負責DAO層,第三個模塊負責數據訪問層,如果我們使用OSGi容器來管理這些模塊之間的交叉依賴,我們就可以在不用重啟該Web應用的前提下,將DAO層從速度較慢的升級到速度較快的DAO。

只要您的應用和OSGi規範兼容,您的應用就應該可以運行在任何OSGi容器中,現在比較流行的開放源碼的OSGi容器有以下三種:

a) Equinox容器是參照OSGi規範第4版實現的,它構成了Eclipse IDE的核心—模塊化的Java運行時;它實現了OSGi規範4中規定的必須強制實現的功能,同時,它也實現了OSGi規範中大部分的可選功能;

b) Knoflerfish是OSGi規範第3版和第4版的開源實現,它實現了OSGi規範規定的必須實現的功能及部分可選功能;

c) Apache的Felix是Apache軟件基金會實現的OSGi開源容器,至本文截稿時為止,該容器還沒有和OSGi規範完全兼容。在本文中,我們將使用Equinox作為我們的OSGi容器。

OSGi是什麽:Java語言的動態模塊系統(一)