Oracle的Java平臺組首席架構(gòu)師Mark Reinhhold在其博客上宣布,Oracle決定將Java 8的發(fā)布時間推遲4-6個月。
Reinhold提到,Oracle正在全力解決近來引發(fā)公眾關(guān)注的這一波安全漏洞問題, Java 8項目組不可避免地被抽調(diào)走了很多工程師。他說,“維護Java平臺的安全性,其優(yōu)先級總是比開發(fā)新功能要高,所以這些工作不免會抽調(diào)一些正在進行Java 8開發(fā)的工程師。”此外他還強調(diào),為改進代碼質(zhì)量并減少缺陷,Oracle“升級”了開發(fā)流程。
Reinhold還提到,最主要的延誤在JSR 335中,也就是負責向Java中加入閉包(亦稱“Lambda表達式”)的Lambda項目。他認為,“如果放棄Lambda,剩下的特性盡管也比較有趣,但總體上看就沒那么吸引力了。假如今年發(fā)布一個沒有Lambda的版本,得到廣泛應用的可能性很小,那又何故如此呢?”
當面臨推遲發(fā)布或減少特性的選擇時,Reinhold拒絕了第三種選擇:“如果為了保證按時發(fā)布而犧牲質(zhì)量,那幾乎可以肯定,我們會重復過去總犯的錯誤,將不完整的語言變更和API設(shè)計構(gòu)建在虛擬的基石之上,會致使無數(shù)開發(fā)者在未來數(shù)年內(nèi)將圍繞其缺陷工作,直到這些特性——甚至整個平臺——被新事物替代為止。”
看起來Java 8 GA(General Availability)版本的發(fā)布時間會從原計劃的2013年9月推遲到2014年第一季度。這已經(jīng)是該版本的第二次跳票了。Java 8最初計劃于2012年底發(fā)布,后來受Java 7開發(fā)延期的影響,被推遲到了2013年9月,并且放棄了Jigsaw項目。目前這次延期也會波及到JDK 9,我們預計JDK 8將于2014年第一季度發(fā)布,而JDK 9則從2015年推遲到2016年初。InfoQ去年7月曾報道過,Java 8放棄了Jigsaw項目,而且Reinhold否定了該項目再次進入Java 8的可能性托福改分
看一下Java 8保留特性的集合,顯而易見,Java 8就是通過Lambda項目定義的。
Lambda項目也需要和其他大型模塊進行很多協(xié)調(diào),尤其是并發(fā)框架和泛型框架。這也印證了Oracle騰出開發(fā)力量去解決安全問題的解釋托福答案
Lambda表達式的引入是在2004年Java 5引入泛型之后最大的語法增強。
閉包是越來越流行的“函數(shù)式編程”范型的基礎(chǔ)。 (縱然術(shù)語“閉包”和“Lambda表達式”在理論上有所差別,但在Java語境中它們經(jīng)常交替使用。)為使閉包的價值最大化,Java還將修改相關(guān)的庫。其中包括新的流API,它提供了一種將指令操作流水線化的機制,這對函數(shù)式編程是至關(guān)重要的。再就是Option類,它包裝了可能出現(xiàn)的空值,消除了某些情況下測試空引用的必要性,以便簡化閉包開發(fā)。
包括Scala和Clojure在內(nèi)的大多數(shù)流行的JVM語言,Ruby,以及像C#和F#(一種基于.Net的函數(shù)式語言)等流行的.Net語言都已經(jīng)支持閉包,所以很多開發(fā)者希望Java也加入該特性。