淺析Apache Felix項目中的OSGi
OSGi正在被越來越多的項目所采用。OSGi規(guī)范為以模塊化形式編寫和部署應用到本地或遠程計算機提供了一個公共模型。與創(chuàng)建一個單一的不可分應用(monolithic app)不同,該規(guī)范允許眾多小組件相互協(xié)作。這篇新聞為你展現(xiàn)了為什么有像OSGi這樣一個規(guī)范是至關重要的,它真正包含了哪些內(nèi)容,以及未來發(fā)展方向。 Apache Felix是一個OSGi 4版本規(guī)范的Apache實現(xiàn),而Equinox項目是Eclipse開源組織的OSGi R4版本規(guī)范核心框架的實現(xiàn)。OSGi是一個基于Java的服務平臺規(guī)范,其目標是被需要長時間運行、動態(tài)更新、對運行環(huán)境破壞最小化的系統(tǒng)所使用。有許多公司(包括Eclipse IDE,它是第一個采用OSGi技術的重要項目)已經(jīng)使用OSGi去創(chuàng)建其微內(nèi)核和插件架構,以允許在運行時刻獲得好的模塊化和動態(tài)組裝特性。幾個其他項目如Apache Directory、Geronimo、Jackrabbit、Spring以及JOnAS也都正在轉(zhuǎn)向采用OSGi。
Richard Hall是該項目的提交者之一,他上個月在ApacheCon對Apache Felix項目作了介紹。他的介紹是從OSGi架構概覽及其框架層開始的。他說任何應用,不論是嵌入式系統(tǒng)、客戶端或服務器應用,都可以從在其使用OSGi實現(xiàn)過程中獲取模塊化和擴展性等益處。在介紹中,Richard還示范了在一個簡單的基于Swing的繪圖程序中使用Felix組件的例子。
InfoQ就Felix項目目標、當前狀態(tài)、以及該框架怎樣適合其他Apache項目等問題采訪了Richard,尤其是那些在SOA棧中的項目,因為Felix也把提供面向服務組件模型作為目標。
Richard說Apache Felix項目是志愿者社區(qū)努力的結果。該項目的目標是使該框架易于嵌入其他項目中去。他說目前發(fā)布的1.0.1版本大部分符合了OSGi的R4規(guī)范,并且已經(jīng)進行過OSGi TCK(Test Compatibility Kit)測試。TCK測試套件測試結果發(fā)布在Apache Felix 網(wǎng)站上。按照R4規(guī)范要求,目前主要缺少的一塊是支持bundle fragment,這將在下一個版本中完成。Fragment是附屬于主要應用bundle上的bundle。關于fragment一個比較好的例子是為不同地區(qū)翻譯文件。Felix 1.0.2版預計很快就會發(fā)布。
針對Felix怎樣適合Apache SOA項目(如ServiceMix和CXF)這一問題,他回答說,ServiceMix和CXF社區(qū)對OSGi技術都很有興趣,而且OSGi平臺為部署和管理那些使用了這些技術實現(xiàn)的服務提供了一個很好的環(huán)境。
企業(yè)SOA項目中依賴和版本管理及治理都在達成SOA利益過程中扮演著至關重要的角色,F(xiàn)elix能在企業(yè)級SOA實施中扮演什么樣的角色呢?
至少,它給它們提供了一個平臺。其中,它們可以以模塊化的形式打包、部署、以及執(zhí)行應用,以幫助它們進行依賴和版本管理。事實上,OSGi技術正是Java平臺所缺少的模塊化層。另外,OSGi平臺還提供面向服務的應用模型,除了模塊化之外,它還允許基于OSGi的應用按照面向服務原則來構建。
最新版Eclipse——Europa,是作為OSGi模塊來打包的。有計劃將Apache其他產(chǎn)品(例如Tomcat)也打包成OSGi模塊嗎?
Eclipse使用OSGi作為其插件的模塊化機制。我們Felix的目標是讓其它Apache項目將其產(chǎn)品打包成OSGi bundle。在Felix內(nèi)部,我們已經(jīng)開始為各種常用開源包的JAR文件創(chuàng)建bundle包裝器,以幫助啟動這一過程。很多情況下,這一工作簡單到只需在已有JAR文件manifest中增加一些元數(shù)據(jù)即可,但是還有一些情況下,將已有項目與OSGi技術集成需要付出更多的努力。我們也正在與Maven社區(qū)一起工作,試圖給每個Maven所創(chuàng)建的JAR文件中增加一些OSGi元數(shù)據(jù),這將是一個好的開始。
Apache Felix的下一個重要版本將是1.2版本,它將會支持bundle fragment。有了對fragment的支持,Richard認為這個Felix將基本上符合R4規(guī)范要求,這將使其進一步符合R4.1規(guī)范過程更加容易。
今年初,F(xiàn)elix從Apache孵化器畢業(yè),成為一個頂級項目;該項目團隊在十月份發(fā)布了1.0.1版本。上個月,一個針對服務組件運行時(Service Component Runtime ——SCR)描述符的Maven插件發(fā)布了。該插件可以用來基于注解產(chǎn)生OSGi服務描述符。Felix也有了Eclipse集成支持,開發(fā)者可以在Eclipse IDE里運行Felix。Felix組件按照Apache軟件許可證2.0(Apache Software License Version 2.0)來發(fā)布許可。
這是felix 以前版本的列表:http://archive.apache.org/dist/felix/
【編輯推薦】