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。 我们将在下一章中看到这些变化。