就在刚刚,Java 16正式发布。java
提高了Java在CPU向量计算的性能,这是对大规模的张量计算的支持,提高了Java在AI领域的能力。编程
容许在JDK中C++源代码中使用 C ++ 14的新特性。安全
Git目前已经成为代码版本管理领域的绝对统治者,如今Java顺应潮流也使用Git进行源代码管理。并发
OpenJDK的代码如今有GitHub托管。ide
并发线程堆栈处理的垃圾收集器。函数
Unix域套接字对ServerSocketChannel
和SocketChannel
的支持。工具
在x64和AArch64体系结构上,将JDK移植到Alpine Linux以及其它使用musl C库的Linxu发行版上。post
Hotspot对类元数据的处理(metaspace-元空间)有了很大的改进。占用空间减小了,如今能够更快地将未使用的内存回收到操做系统。性能
将 JDK 移植到 Windows / AArch64平台。学习
引入一个API,该API提供对本地代码的静态类型的纯Java访问。该API与Foreign-Memory API(JEP 393)一块儿将大大简化绑定到本机库的本来容易出错的过程。
将原始包装器类指定为基于值的类,并弃用其构造函数以将其删除,从而提示新的弃用警告。提供有关在Java平台中不正确尝试在任何基于值的类的实例上进行同步的警告。
提供jpackage
用于打包独立Java应用程序的工具。
msi
与exe
在Windows,pkg
并dmg
在MacOS,以及deb
和rpm
在Linux上。ToolProvider
API以编程方式调用。引入一个API,容许Java程序安全有效地访问Java堆以外的外部内存。
在此以前 Java 中:
// 先判断类型 if (obj instanceof String) { // 而后转换 String s = (String) obj; // 而后才能使用 } 复制代码
自动匹配模式中:
if (obj instanceof String s) { // 若是类型匹配 直接使用 } else { // 若是类型不匹配则不能直接使用 } 复制代码
终于转正了,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的安全性和可维护性,跟普通开发者无关。
密封类,简单说就是被final修饰的类,密封类不能被继承,防止了恶意的派生。
另外Oracle发文对参与JDK 16贡献的公司和我的进行了感谢。
Oracle要感谢为ARM,SAP,Red Hat和腾讯等组织工做的开发人员所作的杰出贡献。咱们也很高兴看到较小的组织(例如Ampere Computing,Bellsoft,DataDog,Microdoc和独立开发人员)的贡献,他们共同贡献了Java 16中3%的修复程序。咱们一样感谢许多经验丰富的开发人员,他们审查了建议的更改,尝试采用早期访问版本并报告问题的早期采用者,以及在OpenJDK邮件列表中提供反馈的敬业专业人员。
参考:《2020最新Java基础精讲视频教程和学习路线!》
连接:https://juejin.cn/post/694036...