JDK16新特性总结

1:

Vector API(孵化器)

1清晰简洁的 API: API 应能够清晰简洁地表达广泛的矢量计算,这些矢量计算由一系列矢量操作组成,这些矢量操作通常在循环内组成,可能还有控制流

2平台无关: API 应与架构无关,支持在支持向量硬件指令的多个 CPU 架构上的运行时实现

3在 x64 和 AArch64 架构上可靠的运行时编译和性能: Java 运行时,特别是 HotSpot C2 编译器,应在有能力的 x64 架构上将向量操作序列编译为相应的向量硬件指令序列

4优雅降级: 如果向量计算无法在运行时完全表示为硬件向量指令序列,要么是因为架构不支持某些所需指令,要么是因为不支持另一种 CPU 架构,那么 Vector API 实现应优雅降级并且仍然起作用

这是对数组元素的简单标量计算:

void scalarComputation(float[] a, float[] b, float[] c) {
   for (int i = 0; i < a.length; i++) {
        c[i] = (a[i] * a[i] + b[i] * b[i]) * -1.0f;
   }
}

(我们假设数组参数的大小相同。)

使用 Vector API 实现等效向量计算的显式方法如下:

// Example 1

static final VectorSpecies<Float> SPECIES = FloatVector.SPECIES_256;

void vectorComputation(float[] a, float[] b, float[] c) {

    for (int i = 0; i < a.length; i += SPECIES.length()) {
        var m = SPECIES.indexInRange(i, a.length);
		// FloatVector va, vb, vc;
        var va = FloatVector.fromArray(SPECIES, a, i, m);
        var vb = FloatVector.fromArray(SPECIES, b, i, m);
        var vc = va.mul(va).
                    add(vb.mul(vb)).
                    neg();
        vc.intoArray(c, i, m);
    }
}
2:启用 C++14 语言功能
3:

从 Mercurial 迁移到 Git

这个就相当于你吧svn上的源码改到git上一样,放源码的地址改变了而已,但是两者之间使用新开发的工具连接交互

4:

迁移到 GitHub

将单存储库 OpenJDK 项目迁移到 GitHub

5:

ZGC:并发线程堆栈处理

  • 从 ZGC 安全点中删除线程堆栈处理。
  • 使堆栈处理变得懒惰、协作、并发和增量。
  • 从 ZGC 安全点中删除所有其他每线程根处理。
  • 提供一种机制,其他 HotSpot 子系统可以通过该机制延迟处理堆栈
6:

Unix 域套接字通道

Unix 域套接字用于同一主机上的进程间通信 (IPC)。它们在大多数方面类似于 TCP/IP 套接字,不同之处在于它们由文件系统路径名而不是 Internet 协议 (IP) 地址和端口号寻址。此 JEP 的目标是支持在主要 Unix 平台和 Windows 中通用的 Unix 域套接字的所有功能。Unix 域套接字通道在读/写行为、连接设置、服务器对传入连接的接受、与选择器中的其他非阻塞可选通道的多路复用以及相关套接字的支持方面的行为与现有的 TCP/IP 通道相同选项

7:

Alpine Linux 端口

将 JDK 移植到 Alpine Linux,以及在 x64 和 AArch64 架构上使用 musl 作为其主要 C 库的其他 Linux 发行版

8:

弹性元空间

更及时地将未使用的 HotSpot 类元数据(即元空间)内存返还给操作系统,减少元空间占用空间,并简化元空间代码以降低维护成本

9:

Windows/AArch64 端口

将 JDK 移植到 Windows/AArch64,为什么要移植过来不用多说了吧,windows和AArch64发展速度快,主要是用户需求量大。

10:

外链 API(孵化器)

介绍一个 API,它提供对本机代码的静态类型、纯 Java 访问。此 API 与外部内存 API  一起,将大大简化绑定到本机库的其他容易出错的过程,就相当于异步。

11:

基于值的类的警告

将原始包装类指定为基于值的,并弃用它们的构造函数以进行删除,提示新的弃用警告。提供有关对 Java 平台中任何基于值的类的实例进行同步的不当尝试的警告

12:

打包工具

提供jpackage用于打包自包含 Java 应用程序的工具。目前我们使用最多的就是maven的package打包,这将是一个新的打包工具

13:

外内存访问API(第三孵化器)

引入 API 以允许 Java 程序安全有效地访问 Java 堆之外的外部内存

14:

instanceof 的模式匹配

增强Java编程语言与模式匹配的 instanceof运营商。 模式匹配允许更简洁、更安全地表达程序中的常见逻辑,即从对象中有条件地提取组件,之前通过instanceof无法检索到的内容,目前得到了优化

15:

记录

使用记录增强 Java 编程语言,记录是充当不可变数据的透明载体的类。记录可以被认为是名义元组

16:

默认情况下强封装JDK内部

默认情况下,强封装 JDK 的所有内部元素,除了关键的内部 API,如sun.misc.Unsafe. 允许最终用户选择自 JDK 9 以来一直默认的宽松强封装

397:

密封类(第二次预览)

使用密封类和接口增强 Java 编程语言 。密封类和接口限制哪些其他类或接口可以扩展或实现它们,相当于增强了规范

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值