Java16 - 概述

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

Java16 是一个非 LTS 版本。


新功能

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

  • JEP 338 - Vector API (Incubator) − 引入了新的矢量 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 - Foreign Linker API (Incubator) − Java 代码可以由 C/C++ 调用,反之亦然,使用新的 API 替换 JNI。

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

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

  • JEP 393 - Foreign-Memory Access API (Third Incubator) − 外部内存访问 API 的小改进。

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

  • JEP 395 - Records − Records 现在是一项标准功能。

  • JEP 396 - 默认情况下对 JDK 内部进行强封装 − --illegal-access 选项的默认模式现在是拒绝的。 之前是允许的。

  • JEP 397 - Sealed Classes (Second Preview) − 密封类的小改进。

Java16 使用新方法和选项增强了众多 API。 我们将在下一章中看到这些变化。