3 月 16 日,OpenJDK 官网如期公布了 JDK 16 GA 版本。与 Java 15 一样,该版本的支持时间只有 6 个月。
GA 是指 General Availability,也就是官方开始推荐可以广泛使用的版本。
目前,JDK16可以在官网下载,见下图:
JDK 16 将至少获得两次季度更新。随后,甲骨文 JDK 17 面世。虽然 Java 17 将于 2021 年 9 月正式发布,但是 jdk.java.net 已经提供了它早期的访问版本。
在转向六个月的发布周期后,Java 16 是甲骨文发布的第七个特性版本。甲骨文称,“在六个月的发布周期下,可用于生产的创新交付速度已大大提高”。
Java 16 累计修复了 1897 个问题,其中,有 1397 个由甲骨文工作人员完成,还有 500 个由个人开发人员和其他组织机构的开发人员贡献,包括 ARM、SAP、RedHat 和腾讯以及微软、英特尔、华为等。而一些小型组织也贡献了 Java 16 中 3%的修复,比如 Ampere Computing、Bellsoft、DataDog、Microdoc 和独立开发人员。
甲骨文表示,“再次使用 GPLv2 和 Classpath Exception 将 Java 16 作为甲骨文 OpenJDK 版本提供,并且针对使用甲骨文 JDK 版本作为甲骨文产品或服务一部分的用户,或希望能获得商业支持的用户提供商业许可”。
接下来,咱们说说JDK16有那些新特性。
该版本一共进行了 17 项更新,涉及新特性改进、新工具、孵化功能等,具体有哪些更新,我们一起来看下:
1
新特性
- instanceof 模式匹配
在 JDK 16 上,模式匹配允许程序中的通用逻辑,即从对象中提取组件,可以更简洁、更安全地表达.instanceof 运算符。
if (obj instanceof String s && s.length() > 5) {
flag = s.contains("jdk");
}
- Records
记录(Records)在 Java 14 和 Java 15 中作为预览特性引入。它提供了一种紧凑的语法来声明类,这些类是浅层不可变数据的透明持有者。这将大大简化这些类,并提高代码的可读性和可维护性。
弹性元空间功能
它将可以更迅速地将未使用的 HotSpot VM 类元数据(元空间)内存返回到操作系统,减少元空间占用空间并简化元空间代码以降低维护成本。ZGC 并发线程堆栈处理
将ZGC线程堆栈处理从安全点移至并发阶段。
2
JVM改进3新工具和库
增加 Unix 域套接字通道
其中 Unix 域 (AF_UNIX) 套接字支持添加到 nio.channels 包中的套接字通道和服务器套接字通道 API 中。该计划还扩展了继承的通道机制,以支持 Unix 域套接字通道和服务器套接字通道。Unix 域套接字用于同一主机上的进程间通信。它们在很多方面与 TCP/IP 套接字类似,只是它们由文件系统路径名称而不是 IP 地址和端口号寻址。新功能的目标是支持 Unix 域套接字通道的所有功能,这些功能在主要 Unix 平台和 Windows 中很常见。
包装工具
提供jpackage工具,用于打包独立的Java应用程序。
jpackage --name myapp --module-path lib -m myapp
4为未来做好准备
对基于值的类进行警告
对在 Java 中错误进行基于值类实例的操作发出警告。
默认情况下,对 JDK 内部进行强封装
用户可以选择自 JDK 9 以来默认的宽松强封装。此建议的目标包括提高 JDK 的安全性和可维护性,作为项目 Jigsaw 的一部分,并鼓励开发人员从使用内部元素迁移到使用标准 API,以便开发人员和最终用户都可以轻松地更新到未来的 Java 版本。
Vector API
孵化器阶段的向量 API,其中 JDK 将安装一个孵化器模块,用于表示编译为支持的 CPU 体系结构上的最佳矢量硬件指令的矢量计算,以实现与等效标量计算更高的性能。外部链接程序 API
提供静态类型、纯 Java 对本机代码的访问。此 API 将在 JDK 16 中处于孵化器阶段。外部存储器访问 API
引入一个允许Java程序安全有效地访问Java堆之外的外部内存 API。密封类
以前在 JDK 15 中预览的密封类和接口限制其他类和接口可以扩展或实现它们。该计划的目标包括,允许类或接口的作者控制负责实现它的代码,提供比访问修饰符更声明性的方式来限制超类的使用,以及通过提供模式分析的基础来支持模式匹配的未来方向。 6提升OpenJDK生产力
5孵化器和预览特性
- 启用 C++ 14 语言功能
允许在 JDK C++ 源代码中使用C++ 14功能,并提供有关部分功能可用于 HotSpot VM 代码的特定指导。
- OpenJDK 源代码存储库从 Mercurial 迁移到 Git
推动这项工作是借助版本控制系统元数据和可用工具及托管方面的优势。
- OpenJDK 源码迁移到 Github
- 将 JDK 移植到 Alpine Linux 和其他使用 musl 作为主 C 库的 Linux 发行版
在 x64 和 AArch64 体系结构上,将JDK移植到 Alpine Linux 以及使用musl作为其主要C库的其他Linux发行版中。
- 将 JDK 移植到 Windows/AArch64 平台
随着新的服务器级和使用者 AArch64 (ARM64) 硬件的发布,Windows/AArch64 已成为一个重要的平台。
当然,这次更新,大家大可不用担心,目前大部分小伙伴还停留在JDK8,少部分停留在JDK11,这两个版本也均是LTS版(长期维护版本),从JDK12到16基本都是每6个月左右时间发布一次新的正式版,而这些版本并非长期维护的,但是接下来的JDK17 LTS版,将在今年9月份与大家见面,相信,那个时间大家在学习也是来得及的!
—END—
终码一生长按扫描二维码
关注我们 获取更多技术资讯