JDK 15 2020/09/15 如期而至!
这个时间牛逼啊,和苹果发布会同天?
OracleJDK 15 发布地址:
https://www.oracle.com/java/technologies/javase/15all-relnotes.html
OpenJDK 15 发布地址:
https://openjdk.java.net/projects/jdk/15/
OracleJDK 和 OpenJDK 两者的区别这里不撰述了,不清楚的请点击这里进行查看。
现在的 JDK 真变成了“版本帝”,无力吐槽啊,版本发到 15,大部分人却都还在用着 JDK 7/8,甚至 6。不过没关系,多了解一下,多掌握一点新东西,对你来说没有坏处。
JDK 15 新特性一览表:
ID | JEP | Feature |
---|---|---|
1 | 339 | Edwards-Curve Digital Signature Algorithm (EdDSA) |
2 | 360 | Sealed Classes (Preview) |
3 | 371 | Hidden Classes |
4 | 372 | Remove the Nashorn JavaScript Engine |
5 | 373 | Reimplement the Legacy DatagramSocket API |
6 | 374 | Disable and Deprecate Biased Locking |
7 | 375 | Pattern Matching for instanceof (Second Preview) |
8 | 377 | ZGC: A Scalable Low-Latency Garbage Collector |
9 | 378 | Text Blocks |
10 | 379 | Shenandoah: A Low-Pause-Time Garbage Collector |
11 | 381 | Remove the Solaris and SPARC Ports |
12 | 383 | Foreign-Memory Access API (Second Incubator) |
13 | 384 | Records (Second Preview) |
14 | 385 | Deprecate RMI Activation for Removal |
JDK 15 一次发布了 14 个新特性,下面栈长带大家来解读下这些新特性!
Edwards-Curve
数据签名算法(EdDSA),一种根据 RFC 8032
规范所描述的 Edwards-Curve
数字签名算法(EdDSA)实现加密签名,实现了一种 RFC 8032
标准化方案,但它不能代替 ECDSA。
EdDSA 是一种现代的椭圆曲线签名方案,与 JDK 中现有的签名方案相比,它有很多优势。
封闭类(预览特性),可以是封闭类和或者封闭接口,用来增强 Java 编程语言,防止其他类或接口扩展或实现它们。
这个牛逼啊,有了这个特性,意味着以后不是你想继承就继承,想实现就实现了,你得经过允许才行。
来看这个示例:
public abstract sealed class Student permits ZhangSan, LiSi, ZhaoLiu { ... }
类 Student 被 sealed
修饰,说明它是一个封闭类,并且只允许指定的 3 个子类继承。
隐藏类,这一看也是个很有意思的特性。
隐藏类是为框架(frameworks)所设计的,隐藏类不能直接被其他类的字节码使用,只能在运行时生成类并通过反射间接使用它们。
移除了 Nashorn
JavaScript 脚本引擎、APIs,以及 jjs
工具。这些早在 JDK 11 中就已经被标记为 deprecated
了,JDK 15 被移除就很正常了。
Nashorn 是 JDK 1.8 引入的一个 JavaScript 脚本引擎,用来取代 Rhino 脚本引擎。Nashorn 是
ECMAScript-262 5.1
的完整实现,增强了 Java 和 JavaScript 的兼容性,并且大大提升了性能。
为什么要移除?
官方的描述是,随着 ECMAScript
脚本语言的结构、API 的改编速度越来越快,维护 Nashorn
太有挑战性了,所以……。
重新实现了老的 DatagramSocket
API 接口,更改了 java.net.DatagramSocket
和 java.net.MulticastSocket
为更加简单、现代化的底层实现,更易于维护和调试。
新的底层实现将很容易使用虚拟线程,目前正在 Loom
项目中进行探索。这也是 JEP 353
的后续更新版本,JEP 353
已经重新实现了 Socket API。
准备禁用和废除偏向锁,在 JDK 15 中,默认情况下禁用偏向锁,并弃用所有相关的命令行选项。
后面再确定是否需要继续支持偏向锁,国为维护这种锁同步优化的成本太高了。
模式匹配(第二次预览),第一次预览是 JDK 14 中提出来的,点击这里查看栈长之前写的详细教程。
Java 14 之前:
if (object instanceof Kid) { Kid kid = (Kid) object; // ... } else if (object instanceof Kiddle) { Kid kid = (Kid) object; // ... }
Java 14+:
if (object instanceof Kid kid) { // ... } else if (object instanceof Kiddle kiddle) { // ... }
Java 15 并没有对此特性进行调整,继续预览特性,只是为了收集更多的用户反馈,可能还不成熟吧。
ZGC:一个可伸缩、低延迟的垃圾回收器。
ZGC
最早是在 JDK 11 中集成进来的,JDK 15 只是将 ZGC
垃圾收集器从预览特性变更为正式特性而已,没错,转正了。
这个 JEP
不会更改默认的 GC,默认仍然是 G1
。
文本块,是一个多行字符串,它可以避免使用大多数转义符号,自动以可预测的方式格式化字符串,并让开发人员在需要时可以控制格式。
文本块最早准备在 JDK 12 添加的,但最终撤消了,然后在 JDK 13 中作为预览特性进行了添加,然后又在 JDK 14 中再次预览,在 JDK 15 中,文本块终于转正,暂不再做进一步的更改。
来看下这个示例你就懂了:
Java 13 之前:
String html = "<html>\n" + " <body>\n" + " <p>Hi, Java技术栈</p>\n" + " <p>欢迎关注,分享更多干货</p>\n" + " </body>\n" + "</html>\n";
Java 13+:
String html = """ <html> <body> <p>Hi, Java技术栈</p> <p>欢迎关注,分享更多干货</p> </body> </html> """;
去掉那些无用的换行和拼接,是不是太爽了。。这个详细教程计划再出一篇,关注公众号Java技术栈第一时间推送。
Shenandoah:一个低停顿时间的垃圾回收器。
Shenandoah
最早是在 JDK 12 中集成进来的,JDK 15 只是将 Shenandoah
垃圾收集器从预览特性变更为正式特性而已,没错,又是转正了。
移除了 Solaris
和 SPARC
端口。
移除了 Solaris/SPARC
、Solaris/x64
和 Linux/SPARC
端口的源代码及构建支持。这些端口在 JDK 14 中就已经被标记为 deprecated
了,JDK 15 被移除也不奇怪。
外存访问 API(二次孵化),可以允许 Java 应用程序安全有效地访问 Java 堆之外的外部内存。
这个最早在 JDK 14 中成为孵化特性,JDK 15 继续二次孵化并对其 API 有了一些更新。
Records 最早在 JDK 14 中成为预览特性,JDK 15 继续二次预览。
Records 在某些场合可以干掉 Lombok
的存在,能自动生成了类构造器、toString()、hashCode()、equals(),以及类似 getter 的变量访问方法。
使用方式:
public record Student(String name, int id, int age) {}
实际生成:
看完是不是有点 Lombok 的感觉?具体可以点击这里查看栈长之前写的详细教程。
废除 RMI 激活,以便在将来进行删除。
需要说明的是,RMI 激活是 RMI 中一个过时的组件,自 Java 8 以来一直是可选的。
本文主要介绍了 JDK/Java 15 的 14 个新特性,后面栈长有时间也会继续出一些 JDK 15 详细教程,关注公众号Java技术栈第一时间推送哦。如果你想看历史 Java 8 - 14 新特性教程,也可以在公众号菜单中进行阅读。
最后,来看下 Oracle Java 支持路线图:
JDK 15 并不是一个长期支持的版本,只支持 6 个月到 2021 年 3 月,上一个长期支持版本还是 JDK 11,所以千万不要把非长期支持版本用在生产。
JDK 15 下载地址:
https://www.oracle.com/java/technologies/javase-downloads.html
有兴趣的可以下载尝鲜了!!
写了大半天,点个在看、转发支持下哦,分享给你的更多朋友们~
关注Java技术栈,持续分享最新、最主流的Java技术~
近期热文推荐:
1.终于靠开源项目弄到 IntelliJ IDEA 激活码了,真香!
2.我用 Java 8 写了一段逻辑,同事直呼看不懂,你试试看。。
3.吊打 Tomcat ,Undertow 性能很炸!!
4.国人开源了一款超好用的 Redis 客户端,真香!!
5.《Java开发手册(嵩山版)》最新发布,速速下载!
觉得不错,别忘了随手点赞+转发哦!