【IT168 资讯】Oracle的Java平台组首席架构师Mark Reinhhold在其博客上宣布,Oracle决定将Java 8的发布时间推迟4-6个月。
Reinhold提到,Oracle正在全力解决近来引发公众关注的这一波安全漏洞问题, Java 8项目组不可避免地被抽调走了很多工程师。他说,“维护Java平台的安全性,其优先级总是比开发新功能要高,所以这些工作不免会抽调一些正在进行Java 8开发的工程师。”此外他还强调,为改进代码质量并减少缺陷,Oracle“升级”了开发流程。
Reinhold还提到,最主要的延误在JSR 335中,也就是负责向Java中加入闭包(亦称“Lambda表达式”)的Lambda项目。他认为,“如果放弃Lambda,剩下的特性尽管也比较有趣,但总体上看就没那么吸引力了。假如今年发布一个没有Lambda的版本,得到广泛应用的可能性很小,那又何故如此呢?”
当面临推迟发布或减少特性的选择时,Reinhold拒绝了第三种选择:“如果为了保证按时发布而牺牲质量,那几乎可以肯定,我们会重复过去总犯的错误,将不完整的语言变更和API设计构建在虚拟的基石之上,会致使无数开发者在未来数年内将围绕其缺陷工作,直到这些特性——甚至整个平台——被新事物替代为止。”
看起来Java 8 GA(General Availability)版本的发布时间会从原计划的2013年9月推迟到2014年第一季度。这已经是该版本的第二次跳票了。Java 8最初计划于2012年底发布,后来受Java 7开发延期的影响,被推迟到了2013年9月,并且放弃了Jigsaw项目。目前这次延期也会波及到JDK 9,我们预计JDK 8将于2014年第一季度发布,而JDK 9则从2015年推迟到2016年初。InfoQ去年7月曾报道过,Java 8放弃了Jigsaw项目,而且Reinhold否定了该项目再次进入Java 8的可能性。
看一下Java 8保留特性的集合,显而易见,Java 8就是通过Lambda项目定义的。
Lambda项目也需要和其他大型模块进行很多协调,尤其是并发框架和泛型框架。这也印证了Oracle腾出开发力量去解决安全问题的解释。
Lambda表达式的引入是在2004年Java 5引入泛型之后最大的语法增强。
闭包是越来越流行的“函数式编程”范型的基础。 (纵然术语“闭包”和“Lambda表达式”在理论上有所差别,但在Java语境中它们经常交替使用。)为使闭包的价值最大化,Java还将修改相关的库。其中包括新的流API,它提供了一种将指令操作流水线化的机制,这对函数式编程是至关重要的。再就是Option类,它包装了可能出现的空值,消除了某些情况下测试空引用的必要性,以便简化闭包开发。
包括Scala和Clojure在内的大多数流行的JVM语言,Ruby,以及像C#和F#(一种基于.Net的函数式语言)等流行的.Net语言都已经支持闭包,所以很多开发者希望Java也加入该特性。