OSGi近況總結(jié):用戶群蓬勃發(fā)展
今年九月下旬發(fā)布了OSGi 4.2規(guī)范,至今已經(jīng)一個月有余。InfoQ的Alex Blewitt總結(jié)了這一個多月來的OSGi進展情況,應(yīng)該說是一片大好,十分熱鬧。下面請看詳情:
51CTO編輯推薦:OSGi入門與實踐全攻略
今年初發(fā)布的Equinox 3.5實現(xiàn)了OSGi規(guī)范草案,而最近發(fā)布的Apache Felix 2.0也提供了對OSGi 4.2的支持。除此之外,前幾天發(fā)布的Knopflerfish 3.0 beta除了框架加載器還在開發(fā)當中外已經(jīng)實現(xiàn)了4.2核心。
兩周前發(fā)布的Apache Karaf 1.0構(gòu)建在核心框架之上,其目的在于形成一個獨立于引擎的OSGi框架,同時帶有幾個事先打好包的bundle,比如Blueprint、provisioning、日志、遠程訪問(通過SSH)等。對于那些OSGi新手來說,這是一個很好的起步點,因為它把所有東西都已經(jīng)打好包了,就像是構(gòu)建在標準Linux內(nèi)核之上的Linux分發(fā)一樣,可以提供額外的特性和管理功能。
近日SpringSource(已經(jīng)被VMware收購)發(fā)布了dm Server 2.0M5,該版本也為Blueprint服務(wù)提供了OSGi參考實現(xiàn)并使用了嵌套框架(nested framework)特性。該特性在OSGi 4.2意見征集時被提出來,但卻被擱置到未來版本中,OSGi框架可以利用該特性為特定的應(yīng)用創(chuàng)建內(nèi)部框架(在dm Server術(shù)語中叫做region)。這樣我們就可以在系統(tǒng)中安裝多個應(yīng)用并將這些應(yīng)用與其他框架隔離開來。從中獲得的經(jīng)驗一定會為下一版本的OSGi鋪平道理.
近日Jetty 7.0發(fā)布了,它既能作為獨立的Java Web引擎,也可以嵌入到其他應(yīng)用中(包括OSGi和傳統(tǒng)的Java)。Oracle也宣布了WebLogic路線圖,其中就包含了正在進行當中的基于OSGi的microService架構(gòu)。***,Sun開發(fā)的GlassFish服務(wù)器也發(fā)布了V3 Preview,該版本也基于OSGi,大家可以下載使用。
OSGi企業(yè)專家組正致力于定義一套OSGi服務(wù)(比如解析JNDI和Web Servlet),同時也已經(jīng)定義好了OSGi遠程服務(wù),這部分內(nèi)容已經(jīng)成為4.2規(guī)范的組成部分了。專家組希望在明年初發(fā)布一個版本,但目前的情況是每個主流的應(yīng)用服務(wù)器的運行時都基于OSGi。
OSGi系統(tǒng)的運行是件輕而易舉的事情,但構(gòu)建卻不是那么回事了。雖然像Ant之類的工具可以處理平的類路徑、公共包可視化之類的事情,但OSGi運行時提供了一個更加模塊化的類路徑(既包括運行時,也包括編譯期)。現(xiàn)有的構(gòu)建方案如Eclipse PDE對于特定的用例(如構(gòu)建Eclipse插件)沒什么問題,但卻無法做到獨立于IDE或是客戶化的構(gòu)建。目前其他的構(gòu)建引擎(如基于Any/Ivy的Apache Sigil,其目標是不僅支持Eclipse,還要支持NetBeans下的OSGi開發(fā))也取得了長足的進展。盡管還處在孵化期,但最近Apache Sigil已經(jīng)可以實現(xiàn)自我構(gòu)建,今年底就將發(fā)布版本了。
現(xiàn)在Pax Construct已經(jīng)成為基于Maven構(gòu)建的不可或缺的手段,它聯(lián)合使用了bnd工具,而后者則被Felix maven bnd插件所用。甚至還有人想從Maven倉庫中構(gòu)建Eclipse,這樣我們就可以創(chuàng)建基于Maven的OSGi bundle并使用基于Eclipse的bundle了。然而最初這只適合于一小撮項目,他們可以展示這類系統(tǒng)的好處和必要性。
與此同時,Eclipse正致力于與另一個項目進行協(xié)同構(gòu)建,這次叫做B3。這么做并不會改變Eclipse項目的構(gòu)建方式,相反,其目標在于將當前的PDE構(gòu)建與其他構(gòu)建/部署系統(tǒng)如Buckminster和基于Hudson的構(gòu)建系統(tǒng)聯(lián)合起來。
現(xiàn)在NetBeans仍然徘徊在OSGi之外,這是因為netisgo(為NetBeans提供了OSGi支持)仍處在開發(fā)當中。另一方面,IntelliJ 9.0預覽版于近日發(fā)布了,社區(qū)版與旗艦版(在社區(qū)版的基礎(chǔ)上提供了額外的插件)都提供了OSGi支持。
Eclipse 3.6 M2已經(jīng)發(fā)布幾周了,它是Eclipse平臺下一版本的里程碑版本。其Equinox支持包含了OSGi EventAdmin,這在目前正在開發(fā)當中的OSGi平臺的異步支持中得到了廣泛的應(yīng)用(以前Equinox所提供的EventAdmin是個單獨下載的bundle,這意味著沒幾個人會使用到它;由于合并到了RCP中,默認情況下就可以使用它了,因此其使用的范圍也更加廣泛了)。Equinox 3.6 M2還為bundle提供了加載期編織的功能,這是通過在bundle加載期利用AspectJ注入代碼實現(xiàn)的。除此之外,Equinox控制臺也變成多會話的了,這樣多個用戶就可以同時連到遠程實例上了。
最近在工具領(lǐng)域中Eclipse E4 1.0M1異軍突起。Eclipse E4是Eclipse平臺在JavaScript運行時(如Web瀏覽器)上的一個分支,其關(guān)注點在于異步。Eclipse 3.x中的很多行為都是同步的,這意味著用戶的行為會阻塞界面的響應(yīng)。為了支持遠程客戶端,Eclipse修改了行為以支持異步訪問,其計劃是在未來將這些內(nèi)容融合進Eclipse 3.x當中。其所提供的一個特性就是在純JavaScript中創(chuàng)建OSGi bundle,大家可以訪問E4/JavaScript wiki來了解它是如何借助于JSFramework和JSConstants對象進行工作的。我們期待著E4 1.0M1的發(fā)布。
未來6個月要召開不少大會,OSGi無疑將成為一個明星。首先就是下周的SpringOne America,屆時將公布Burton Group 2nd Annual OSGi的調(diào)查結(jié)果。接下來就是本月底的EclipseCon Summit Europe,然后就是下個月的QCon SF。明年1月份將召開OSGi DevCon London 2010,緊跟其后的是3月底的QCon London以及將于加利福尼亞舉行的EclipseCon 2010。
全球的OSGi用戶群在蓬勃發(fā)展著,最近由Tara Simpson of Instil Software在Paremus舉辦的OSGi in Anger 對電信系統(tǒng)中應(yīng)用OSGi以確保遠程管理并提供服務(wù)的經(jīng)驗進行了探討。后續(xù)的討論在酒吧進行(由Luminis贊助),收到了很好的效果。由SkillsMatter記錄的演示資料與視頻放在了會議主頁上。很多項目從貌似的模塊系統(tǒng)遷移到了OSGi上,這有助于發(fā)現(xiàn)遺漏的包;Jetty在遷移到Eclipse上也遇到了同樣的問題。一旦這些系統(tǒng)遷移到OSGi上人們就會覺得如果沒有OSGi的話,想要構(gòu)建這些復雜系統(tǒng)將是一件多么難的事情啊。
簡單模塊系統(tǒng)怎么樣了呢?它的目標是為OSGi和Jigsaw創(chuàng)建一個共同點。雖然一開始是很有前途的,但就運行時空間到底應(yīng)該成為一個平的類路徑(就像現(xiàn)在的Java)還是嵌套類路徑(就像OSGi和編譯路徑),人們眾說紛紜。未來的專家組也許可以解決這個問題,但現(xiàn)在似乎還遙遙無期。Neil Bartlett將在倫敦的大會上談到這個問題。
【編輯推薦】