Oracle為JDK 8尋求社區(qū)參與
隨著Java 7功能的日益完備,Oracle正在將注意力轉(zhuǎn)向JDK 8,Java平臺(tái)組的***架構(gòu)師Mark Reinhold正在尋求Java社區(qū)的參與。
我們已經(jīng)知道JDK 8中會(huì)有一些大家伙,同時(shí)也會(huì)為其他大大小小的特性留下空間。因此需要時(shí)間來定義一個(gè)簡(jiǎn)單的流程,對(duì)JDK 8以及后續(xù)版本新特性的提案和計(jì)劃進(jìn)行收集、排序、審查和排列優(yōu)先級(jí)。
這個(gè)流程應(yīng)該“盡可能輕量化”,帶上“簡(jiǎn)單的技術(shù)細(xì)節(jié)”,并且“對(duì)所有提交者開放,決策要透明”,Reinhold說到,現(xiàn)在能以文本文件的形式在Mercurial庫里收集提案。
Reinhold提到的“大家伙”指的主要是那些已經(jīng)被證明要包含在JDK 7里很困難,或者備受爭(zhēng)議的東西。主要的內(nèi)容可能是Java平臺(tái)模塊系統(tǒng),還有l(wèi)ambdas(也被稱作閉包或匿名方法)。
提供一個(gè)模塊系統(tǒng)是Java 7的主要目標(biāo)之一,但由于Sun選擇開發(fā)一套自己的解決方案――Jigsaw,而不是用現(xiàn)成的OSGi,使得這項(xiàng)任務(wù)變得備受爭(zhēng)議。Sun給出了兩個(gè)原因。***,他們希望讓應(yīng)用程序能綁定到更多的運(yùn)行平臺(tái)上,不止是OSGi的運(yùn)行平臺(tái),這樣用Java編寫的桌面應(yīng)用程序在Java支持的多種平臺(tái)上就能更像一等公民了。第二,兩個(gè)系統(tǒng)的依賴模型不同。Sun需要能將包拆分到不同的模塊里,在運(yùn)行時(shí)加載到同一個(gè)ClassLoader中――舉例來說 java.util包可能會(huì)被拆分到不同的模塊中(或者,對(duì)于內(nèi)存受限的設(shè)備,甚至?xí)胁煌膶?shí)現(xiàn))。為了支持這點(diǎn),Jigsaw有一個(gè)本地依賴的概念,它是遞歸的。因此,如果模塊“Swing”對(duì)模塊“AWT”有一個(gè)本地依賴,模塊“AWT”對(duì)模塊“base”有一個(gè)本地依賴,那么在運(yùn)行時(shí)模塊 Swing、AWT和base最終都會(huì)在同一個(gè)ClassLoader里。OSGi有一個(gè)類似的概念,用的是片斷(fragment)的形式,但靈活性稍差,因?yàn)樗鼈儫o法自己表達(dá)依賴。當(dāng)然,OSGi有可能為這些額外的需求增加支持,但無論采取哪種方式,Oracle都希望做到與OSGi兼容。 Java 8 JSR 中說到
Java Platform Module對(duì)OSGi的采納、互操作或者適應(yīng)程度都將成為JSR專家的一個(gè)話題,Java SE 8專家組會(huì)討論并得出結(jié)論的。
為語言增加Lambda表達(dá)式的計(jì)劃有很多提議(BGGA Proposal CICE Proposal FCM Proposal C3S Proposal),但還沒有形成明確的結(jié)論,到底采用哪種方式。Project Lambda,以及同它一起的JSR 335,將重新審視這個(gè)問題。作為其中的一部分工作,會(huì)有一個(gè)提案來增加“SAM變換”(SAM conversion)支持,這可以在希望使用單一抽象方法接口或類的地方使用lambda表達(dá)式,可以正向兼容現(xiàn)有庫。JSR還提議擴(kuò)展Java語言接口的語義來支持虛擴(kuò)展方法。在實(shí)現(xiàn)類沒有提供擴(kuò)展方法實(shí)現(xiàn)的情況下,這將允許接口指定一個(gè)靜態(tài)默認(rèn)方法來代表接口方法的實(shí)現(xiàn)。
說完了這些主要內(nèi)容,JSR還提到了:
源自Project Coin的很多小的增強(qiáng)。很有可能包含Josh Bloch的Collection Literals,旨在支持不可變的List、Set和Map內(nèi)容,其中帶有與數(shù)組初始化程序類似的語義。還有可能會(huì)看到針對(duì)JSR-292中的新JVM特性的源代碼語法的復(fù)興。
Type Annotations(JSR 308):擴(kuò)展的Java注解系統(tǒng)允許注解出現(xiàn)在類型的各種用法上。
新的日期和時(shí)間API(JSR 310)。
Swing JDatePicker。
我們還希望Oracle繼續(xù)構(gòu)建Java對(duì)并行編程的支持,增加對(duì)filter、map和reduce這樣的可并行化的批量數(shù)據(jù)操作的支持。
在EclipseCon上,Reinhold陳述了Oracle的首要目標(biāo)是要保證Java仍然是***語言和平臺(tái)。
Oracle有20,000名Java開發(fā)者,除了核心數(shù)據(jù)庫以外的一切都是用Java編寫的。如果Java沒落了……那將會(huì)有一筆巨大的重復(fù)投資。
Java 8有望在2012年末發(fā)布。
【編輯推薦】