JDK 15 已于今年 9 月 15 日发布,这是一个短期版本,只会受到 Oracle 6 个月的支持。JDK 16 将作为标准 Java 版本的参考实现在 2021 年 3 月 16 日发布。与 JDK 15 一样,JDK 16 也将是个短期版本,仅提供 6 个月的支持。预计于 2021 年 9 月发布的 JDK 17 将是一个长期支持(LTS)版本,会获得数年的支持。目前的 LTS 版本 JDK 11 则于 2018 年 9 月发布。
JDK 16 现在处于 Early-Access(EA,早期访问)阶段,目前最新版本是 Build 26。
按 InfoWorld 所述,截至 2020 年 11 月 30 日,已有 14 个特性已被正式提了出来,还有 2 个特性则是预测性质。Java 16 即将推出的新功能或包括有:
- 之前在 JDK 15 中预览过,密封类和接口限制了哪些其他类和接口可以继承或实现它们。该计划的目标包括:允许类或接口的作者控制负责实现它的代码,提供比访问修饰符更声明性的方式来限制超类的使用,并通过提供模式分析的基础来支持模式匹配的未来方向。
- 除了 misc.Unsafe 等关键的内部 API 外,默认情况下对 JDK 内部进行强封装。用户可以选择自 JDK 9 以来默认的宽松的强封装。
- 外部链接程序 API,提供对本地代码的静态类型的纯 Java 访问。该 API 将在 JDK 16 中处于孵化阶段。
- 移动 ZGC(Z 垃圾收集器)线程堆栈处理从安全点到并发阶段。该计划的目标包括从 ZGC 安全点中删除线程堆栈处理。
- 弹性元空间能力,它可以将未使用的 HotSpot VM 类元数据(元空间)内存更迅速地返回给操作系统,从而减少元空间的占用空间并简化元空间代码,从而降低维护成本。
- 启用 C ++ 14语言功能,允许在 JDK C ++源代码中使用 C ++ 14功能。
- 孵化器阶段的矢量 API,其中 JDK 将配备一个孵化器模块,
jdk.incubator.vector
,以表达可在支持的 CPU 架构上编译为最佳矢量硬件指令的矢量计算,以实现优于等效标量计算的性能。 - 将 JDK 移植到 Windows / AArch64平台。
- 在 x64和 AArch64体系结构上,将 JDK 移植到 Alpine Linux 和其他使用 musl 作为其主要 C 库的 Linux 发行版。
- 提供记录类,作为不可更改数据的透明载体。
- 增加 Unix 域套接字通道,其中在 nio.channels 包中的套接字通道和服务器套接字通道 API 中增加了 Unix 域(AF_UNIX)套接字支持。
- 外部存储器访问 API,允许 Java 程序安全地访问 Java 堆外部的外部存储器。
- 用于 instanceof 运算符的模式匹配,在 JDK 14 和 JDK 15 中进行了预览,将在 JDK 16 中完成。
- 提供用于打包独立 Java 应用程序的 jpackage 工具。
- OpenJDK 源码从 Mercurial 迁移到 Git,托管平台也迁移到 GitHub。
详情可查看:https://jdk.java.net/16/