查看原文
其他

Java 11即将推出什么功能,它与Java 9和10有何不同?

目前 Oracle 已经发布了 JDK 10,下个版本 JDK 11 也即将发布。本文主要介绍 Java 11 的新功能。

根据Oracle新出台的每6个月发布一次Java SE的节奏,虽然还有几个月才发布,让我们先看看Java 11 会有那些新的特性,以及如何适应它;即我们是应该升级到Java 9,10 还是应该等待Java 11。

让我们来看看。

Java 11中有什么新东西?

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

1. Lambda参数的本地变量语法(JEP 323)

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

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

我们也可以简写:

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

这扩展了Java 10 局部变量类型推断,它引入了一种新的语法,可以减少与编写Java相关的冗长度,同时保持对静态类型安全性的承诺。

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

var list = new array List(); var stream = getStream();

这将取代现有的写法,如下:

List list = new arrayList(); Stream stream = getStream();

2. Epsilon垃圾收集器(JEP 318)

该JEP的正式名称是“无操作垃圾收集器”,其目的是开发处理内存分配的垃圾回收器,而不实施任何实际的回收机制。

3.动态类文件常量(JEP 309)

JEP希望扩展Java类文件格式以支持新的常量池形式CONSTANT_Dynamic。其目标是降低开发新形式的可实现类文件约束带来的成本和干扰。

4.删除Java EE和CORBA模块(JEP 320)

从Java 9开始开始,Java EE和CORBA模块(deprecated)就不推荐使用,这些模块将从整个Java SE平台和SDK中移除。

Java 11将包含更多功能

尽管这个功能列表还不是最终的,我们预计在接下来的几个月中会添加更多的JEP,Java 11将会有一些额外的功能。Java 11的主要亮点之一是对平台的长期支持。这意味着什么,让我们回到2017年9月,当时Oracle宣布它正在转向 Java SE产品的长期支持(LTS)模式。

就目前而言,Oracle 需要满足两个不同的需求。一方面,公司希望专注于创新,尽快发布功能,而不是等待每个发行版的2到3年。另一方面,他们也想为他们的用户提供稳定性,他们需要一种他们可以信赖的产品。

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

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

向更快的发布周期迈进的过程是大型公司正在采用的工作流程,即希望以更快的速度进行创新,但需要确保其可靠性在此过程中不受影响。我们介绍了工程团队如何通过修改其CI / CD流程,从编写代码和在代码部署到生产之后监控应用程序来弥补两者之间的差距。

“长期支持”是什么意思?

Oracle的LTS支持主要关注两点。第一个是Premier支持,它从Oracle的全面供货日期开始为Oracle数据库,Oracle融合中间件和Oracle应用程序提供五年的维护和软件升级。

第二种产品称为「持续支持」,包括维护,只要您使用Oracle软件,即可访问Oracle在线支持工具,升级权限,预先存在的修复程序以及技术支持专家的帮助。这些要素对企业公司具有重要意义,甚至可能对其中的一些至关重要。

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

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

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

这在Nicolai Parlog博客上得到了进一步的验证,他展示了Java即将发布的版本的发布地图。正如你在下面的图片中看到的,Java 10似乎是最后一个免费的Oracle JDK。正如Nicolai指出的那样,用户需要付费才能使用未来的JDK版本,或者依赖于OpenJDK:

最后的想法

Java 9的发布标志着Java平台发展演变的开始。起初,我们获得了Jigsaw项目,并看到了我们思考和构建大规模应用程序的革命。Java 10即将推出局部变量类型推断并帮助为Java添加一些语法糖,Java 11随附以上所有内容以及该平台的长期支持。

这并不一定意味着你应该等待Java 11,但它确实意味着Java和Oracle正在改变他们的曲调。事实上,该公司正在投资于其每一个优点 - 创新和稳定 - 是一个令人兴奋的新闻,毫无疑问,更多好消息正在以我们的方式出现。

参考

https://blog.takipi.com/the-one-thing-that-repeatedly-breaks-your-cicd-workflow

https://land.overops.com/automated-root-cause-analysis-ebook

https://medium.com/codefx-weekly/no-free-java-lts-version-b850192745fb

原文链接:https://blog.takipi.com/java-11-will-include-more-than-just-features/?platform=hootsuite


Java面试那些事儿长按关注,分享最有趣的Java知识点。


推荐阅读:

Facebook Bug导致1400万用户的隐私泄漏

什么是API?

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存