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 也加入该特性。
『号外』:JavaOne 2013 大会将于 7 月 22–25 日在上海世博中心举行,内容涵盖使用 Java SE 构建现代应用程序、打造针对下一代智能设备的移动和嵌入式 Java 应用程序、编制基于 Java EE 的复杂企业解决方案以及在云环境中安全、无缝地构建和部署业务应用程序等,报名或查看详情请点击。
评论