您的位置 首页 java

Java 16 正式发布,国内企业中腾讯贡献再次第一

就在刚刚,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  hash Code() {
         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贡献的公司和个人进行了感谢。

Java 16 正式发布,国内企业中腾讯贡献再次第一

参与贡献JDK16的组织

在Java 15中腾讯的贡献就是国内第一,这次腾讯再次第一,已经颠覆了以往对腾讯技术栈的认知。

文章来源:智云一二三科技

文章标题:Java 16 正式发布,国内企业中腾讯贡献再次第一

文章地址:https://www.zhihuclub.com/197245.shtml

关于作者: 智云科技

热门文章

网站地图