淺析Apache Felix項目中的OSGi

Apache Felix是一個OSGi 4版本規範的Apache實現,而Equinox項目是Eclipse開源組織的OSGi R4版本規範核心框架的實現。

OSGi正在被越來越多的項目所採用。OSGi規範爲以模塊化形式編寫和部署應用到本地或遠程計算機提供了一個公共模型。與創建一個單一的不可分應用(monolithic app)不同,該規範允許衆多小組件相互協作。這篇新聞爲你展現了爲什麼有像OSGi這樣一個規範是至關重要的,它真正包含了哪些內容,以及未來發展方向。 Apache Felix是一個OSGi 4版本規範的Apache實現,而Equinox項目是Eclipse開源組織的OSGi R4版本規範核心框架的實現。OSGi是一個基於Java的服務平臺規範,其目標是被需要長時間運行、動態更新、對運行環境破壞最小化的系統所使用。有許多公司(包括Eclipse IDE,它是第一個採用OSGi技術的重要項目)已經使用OSGi去創建其微內核和插件架構,以允許在運行時刻獲得好的模塊化和動態組裝特性。幾個其他項目如Apache Directory、Geronimo、Jackrabbit、Spring以及JOnAS也都正在轉向採用OSGi。

Richard Hall是該項目的提交者之一,他上個月在ApacheCon對Apache Felix項目作了介紹。他的介紹是從OSGi架構概覽及其框架層開始的。他說任何應用,不論是嵌入式系統、客戶端或服務器應用,都可以從在其使用OSGi實現過程中獲取模塊化和擴展性等益處。在介紹中,Richard還示範了在一個簡單的基於Swing的繪圖程序中使用Felix組件的例子。

InfoQ就Felix項目目標、當前狀態、以及該框架怎樣適合其他Apache項目等問題採訪了Richard,尤其是那些在SOA棧中的項目,因爲Felix也把提供面向服務組件模型作爲目標。

Richard說Apache Felix項目是志願者社區努力的結果。該項目的目標是使該框架易於嵌入其他項目中去。他說目前發佈的1.0.1版本大部分符合了OSGi的R4規範,並且已經進行過OSGi TCK(Test Compatibility Kit)測試。TCK測試套件測試結果發佈在Apache Felix 網站上。按照R4規範要求,目前主要缺少的一塊是支持bundle fragment,這將在下一個版本中完成。Fragment是附屬於主要應用bundle上的bundle。關於fragment一個比較好的例子是爲不同地區翻譯文件。Felix 1.0.2版預計很快就會發布。

針對Felix怎樣適合Apache SOA項目(如ServiceMix和CXF)這一問題,他回答說,ServiceMix和CXF社區對OSGi技術都很有興趣,而且OSGi平臺爲部署和管理那些使用了這些技術實現的服務提供了一個很好的環境。

企業SOA項目中依賴和版本管理及治理都在達成SOA利益過程中扮演着至關重要的角色,Felix能在企業級SOA實施中扮演什麼樣的角色呢?

至少,它給它們提供了一個平臺。其中,它們可以以模塊化的形式打包、部署、以及執行應用,以幫助它們進行依賴和版本管理。事實上,OSGi技術正是Java平臺所缺少的模塊化層。另外,OSGi平臺還提供面向服務的應用模型,除了模塊化之外,它還允許基於OSGi的應用按照面向服務原則來構建。

最新版Eclipse——Europa,是作爲OSGi模塊來打包的。有計劃將Apache其他產品(例如Tomcat)也打包成OSGi模塊嗎?

Eclipse使用OSGi作爲其插件的模塊化機制。我們Felix的目標是讓其它Apache項目將其產品打包成OSGi bundle。在Felix內部,我們已經開始爲各種常用開源包的JAR文件創建bundle包裝器,以幫助啓動這一過程。很多情況下,這一工作簡單到只需在已有JAR文件manifest中增加一些元數據即可,但是還有一些情況下,將已有項目與OSGi技術集成需要付出更多的努力。我們也正在與Maven社區一起工作,試圖給每個Maven所創建的JAR文件中增加一些OSGi元數據,這將是一個好的開始。

Apache Felix的下一個重要版本將是1.2版本,它將會支持bundle fragment。有了對fragment的支持,Richard認爲這個Felix將基本上符合R4規範要求,這將使其進一步符合R4.1規範過程更加容易。

今年初,Felix從Apache孵化器畢業,成爲一個頂級項目;該項目團隊在十月份發佈了1.0.1版本。上個月,一個針對服務組件運行時(Service Component Runtime ——SCR)描述符的Maven插件發佈了。該插件可以用來基於註解產生OSGi服務描述符。Felix也有了Eclipse集成支持,開發者可以在Eclipse IDE裏運行Felix。Felix組件按照Apache軟件許可證2.0(Apache Software License Version 2.0)來發布許可。

這是felix 以前版本的列表:http://archive.apache.org/dist/felix/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章