Sun的JSR 294被叫停 應用服務器押寶OSGi
本文來自InfoQ中文站,原文標題:《Bundle.update:Java EE中的OSGi、JSR 294被叫停》。http://www.infoq.com/cn/news/2010/01/state-of-osgi
自從上次的bundle.update發布以來,在OSGi與模塊化Java領域中發生了一系列值得我們關注的事件:JSR 294被叫停、Enterprise Expert Group發布了第4個草案、WebSphere上可以直接運行OSGi應用以及即將到來的OSGi大會對預先報名者提供折扣優惠,同時演講人招募的時間即將截止。
JSR 294被叫停
Sun領導的兩個模塊化JSR(分別是JSR 294——Java語言改進的模塊化支持,以及JSR 277——Java模塊化系統)都已被叫停。這樣就剩下JCP批準的模塊化系統JSR 291(雖然基于有些古老的OSGi 4.1)仍活躍在各種系統中了,其中也包括Sun新近發布的GlassFish v3應用服務器。
我們尚不清楚JSR 294為何會被叫停(JSR 277已經被叫停一年了)。小組收到的上一封郵件表明:
除了實現JSR以外,JDK 7還將提供特定于實現的特性,比如classpath(沒有任何一個JSR提過這部分內容)以及Jigsaw模塊化系統。
JDK模塊化使用了Jigsaw模塊化系統。模塊化的可見性是由一個原型化的模塊info.java文件控制的,這在未來可能會發生變化。模塊的私有訪問實際上并沒有在模塊化中使用到,這部分主要是起引導作用的。
關于Jigsaw的進一步討論將在Jigsaw-dev列表中展開。
簡單模塊系統自從被提出后就沒有什么新進展,盡管版本的事情是由JSR 294控制的,但事實卻并非如此,因為其開發過程是在jigsaw-dev郵件列表上進行的,而該郵件列表卻游離于JSR 294專家組的郵件列表之外。種種事實表明Jigsaw采取了特定于實現的特性來模塊化JDK,雖然這本身是非常好的,但卻無法實現編寫一次,到處運行的模塊。可能以后這都不算什么大事了,因為JDK 7最早也要到2011年才會發布,應用服務器已經將寶壓在了OSGi上了。
更新:在本新聞發布后,Alex Buckley證實這種停止實際上是自動的,緣于提案發布的時間而不是說項目就停止開發了。
WebSphere、GlassFish、DM Server以及基于OSGi的服務器
Kirk Knoernschild發文表明一些企業正在構筑自己的OSGi,WebSphere V7 alpha最近就聲明可以將OSGi bundle部署到WebSphere中(雖然從2006年開始WebSphere server就已經運行在OSGi內核上了)。
最近發布的GlassFish v3也將OSGi運行時引入到了Sun的Java應用服務器中。盡管GlassFish還不支持直接運行本地的OSGi bundle,但我們可以將其置于Equinox和Felix上,可以在運行著的GlassFish服務器上同時運行其他bundle。
SpringSource的dm Server 2.0.0.M6已經可以運行OSGi web bundle了,借助于其bundle倉庫,dm Server指引著企業運行時的前進方向。
Maven 3與Tycho構建、倉庫以及Eclipse Marketplace
隨著Maven 3(其Tycho可以構建基于OSGi的應用)發布日期的臨近,它將成為Eclipse構建EGit以及Tigerstripe的***。
相對于P2倉庫來說,Maven倉庫的查詢能力受到了人們的質疑,但事實上,Maven倉庫也可以進行查詢。有事實可以證明,Maven倉庫是整個Maven構建過程中最為成功的一個方面,它可以根據依賴關系自動下載所需的程序庫。從Pack200壓縮這個角度來看,P2可能更加高級一些,它還可以更新非JAR組件,然而Mave的über倉庫在廣度上輕而易舉地就超越了Eclipse P2倉庫。不僅如此,P2倉庫經常被切分成多個獨立的倉庫,而Maven則具有一個所有項目都可共享的全局倉庫。
最近,Eclipse基金會發布了Eclipse Marketplace,它源自于成功的Eclipse插件中心2站點。最初建立EPIC的目的是提供一個中央下載站點,為那些不在Eclipse.org站點上的流行插件提供下載服務,比如Findbugs和Checkstyle。
Eclipse基金會在2006年購買了EPIC的使用權,但后來就基本沒再動過它,直到最近開發出了Eclipse Marketplace后這一點才有所改觀。在這段時間內,由于缺乏統一的下載結構以及從Update Site到P2的轉變極大地限制了中央下載站點(用于搜索及下載插件)的發展勢頭。
除了插件以外,新的Marketplace還托管了RCP應用(既有商業的,也有免費的)以及培訓與咨詢供應商。
***要說的是IntelliJ 9的發布,其社區版與商業版都提供了對OSGi應用的支持。由于該***Java IDE可以在本地構建OSGi應用,同時對OSGi應用又提供了巨大的支持,開發模塊化Java應用變得***的簡單。
OSGi 4.2 EEG草案發布
最近Enterprise Expert Group發布了第4個草案。EEG的目的是定義一套規范以便JEE風格的應用可以作為本地bundle運行在OSGi運行時中。
現在Web應用可以作為bundle使用了。這樣不僅使得OSGi運行時能夠托管WAR(與Jetty之類的服務器一樣),同時WAR還可以在運行時中擁有版本依賴。Pax Web早就可以實現這一點了,但現在形成了標準,任何OSGi運行時都可以使用了。
OSGi框架中對bundle的JMX控制,對于核心OSGi服務的標準化綁定,比如Package Admin以及Cofniguration Admin等等。
事務已經作為JTA綁定的一部分,這樣就可以從OSGi服務中獲取事務了。
JNDI訪問既可以從OSGi中獲取,也可以在OSGi服務間得到。
兼容于OSGi的JDBC工廠(與Class.forName()不同)。
憑借這些服務,企業應用可以運行在OSGi環境中而無需完整的JEE棧。盡管JEE 6已經發布,但它有可能是***獲得批準的幾個JSR之一,Mark Reinhold如是說:
Q:現在為何不開啟一個closures JSR,讓專家組完成提案工作?
#t#A:到目前為止Project Coin還沒有一個JSR,原因與此類似,直到JCP執行委員會內部的爭論平息之后才有可能提出新的Java SE JSR。
即將到來的OSGi大會
倫敦將于今年1月23日舉辦OSGi DevCon London,同時還將舉辦JAX London。現在,大會的議程已經確定下來了,Kirk Knoernschild將進行主題演講。
Santa Clara將于今年的3月22——25日舉辦OSGi DevCon,同時還有 EclipseCon 2010。Robert “Bob大叔” Martin將進行主題演講。目前還在招募演講者,如果你有這方面的想法,請遞交你的提案。