Java 16 - 概述


Java 16 是一个主要功能版本,它为 JAVA 带来了许多 JVM 特定的更改和语言特定的更改。它遵循 Java 发布节奏,从 Java 10 开始引入,并于 2021 年 3 月发布,距 Java 15 发布仅六个月。

Java 16 是非 LTS 版本。

新功能

以下是 Java 16 中引入的主要新功能。

  • JEP 338 - Vector API(孵化器) - 引入了新的 Vector API,允许开发人员显式执行向量操作。

  • JEP 347 - 启用 C++14 语言功能- C++ 14 功能可以在 JDK 16 的 C++ 源代码中使用。

  • JEP 357、JEP 369 - 从 Mercurial 迁移到 Git/GitHub - OpenJDK 源代码从 Mercurial 迁移到 Git/GitHub

  • JEP 376 - ZGC - 并发线程堆栈处理- Z 垃圾收集器通过将其线程堆栈处理从安全点转移到并发阶段而得到改进。

  • JEP 380 - Unix 域套接字通道- SocketChannel 和 ServerSocketChannel 现在支持 Unix 域套接字。

  • JEP 386 - Alpine Linux 端口- 现在 JDK 可用于 Alpine Linux 和其他使用 musl 实现的 Linux 发行版。

  • JEP 387 - 弹性元空间- 通过将未使用的 HotSpot 类元数据或元空间内存快速返回到操作系统来改进元空间内存管理,减少元空间占用空间并简化元空间代码。

  • JEP 388 - Windows/AArch64 端口- 现在 JDK 可以在 AArch64、ARM 硬件服务器或基于 ARM 的笔记本电脑上运行。

  • JEP 389 - 外部链接器 API(孵化器) - Java 代码可以由 C/C++ 调用,反之亦然,使用新的 API 替换 JNI。

  • JEP 390 - 基于值的类的警告- 如果使用 Synchronize 同步基于值的类,则会引发警告。

  • JEP 392 - 打包工具- jpackage 现在是标准而不是孵化器功能。

  • JEP 393 - 外部内存访问 API(第三个孵化器) - 外部内存访问 API 的小幅增强。

  • JEP 394 - instanceof 的模式匹配- instanceOf 的模式匹配现在是一个标准功能。

  • JEP 395 - 记录- 记录现在是一个标准功能。

  • JEP 396 - 默认情况下强烈封装 JDK 内部- --illegal-access 选项的默认模式现在为拒绝。早些时候是允许的。

  • JEP 397 - 密封类(第二预览版) - 对密封类的小幅增强。

Java 16 通过新方法和选项增强了众多 API。我们将在接下来的章节中看到这些变化。