Java 15(密封类/隐藏类/ZGC)
2021-02-25 21:41:28 0 举报
AI智能生成
隐藏类(Hidden Classes)密封类(Sealed Classes)ZGC功能
作者其他创作
大纲/内容
主要更新
密封类(Sealed Classes)
用于限制超类的使用,密封的类和接口限制其它可能继承或实现它们的其它类或接口
具体使用
使用sealed修饰class或interfaces(密封类),只允许被指定的class或者interface进行扩展和实现
使用关键字permits列出可以直接扩展它的类。子类可以是最终的(final),非密封的或密封的(sealed)
代码示例
隐藏类(Hidden Classes)
通过启用标准API来定义无法发现且具有有限生命周期的隐藏类,提高语言的灵活性和效率
作用
隐藏类天生为框架设计的,在运行时生成内部的class(不可发现)
隐藏类不能直接被其他类的字节码访问,只能通过反射访问(访问控制)
隐藏类可以独立于其他类加载、卸载,这可以减少框架的内存占用(生命周期短)
隐藏类不能直接被其他类的字节码访问,只能通过反射访问(访问控制)
隐藏类可以独立于其他类加载、卸载,这可以减少框架的内存占用(生命周期短)
ZGC功能
(转正)
(转正)
ZGC是Java 11引入的新的垃圾收集器(JDK9 以后默认的垃圾回收器是G1)
ZGC是一个重新设计的并发的垃圾回收器,通过减少GC停顿时间来提高性能
Java 15默认的GC仍然还是G1,不过现在只需-XX:+UseZGC就可以启用
文本块功能
(转正)
(转正)
Text Blocks首次是在JDK 13中以预览功能出现的,然后在JDK 14中又预览了一次,终于在JDK 15中被确定下来,可放心使用了
文本块是一种多行字符串文字, 它避免了大多数转义序列的需要,以一种可预测的方式自动设置字符串的格式,并在需要时使开
发人员可以控制格式,简化编写Java 程序的任务
发人员可以控制格式,简化编写Java 程序的任务
目的
提高Java程序中的字符串的可读性,这些字符串表示以非Java语言编写的代码
支持从字符串文本迁移,规定任何新构造都可以表达与字符串文本相同的字符串集,解释相同的转义序列,并且以与
字符串文本相同的方式进行操作。OpenJDK开发人员希望添加转义序列来管理显式空白和换行控件
字符串文本相同的方式进行操作。OpenJDK开发人员希望添加转义序列来管理显式空白和换行控件
代码示例
Records
(预览)
(预览)
Records Class 也是第二次出现的预览功能,它在JDK 14中也出现过一次了
使用record修饰类,功能类似Lombok的@Data注解,省略get/set、toString
instanceof模式匹配
(预览)
(预览)
在Java 14的基础上进行了简化,这里是第二次出现的预览
代码示例
次要更新
EdDSA数字签名算法
新加入的基于Edwards-Curve数字签名算法的加密签名算法(爱德华兹曲线数字签名算法)与JDK中的现有签名方案相比,
具有更高的安全性和性能,因此备受关注。它已经在OpenSSL和BoringSSL等加密库中得到支持,在区块链领域用的比较多
具有更高的安全性和性能,因此备受关注。它已经在OpenSSL和BoringSSL等加密库中得到支持,在区块链领域用的比较多
重新实现DatagramSocket API
通过替换java.net.datagram的基础实现,重新实现旧版DatagramSocket API
更改java.net.DatagramSocket和java.net.MulticastSocket为更加简单、现代化的底层实现
更改java.net.DatagramSocket和java.net.MulticastSocket为更加简单、现代化的底层实现
禁用偏向锁定
偏向锁定的维护成本较高,HotSpot虚拟机通过禁用偏向锁定来减少非竞争锁定的开销
Shenandoah垃圾回收算法转正
JDK 12引入的回收算法,该算法通过与正在运行的Java 线程同时进行疏散工作来减少GC暂停时间
对比ZGC
相同点:性能几乎可认为是相同的(ZGC略好)
不同点:ZGC是Oracle JDK的,根正苗红。而Shenandoah只存在于OpenJDK中(RedHat发布)
打开方式:使用 -XX:+UseShenandoahGC命令行参数启用
外部存储器访问API
目的是引入一个API,以允许Java程序安全、有效地访问Java堆之外的外部存储器(本机、持久和托管堆)
移除Solaris和SPARC端口
删除对Solaris/SPARC、Solaris/x64和Linux/SPARC端口的源代码和构建支持,在JDK 14中被标记为废弃,在JDK15版本正式移除
移除the Nashorn JS引擎
Nashorn是在JDK提出的脚本执行引擎,该功能是JDK 8的新特性。在JDK11就已经把它标记为废弃了,JDK15完全移除
废弃RMI激活机制
为了减少RMI Activation的维护成本,在JDK8中,RMI Activation被置为可选的。现在在JDK15中,终于可以废弃了
了解即可
一些添加项
移除项&废弃项
其他
0 条评论
下一页