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/rhfSLW0wfe73xgbRVvX46Q

官方日志:https://openjdk.java.net/projects/jdk/15/

END

推荐好文

强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!

为什么MySQL不推荐使用uuid或者雪花id作为主键?

为什么建议大家使用 Linux 开发?爽(外加七个感叹号)

IntelliJ IDEA 15款 神级超级牛逼插件推荐(自用,真的超级牛逼)

炫酷,SpringBoot+Echarts实现用户访问地图可视化(附源码)

记一次由Redis分布式锁造成的重大事故,避免以后踩坑!

十分钟学会使用 Elasticsearch 优雅搭建自己的搜索系统(附源码)

JDK15已发布,快来看看有哪些值得期待的新功能!相关推荐

  1. KeyShot 10最新版发布 支持big sur KeyShot 10 Pro for Mac新功能

    KeyShot 10最新版发布,是款功能非常强大的光线追踪与全域光渲染软件:它是基于LuxRender进行研发推出的,可以更快速的帮助用户进行室内关照的渲染,包括了材质节点的调整,还对材质动画的功能进 ...

  2. h5邮件的邮箱 支持_Coremail发布H5邮箱移动模板新版本,多项新功能让办公更便捷...

    近日,Coremail论客发布了邮箱客户端H5邮箱移动模板新版本Hxphone4.1.2,据Coremail产品经理介绍:此次更新的版本不仅对原有的协同模块功能.安全模块功能进行了更新完善,在收发信的 ...

  3. Bootstrap 发布十周年,Bootstrap 5都有什么新功能?

    近日,知名前端工具包 Bootstrap 官博宣布十周年,其创始人 Mark Otto 回顾了这十年里取得的一些成就与里程碑数据: 文档浏览量超过 25 亿次,每天超过 685,000 次: 自 20 ...

  4. 苹果发布 iOS14.3 正式版,带来多个新功能,可惜......

    今日凌晨,苹果发布了 iOS14.3 正式版,版本号和上周发布的iOS14.3RC2一样,如果你之前升级了 iOS14.3RC2 的话就不会收到今天的系统推送 本次更新带来了大量新功能,也修复了不少问 ...

  5. iPad 3 即将发布,网传价格,IPD2降价50$ 新功能猜测

    中关村在线消息:近几日苹果 iPad 3明显受到了更多用户的关注,互联网中关于此款 产品的消息早已被传的沸沸扬扬,之前曾有国外媒体曝出 苹果iPad 3将会于3月9日发布,这个时间与 iPad 2的发 ...

  6. JDK15已发布!网友:我还在JDK8踏步走...

    推荐阅读: 这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试 毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题 给跪了!这套万人期待的 SQL ...

  7. 快看这里,掌柜星又有新功能更新啦

    掌柜星的研发工程师们真是一个个不眠不休的工作陀螺呀!如今小程序商城.进销存功能已经完善强大的同时,并没有选择停滞不前,反而更加一鼓作气,始终致力于如何极大方便用户体验,以不辜负每一位信任掌柜星的客户朋 ...

  8. python 3.8.0安卓_Python 3.8.0 稳定版发布,来看看Python 3.8.0的新功能吧

    作为现在比较流行的开源免费编程语言 Python 我想对于开发人员肯定很不陌生.Python 是一种编程语言,语法优美,简单易学,功能强大.比如我们常听说的网络爬虫,大多都是使用 Python 编写开 ...

  9. iOS微信7.0.12发布!除了适配暗黑模式,还有这些新功能!

    前几天,"微信不适配深色模式就会被下架"的消息闹得沸沸扬扬~最后,腾讯微信团队官宣"与苹果达成合作,共同探索微信在iOS系统的暗黑模式体验,有望在下一个版本中上线!&qu ...

最新文章

  1. Go语言之并发示例-Pool(二)
  2. Linux 按键定时器去抖
  3. EMNLP2018论文解读 | 利用篇章信息提升机器翻译质量
  4. 8s yaml 配置生成_cfg4py:一个严肃的Python配置模块应有的风格-层级式、部署环境自适应、自动补全...
  5. xamarin跳转html,Xamarin 页面跳转
  6. 光纤交换机产品功能介绍
  7. memcpy函数的使用方法
  8. 星空特效HTML代码,旋转的星空特效代码
  9. Python L型组件填图问题(棋盘覆盖问题)
  10. php 利用gd库及tcpdf 自动多图片生成pdf
  11. #创新应用#飞流下载:下载娱乐两不误
  12. Android SDK是什么意思?
  13. Java虚拟机启动整体流程和基础学习(内容很多,不可快餐阅读),推理+源码论证
  14. compass项目配置文件config.rb
  15. 微信小程序数据统计和错误统计的实现
  16. 微信浏览器字体调整 PHP,如何针对微信浏览器的调整字体大小功能进行适配?...
  17. 【PMP考试最新解读】第七版《PMBOK》应该如何备考?(含最新资料)
  18. 自己动手学TCP/IP--ICMP(ping报文)
  19. “道德”,究竟是保镖还是杀手?
  20. css实现弧线,CSS3 彩虹弧线太极波动图

热门文章

  1. 腾讯首届“科学探索奖”获奖名单揭晓,每人将获300万奖金
  2. 一加7T Pro渲染图曝光:后置相机出乎意料
  3. 余承东生日朋友圈深夜连发五个“感恩”:这是一个难忘的日子
  4. 小鹏汽车窃密特斯拉实锤?前员工回应:确实上传过30万份Autopilot源码
  5. 骁龙710加持!索尼将推5.7寸小屏机型Xperia 4
  6. Java并发编程之CountDownLatch闭锁
  7. c函数sscanf的高级技巧(二)
  8. wampserver橙色如何变成绿色_绿色配什么颜色好看 家居绿色配色小技巧-装修攻略...
  9. 我的内核学习笔记15:海思Hi3516平台GPIO使用记录
  10. 【maven】maven jar 包 冲突 的解决方式