JDK 17:Java 17有何新看点?
虽然要到9月才发布,但Java 17已经开始成形,正考虑为标准Java的升级版添加四项提议的新功能。截至3月30日最近添加的功能包括:MacOS/AArch64移植版和弃用Applet API。这些遵循2月针对新的MacOS渲染管道和增强版伪随机数生成器的提议。
Java开发工具包(JDK)17将是长期支持(LTS)版本,预计Oracle会提供数年的扩展支持。
OpenJDK JDK 17的部分功能包括如下:
将JDK移植到MacOS/AArch64,以响应苹果将Macintosh计算机从x64改为AArch64的计划。已经有面向Linux的Java AArch64移植版,正在开发面向Windows的移植版。
Java构建者希望通过使用条件编译来重用来自这些移植版的现有AArch64代码,就像JDK移植版的常规做法一样,以适应低级约定方面的差异,比如应用程序二进制接口和保留的处理器寄存器集。
针对MacOS/AArch64的更改可能会破坏现有的Linux/AArch64移植版、Windows/AArch64移植版和MacOS/x64移植版,但是可以通过预集成测试来降低这种风险。
Applet API由弃用变为删除。该API实际上无关紧要,因为所有Web浏览器供应商已删除了对Java浏览器插件的支持,或已宣布计划这么做。Applet API之前于2017年9月在Java 9中被弃用,但并未被删除。
新的MacOS渲染管道,使用Apple Metal API以替代使用被弃用的OpenGL API的现有管道。该提议旨在为使用MacOS Metal框架的Java 2D API提供一条功能全面的渲染管道,万一苹果从未来版本的MacOS中删除OpenGL API,可以准备就绪。
该管道旨在功能上与现有的OpenGL管道相当,在某些应用程序和基准测试中的性能一样好或更好。将创建适合当前Java 2D模型的干净架构。管道将与OpenGL管道共存,直到过时。提案的目的并不是添加任何新的Java或JDK API。
增强版伪随机数生成器,将为伪随机数生成器(PRNG)提供新的接口类型和实现,包括可跳转的PRNG和可拆分PRNG算法的额外类(LXM)。新的接口RandomGenerator将为所有新旧PRNG提供统一的API。将提供四个专门的RandomGenerator接口。
Java中伪随机数生成这方面有多个方面需要改进,激励这项计划是它们关注的重心。这项工作不需要提供其他许多PRNG算法的实现,但是添加了三种常见算法,这些算法已广泛部署在其他编程语言环境中。这项计划的目标包括如下:
更容易在应用程序中互换使用各种PRNG算法。
改进了对基于流的编程的支持,并提供PRNG对象流。
消除现有PRNG类中的代码重复。
保留类java.util.Random的现有行为。
在今后几个月,可能会为JDK 17提议更多的功能。可能包括外来链接程序API、向量API和外来存储器访问API,所有这些功能目前都在3月发布的JDK 16版本中的孵化器阶段中。JDK 16第二个预览版中的密封类可能会在JDK 17中正式提供。模式匹配也可能是JDK 17提案的重点。
JDK 17的正式发布日期定为9月14日。生产版本发布之前,会有6月和7月的精简阶段以及8月的发行候选版本。可以在jdk.java.net找到JDK 17的抢先体验开源版本。
LTS版本(比如JDK 17)每三年发布一次。上一个LTS版本JDK 11已于2018年9月发布。Java的新版本每六个月发布一次。标准Java的当前版本是JDK 15。