緊跟著早前發(fā)布的關(guān)于模塊化JDK的聲明,Mark Reinhold宣布Jigsaw項目成為OpenJDK的一部分。下面的內(nèi)容援引了其聲明:
為了在接下來的幾年中能夠模塊化JDK 7,同時也為了更好地宣傳JSR 294的工作,Sun打算不久之后在OpenJDK社區(qū)中創(chuàng)建Jigsaw項目。
該努力必然會創(chuàng)建一個簡單、低層次的模塊系統(tǒng),其設(shè)計將聚焦于模塊化JDK這個目標(biāo)。開發(fā)者可以在自己的代碼中使用該模塊系統(tǒng),Sun也會全力支持該系統(tǒng),但它并不會成為官方Java SE 7平臺規(guī)范的一部分,也不一定會得到其他SE 7實現(xiàn)的支持。
如果未來的Java SE平臺包含了特定的模塊系統(tǒng),那么Sun將提供一種方式來移植Jigsaw模塊以使之符合相應(yīng)的標(biāo)準(zhǔn)。同時,我們還會積極地尋求與其他模塊系統(tǒng)交互的方式,尤其是OSGi。
模塊化JDK這個目標(biāo)應(yīng)該是可以實現(xiàn)的,尤其是Apache Harmony已經(jīng)證明了JDK是可以被模塊化的(使用OSGi)。然而這個目標(biāo)卻因另一個原因而變得更加有趣:它將在JCP外實現(xiàn)。
由于缺少可視化的發(fā)展過程,再加上閉門造車的實現(xiàn),對于大多數(shù)人來說很難參與進JSR 277,更別提對其獻計獻策了。通常這會導(dǎo)致標(biāo)準(zhǔn)的誤入歧途,使得標(biāo)準(zhǔn)過于關(guān)注實現(xiàn)的細(xì)節(jié)而忽視了通用性。不僅如此,這還會導(dǎo)致標(biāo)準(zhǔn)成為事后諸葛亮——想解決問題時(例如奇數(shù)的版本號)卻發(fā)現(xiàn)已經(jīng)太遲了。根據(jù)聲明所述,JSR277還處于“領(lǐng)導(dǎo)地位”,但它實際已死。
從JSR277中分離出的JSR294(以前可是個龐然大物,不過現(xiàn)在已經(jīng)模塊化了)是個很大的進步;它將引入一些語言上的變化,這會使得模塊化的實現(xiàn)獨立于任何特定的模塊化進程。
從聲明中看到的激動人心的事情還有OSGi已經(jīng)成為模塊化的事實上的標(biāo)準(zhǔn)了,這種合作是件好事。但這不一定意味著它將基于OSGi實現(xiàn),事實上,它只是建議最好與OSGi而不是其他方式合作:
JSR 277的JAM模塊系統(tǒng)并不適合作為模塊化JDK的基礎(chǔ),那么OSGi框架如何呢?該模塊系統(tǒng)非常成熟、穩(wěn)定和健壯。其核心甚至已經(jīng)在Java虛擬機中實 現(xiàn)出來了,也就是Apache Harmony。OSGi并沒有與Java語言集成,相反,它構(gòu)建在Java SE平臺之上而不是其中。
這最后的問題也能解決。Sun現(xiàn)在計劃直接與OSGi聯(lián)盟合作以便OSGi框架的未來版本能充分利用JSR 294的特性進而能和語言集成的更加緊密。
我相信未來的OSGi標(biāo)準(zhǔn)會使用JSR 294的模塊,盡管還有一些建議的改變。不管怎么樣,下周在Devoxx 08舉辦的Modularity in Java講座應(yīng)該會對Java的未來做出一些有趣的預(yù)言。