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