共计 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.DatagramSocket
和java.net.MulticastSocket
API 的根底实现,进步了 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 中文社群」发送“面试”,支付我整顿的最新面试复习资料。