关于java:JDK15正式发布新增功能预览

45次阅读

共计 2440 个字符,预计需要花费 7 分钟才能阅读完成。

JDK 15 在 2020 年 9 月 15 号正式公布了,这次公布的次要性能有:

  • JEP 339:EdDSA 数字签名算法
  • JEP 360:密封类(预览)
  • JEP 371:暗藏类
  • JEP 372:删除 Nashorn JavaScript 引擎
  • JEP 373:从新实现 Legacy DatagramSocket API
  • JEP 374:从新实现 DatagramSocket API
  • JEP 375:实例模式匹配(第二次预览)
  • JEP 377:ZGC:一个可扩大的低提早垃圾收集器
  • JEP 378:文本块
  • JEP 379:低暂停工夫垃圾收集器
  • JEP 381:移除 Solaris 和 SPARC 端口
  • JEP 383:内部存储器拜访 API(第二个内置程序)
  • JEP 384:Records(第二次预览)
  • JEP 385:不举荐的 RMI 激活去除

JEP:JDK Enhancement Proposals,JDK 加强倡议,也就是 JDK 的个性新增和改良提案。

这些年公布的版本对应的 JEPs 数量如下图所示:

公布版本阐明

依据公布的布局,这次公布的 JDK 15 将是一个短期的适度版,只会被 Oracle 反对(保护)6 个月,直到明年 3 月的 JDK 16 公布此版本将进行保护。而 Oracle 下一个长期反对版(LTS 版)会在明年的 9 月份候公布(Java 17),LTS 版每 3 年公布一个,上一次长期反对版是 18 年 9 月公布的 JDK 11。

JDK 15 新性能阐明

JDK 15 为用户提供了十四项次要的加强 / 更改,包含一个孵化器模块,三个预览性能,两个不举荐应用的性能以及两个删除性能。

1、EdDSA 数字签名算法

新退出 Edwards-Curve 数字签名算法(EdDSA)实现加密签名。在许多其它加密库(如 OpenSSL 和 BoringSSL)中失去反对。与 JDK 中的现有签名计划相比,EdDSA 具备更高的安全性和性能。这是一个新的性能。

2、暗藏类

此性能可帮忙须要在运行时生成类的框架。框架生成类须要动静扩大其行为,然而又心愿限度对这些类的拜访。暗藏类很有用,因为它们只能通过反射拜访,而不能从一般字节码拜访。此外,暗藏类能够独立于其余类加载,这能够缩小框架的内存占用。这是一个新的性能。

3、从新实现 DatagramSocket API

从新实现旧版 DatagramSocket API,更简略、更古代的实现来代替 java.net.DatagramSocketjava.net.MulticastSocketAPI 的根底实现,进步了 JDK 的可维护性和稳定性。

4、ZGC 性能转正

ZGC 已由 JEP 333 集成到 JDK 11 中,其指标是通过缩小 GC 进展工夫来进步性能。借助 JEP 377,ZGC 从预览性能转变为生产性能。

5、文本块性能转正

文本块由 JEP 355 在 2019 年提出,文本块是一种多行字符串文字,它防止了大多数转义序列的须要,以一种可预测的形式主动设置字符串的格局,并在须要时使开发人员能够管制格局。借助 JEP 378,文本块已成为 Java 语言的永恒性能。

6、Shenandoah 垃圾回收算法转正

Shenandoah 垃圾回收从试验个性变为产品个性。这是一个从 JDK 12 引入的回收算法,该算法通过与正在运行的 Java 线程同时进行疏散工作来缩小 GC 暂停工夫。Shenandoah 的暂停工夫与堆大小无关,无论堆栈是 200 MB 还是 200 GB,都具备雷同的统一暂停工夫。

7、密封类(预览)

通过密封的类和接口来加强 Java 编程语言,用于限度超类的应用,密封的类和接口限度其它可能继承或实现它们的其它类或接口。

8、instanceof 主动匹配模式(预览)

旧写法:

// 先判断类型
if (obj instanceof String) {
    // 而后转换
    String s = (String) obj;
    // 而后能力应用
}

新写法:

if (obj instanceof String s) {// 如果类型匹配 间接应用} else {// 如果类型不匹配则不能间接应用}

这是第二次预览该性能,咱们曾经在 Java 14 中首次预览过该个性。

9、Records Class(预览)

Records Class 也是第二次呈现的预览性能,它在 JDK 14 中也呈现过一次了,应用 Record 能够更不便的创立一个常量类,应用的前后代码比照如下。

旧写法:

class Point {
    private final int x;
    private final int y;

    Point(int x, int y) { 
        this.x = x;
        this.y = y;
    }

    int x() { return x;}
    int y() { return y;}

    public boolean equals(Object o) {if (!(o instanceof Point)) return false;
        Point other = (Point) o;
        return other.x == x && other.y = y;
    }

    public int hashCode() {return Objects.hash(x, y);
    }

    public String toString() {return String.format("Point[x=%d, y=%d]", x, y);
    }
}

新写法:

record Point(int x, int y) {}

也就是说在应用了 record 之后,就能够用一行代码编写出一个常量类,并且这个常量类还蕴含了构造方法、toString()、equals() 和 hashCode() 等办法。

10、内部存储器拜访 API(预览)

目标是引入一个 API,以容许 Java 程序平安无效地拜访 Java 堆之外的内部内存。这同样是 Java 14 的一个预览个性。

11、其它性能

其它性能外面还有一些弃用和不倡议应用的性能,比方移除了 Nashorn JavaScript 引擎,同时也移除了删除 Solaris 和 SPARC 端口,并标记了一些弃用性能。

参考 & 鸣谢

码农小胖哥:https://mp.weixin.qq.com/s/rh…

官网日志:https://openjdk.java.net/proj…

关注公众号「Java 中文社群」发送“面试”,支付我整顿的最新面试复习资料。

正文完
 0