JDK/Java 16 GA
The following article is from FOSS Lab Author oschina
作者 | oschina
来源 | FOSS Lab(ID:fosslab)
JDK/Java 16 正式 GA。
根据发布规划,JDK/Java 16 属于短期维护版本,仅有 6 个月的技术支持。下一个版本——计划9月发布的 JDK/Java 17 (21.9 LTS) 才是长期支持版本。
JDK/Java 16 的亮点包括孵化阶段的 Vector API、密封类和接口、将 JDK 移植到 Windows / AArch64平台、启用 C++14 语言特性,以及将 ZGC 线程堆栈处理从安全点移动到并发阶段等。
JDK/Java 16 总共包含 17 个 JEP,涉及到新语言特性、改进 JVM、新工具和库、对未来功能的验证、孵化和预览阶段的功能以及提升生产效率这几大方面。
338: | Vector API (Incubator) |
347: | Enable C++14 Language Features |
357: | Migrate from Mercurial to Git |
369: | Migrate to GitHub |
376: | ZGC: Concurrent Thread-Stack Processing |
380: | Unix-Domain Socket Channels |
386: | Alpine Linux Port |
387: | Elastic Metaspace |
388: | Windows/AArch64 Port |
389: | Foreign Linker API (Incubator) |
390: | Warnings for Value-Based Classes |
392: | Packaging Tool |
393: | Foreign-Memory Access API (Third Incubator) |
394: | Pattern Matching for instanceof |
395: | Records |
396: | Strongly Encapsulate JDK Internals by Default |
397: | Sealed Classes (Second Preview) |
Vector API (Incubator)
处于孵化阶段的 Vector API,其中 JDK 将配备一个孵化器模块jdk.incubator.vector
,用于表达可在支持的 CPU 架构上编译为最佳矢量硬件指令的矢量计算,以实现优于等效标量计算的性能。
Enable C++14 Language Features
启用 C++14 语言特性,支持在 JDK C++ 源代码中使用 C++14 语言特性。
Migrate from Mercurial to Git
OpenJDK 源代码库从 Mercurial 迁移到 Git。
Migrate to GitHub
OpenJDK 源代码库迁移到 GitHub,此变化是基于 OpenJDK 源代码库从 Mercurial 迁移到 Git。
ZGC: Concurrent Thread-Stack Processing
将 ZGC 线程堆栈处理从安全点移动到并发阶段。此计划的目标包括从 ZGC 安全点中删除线程堆栈处理。
Unix-Domain Socket Channels
为java.nio.channels
包中的 socket channel 和 server-socket channel API 添加 Unix-domain (AF_UNIX
) 支持。
Alpine Linux Port
针对 x64 以及 AArch64 架构,将 JDK 移植到 Alpine Linux 以及其他使用 musl 作为主要 C 语言库的 Linux 发行版上。
Elastic Metaspace
弹性元空间 (Elastic Metaspace) 能力,它可以将未使用的 HotSpot VM 类元数据(元空间)内存更迅速地返回给操作系统,从而减少元空间的占用空间并简化元空间代码,以及降低维护成本。
Windows/AArch64 Port
将 JDK 移植到 Windows/AArch64 平台。
Foreign Linker API (Incubator)
处于孵化阶段的 Foreign Linker API(外部链接器 API),该 API 用于对本地代码进行静态类型访问。
Warnings for Value-Based Classes
对基于值的类 (Value-Based Classes) 进行警告。在 Java 平台中对于任何基于值的类实例进行同步的错误尝试,会予以警告。
Packaging Tool
提供用于打包独立 Java 应用程序的 jpackage 工具。
Foreign-Memory Access API (Third Incubator)
处于孵化器第三阶段的 Foreign-Memory Access API,该 API 允许 Java 应用程序安全有效地访问 Java 堆之外的外部内存。
Pattern Matching for instanceof
为 instanceof 操作符提供模式匹配。模式匹配使程序中的通用逻辑(即从对象中有条件地提取组件)得以更简洁、更安全地表达。
Records
Records 提供了一种紧凑的语法来声明类,以帮助开发者写出更简洁的代码,这些类是浅层不可变数据(shallowly immutable data)的透明拥有者。该特性主要用在特定领域的类,这些类主要用于保存数据,不提供领域行为。
Strongly Encapsulate JDK Internals by Default
除了sun.misc.Unsafe
等关键的内部 API 外,默认对 JDK 内部进行强封装,用户也可以选择自 JDK 9 以来默认的宽松强封装。
Sealed Classes (Second Preview)
Sealed class & interface(密封类和接口)可以限制哪些类和接口可以继承或实现它们。
详情查看:https://openjdk.java.net/projects/jdk/16/下载地址:https://www.oracle.com/ 今 日 视 频 推 荐 周鸿祎九年前演讲,如今却惨遭打脸。他说了什么?关注脚本之家视频号,了解详情↓↓↓
推荐阅读:
腾讯牛逼!终于开源了自家的 Tencent JDK——Kona!!