作者:mush


Java 10已经发布将近5个月了,现在已经是时候谈论Java 11. Oracle向更快的发布周期迈进意味着更多的功能正在以前所未有的速度发展。

还有40天的时间才会发布Java 11,我们还可以了解是否应该升级到Java 9,10,或者我们是否应该等待Java 11。

让我们来看看。

Java 11即将推出的功能有哪些,它们与Java 9和10的不同之处是什么?

Java 11的发布日期定于2018年9月,并且该存储库目前已开放以进行错误修复,以及更多JDK增强建议的提议将添加到即将发布的版本中。虽然该列表不是最终的,但已经有4个提案计划用于下一个版本:

1. Lambda参数的本地变量语法

在声明隐式类型lambda表达式的形式参数时,此JEP将允许使用var。这里的目标是将局部变量声明的语法与隐式类型的lambda表达式中的形式参数声明的语法对齐。这样,而不是写这个:

(x,y) - > x.process(y)

我们可以写:

(var x,var y) - > x.process(y)

这扩展了Java 10 Local Variable Type Inference,它引入了一种新的语法,可以减少与编写Java相关的冗长,同时保持对静态类型安全的承诺。

换句话说,您将能够声明变量而无需指定关联的类型。与上面显示的示例类似,Java 10将提供以下简单的声明:

var list = new ArrayList <String>(); 

var stream = getStream();

这将取代现有的,如下所示:

List <String> list = new ArrayList <String>(); 

Stream <String> stream = getStream();



2. Epsilon:一个任意低开销的垃圾收集器


这个JEP的官方名称是“No-Op垃圾收集器”,其目的是开发一个处理内存分配的垃圾收集器,而不实现任何实际的内存回收机制。



3.动态类文件常量

此JEP希望扩展Java类文件格式以支持新的常量池形式CONSTANT_Dynamic。这里的目标是通过创建一个可以使用用户提供的行为进行参数化的新的常量池形式来降低创建新形式的可实现类文件常量的成本和中断。



4.删除Java EE和CORBA模块

在Java SE 9中Java EE和CORBA模块的折旧之后,这些模块将从整个Java SE平台和SDK中删除。这更像是一个清理过程,跟进了Java 9中开始的过程。


Java 11将包含的不仅仅是功能

虽然这个功能列表仍然不是最终的,我们期望在接下来的几个月中添加更多的增强建议,但Java 11会有一些额外的东西。Java 11将带来的主要亮点之一是该平台的长期支持。为了理解它的含义,让我们回到2017年9月,当时甲骨文宣布它将转向他们的Java SE产品的长期支持(LTS)模型。


到目前为止,Oracle已尝试将同一版本用于两种不同的需求。一方面,公司希望专注于创新,尽快发布功能,而不是每次发布都等待2  -  3年。另一方面,他们还希望为需要他们可以信赖的产品的用户提供稳定性。


与其他领先公司类似,甲骨文希望快速发展。转向更快的发布周期将使公司能够进行创新,并为团队和公司提供更快的移动能力。但是,快速发布版本的责任是为用户保持平台可靠性。甲骨文表示,该公司很难为即将推出的所有版本提供LTS。这就是为什么公司决定每3年提供一次LTS(或每6个版本提供一次)。


最后:Java 9的发布标志着Java平台演变的开始。起初,我们得到了Jigsaw项目,看到了我们思考和构建大规模应用程序的方式的革命。Java 10即将引入本地变量类型推断并帮助向Java添加一些语法糖,Java 11带有上述所有功能,以及对平台的长期支持。


这并不一定意味着您应该期待Java 11,但这确实意味着Java和Oracle正在改变他们的调整。公司正在投资其每一个优势 - 创新和稳定 - 这一事实是令人敬畏的新闻,毫无疑问会有更多好消息传来。




还有40天,Java 11就要横空出世了。_oracle

还有40天,Java 11就要横空出世了。_java_02

​​