就在刚刚,Java 16正式公布。
次要个性
Vector API(孵化)
晋升了Java在CPU向量计算的性能,这是对大规模的张量计算的反对,晋升了Java在AI畛域的能力。
启用了新的C++个性
容许在JDK中C++源代码中应用 C ++ 14的新个性。
从 Mercurial 迁徙到 Git
Git目前曾经成为代码版本治理畛域的相对统治者,当初Java顺应潮流也应用Git进行源代码治理。
迁徙到GitHub
OpenJDK的代码当初有GitHub托管。
ZGC垃圾收集器
并发线程堆栈解决的垃圾收集器。
Unix域套接字通道
Unix域套接字对ServerSocketChannel
和SocketChannel
的反对。
Alpine Linux Port
在x64和AArch64体系结构上,将JDK移植到Alpine Linux以及其它应用musl C库的Linxu发行版上。
Elastic Metaspace
Hotspot对类元数据的解决(metaspace-元空间)有了很大的改良。占用空间缩小了,当初能够更快地将未应用的内存回收到操作系统。
Windows/AArch64 Port
将 JDK 移植到 Windows / AArch64平台。
Foreign Linker API(孵化)
引入一个API,该API提供对本地代码的动态类型的纯Java拜访。该API与Foreign-Memory API(JEP 393)一起将大大简化绑定到本机库的本来容易出错的过程。
Warnings for Value-Based Classes
将原始包装器类指定为基于值的类,并弃用其构造函数以将其删除,从而提醒新的弃用正告。提供无关在Java平台中不正确尝试在任何基于值的类的实例上进行同步的正告。
Packaging Tool
提供jpackage
用于打包独立Java应用程序的工具。
- 反对本地打包格局,认为最终用户提供天然的装置体验。这些格局包含
msi
与exe
在Windows,pkg
并dmg
在MacOS,以及deb
和rpm
在Linux上。 - 容许在打包时指定启动工夫参数。
- 能够从命令行间接调用,也能够通过
ToolProvider
API以编程形式调用。
Foreign-Memory Access API (第三次孵化)
引入一个API,容许Java程序平安无效地拜访Java堆之外的内部内存。
Pattern Matching for instanceof
在此之前 Java 中:
// 先判断类型if (obj instanceof String) { // 而后转换 String s = (String) obj; // 而后能力应用}
主动匹配模式中:
if (obj instanceof String s) { // 如果类型匹配 间接应用} else { // 如果类型不匹配则不能间接应用}
Records Class
终于转正了,Java类不再又臭又长。原来是这样的:
public class Range { private final int min; private final int max; public Range(int min, int max) { this.min = min; this.max = max; } public int getMin() { return min; } public int getMax() { return max; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Range range = (Range) o; return min == range.min && max == range.max; } @Override public int hashCode() { return Objects.hash(min, max); } @Override public String toString() { return "Range{" + "min=" + min + ", max=" + max + '}'; }}
当初能够简化为:
public record Range(int min, int max) {}
以往的文章有具体介绍:
默认状况下严格封装JDK
进步JDK的安全性和可维护性,跟一般开发者无关。
Sealed Classes
密封类,简略说就是被final润饰的类,密封类不能被继承,避免了歹意的派生。
另外Oracle发文对参加JDK 16奉献的公司和集体进行了感激。
Oracle要感激为ARM,SAP,Red Hat和腾讯等组织工作的开发人员所做的杰出贡献。咱们也很快乐看到较小的组织(例如Ampere Computing,Bellsoft,DataDog,Microdoc和独立开发人员)的奉献,他们独特奉献了Java 16中3%的修复程序。咱们同样感激许多经验丰富的开发人员,他们审查了倡议的更改,尝试采纳晚期拜访版本并报告问题的晚期采纳者,以及在OpenJDK邮件列表中提供反馈的敬业业余人员。
关注公众号:Felordcn 获取更多资讯
集体博客:https://felord.cn