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

Java 11中即将推出的功能有哪些,它们与Java 9和10的不同之处是什么?
40天后Java 11将推出的功能有哪些,它们与Java 9和10的不同之处是什么?
Java 10可能是块中的新手,但现在已经是时候谈论Java 11. Oracle向更快的发布周期迈进意味着更多的功能和能力正在以前所未有的速度发展。

虽然我们还有6个月的时间才会发布Java 11,但我们已经可以看到我们的方式,看看我们如何适应。我们还可以了解是否应该升级到Java 9,10,或者我们是否应该等待Java 11。

让我们来看看。

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

  1. Lambda参数的本地变量语法(JEP 323)
    在声明隐式类型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();

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

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

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

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

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

与其他领先公司类似,甲骨文希望快速发展。转向更快的发布周期将使公司能够进行创新,并为团队和公司提供更快的移动能力。

但是,快速发布版本的责任是为用户保持平台可靠性。甲骨文表示,该公司很难为即将推出的所有版本提供LTS。这就是为什么公司决定每3年提供一次LTS(或每6个版本提供一次)。

向更快的发布周期迈进是大型公司正在采用的工作流程,希望以更快的速度进行创新,但需要确保在此过程中不会损害其可靠性。我们已经介绍了工程团队如何通过改进他们的CI / CD流程,编写代码以及在将代码部署到生产后监控应用程序来弥合两者之间的差距。
“长期支持”是什么意思?
Oracle的LTS支持主要关注两个要点。第一个是Premier支持,它从一般可用日期起为您的Oracle数据库,Oracle融合中间件和Oracle应用程序提供维护和软件升级五年。

第二个产品称为“持续支持”,其中包括使用Oracle软件时的维护,访问Oracle在线支持工具,升级权限,预先存在的修复以及技术支持专家的帮助。这些要素对企业公司至关重要,甚至对其中一些公司至关重要。

如果您问为什么Oracle决定在3年的差距,那是因为它是Java版本之间的平均发布时间(或更确切地说,它曾经是平均发布时间)。

事实上,Java 11将提供LTS,将提供此支持的下一个版本将在2021年9月发布,目前代号为21.9。如果您仍在使用旧版本的Java,请不要担心,因为Oracle声称对Java 6,7和8的支持将继续用于当前的计划。

更新: 如Azul Systems副首席技术官 Simon Ritter 在评论部分所述,“LTS更新仅适用于拥有Oracle商业支持合同的客户。JDK 11的公开更新与JDK 9以后的所有其他版本的更新将在下一个版本发布六个月后停止。“

Java 10似乎将是最后一个免费的Oracle JDK。正如Nicolai指出的那样,用户要么付费才能使用未来的JDK版本,要么依赖OpenJDK:
40天后Java 11将推出的功能有哪些,它们与Java 9和10的不同之处是什么?
最后的想法
Java 9的发布标志着Java平台演变的开始。起初,我们得到了Jigsaw项目,看到 了我们思考和构建 大规模应用程序 的方式的革命 。Java 10即将引入本地变量类型推断并帮助向Java添加一些语法糖,Java 11带有上述所有功能,以及对平台的长期支持。

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

上一篇:线上系统内存占用高问题定位


下一篇:Java命令学习系列—Jstack命令(转载)