JDK 15:Java 15中的新功能

随着Java 14于3月17日全面上市,将在2020年9月15日推出Java 15的后续产品。到目前为止,已经计划对该版本进行八次正式更改。 5月初添加了三个建议,包括替换旧的DatagramSocket API,第二个用于instanceof运算符的模式匹配预览以及禁用和弃用有偏锁。

截至5月5日,所有这三个新提案都处于“针对目标的提案”阶段。之前的五个提案已正式成为Java开发工具包(JDK)15的目标 ,这是下一版Java SE(标准版)的基础。 在9月正式上市之前,将在6月和7月进行缩减阶段,然后在8月发布两个候选版本。

[ 同样在InfoWorld上:Java 14中的新功能 ]

OpenJDK 15提案的详细信息:

  • 通过用更简单,更现代的实现来替换java.net.datagram.Socketjava.net.MulticastSocket API的基础实现,从而重新实现旧的DatagramSocket API ,该实现是:(1)易于调试和维护,以及(2)使用虚拟线程目前正在Project Loom中探索。 新计划是对JDK增强建议353的后续,该建议重新实现了旧版Socket API。 java.net.datagram.Socketjava.net.MulticastSocket的当前实现可以追溯到JDK 1.0,而IPv6仍在开发中。 因此, MulticastSocket的当前实现尝试以难以维护的方式协调IPv4和IPv6。
  • 默认情况下禁用偏向锁定 ,并弃用所有相关的命令行选项。 目的是确定是否需要继续支持代价昂贵的,具有维护成本的偏向锁定同步优化,该优化在HotSpot虚拟机中用于减少无竞争锁定的开销。 尽管某些Java应用程序可能会在禁用偏置锁定的情况下看到性能下降的趋势,但是偏置锁定的性能提升通常不如从前那样明显。
  • JDK 14中的先前预览之后, instanceof模式匹配的第二次预览。 模式匹配使程序中的通用逻辑(主要是从对象中有条件地提取组件)得以更简洁地表达。 Haskell和C#等语言因其简洁性和安全性而接受了模式匹配。
  • 隐藏类(意指不能被其他类的字节码直接使用的类)旨在由在运行时生成类并通过反射间接使用它们的框架使用。 可以将隐藏类定义为访问控制嵌套的成员,并且可以独立于其他类进行卸载。 该提案将通过启用标准API来定义无法发现且具有有限生命周期的隐藏类,从而提高JVM上所有语言的效率。 JDK内部和外部的框架将能够动态生成可以代替定义隐藏类的类。 基于JVM构建的许多语言都依靠动态类生成来提高灵活性和效率。 该提案的目标包括:允许框架将类定义为框架的不可发现的实现细节,因此它们不能与其他类链接,也不能通过反射来发现; 支持使用不可发现的类扩展访问控制嵌套; 并支持主动卸载不可发现的类,因此框架可以灵活地定义所需的数量。 另一个目标是弃用非标准API misc.Unsafe::defineAnonymousClass ,以弃用将来的发行版。 另外,由于此提议,Java语言也不会更改。
  • 根据该建议,Z垃圾收集器(ZGC)将从实验功能升级为产品。 ZGC已集成到2018年9月发布的JDK 11中 ,是一个可扩展的低延迟垃圾回收器。 引入ZGC是一项实验功能,因为Java的开发人员决定应谨慎而逐步地引入这种大小和复杂性的功能。 从那时起,添加了许多改进,从并发类卸载,未使用内存的未提交,对数据类共享的支持到改进的NUMA感知和多线程堆预触。 此外,最大堆大小已从4 TB增加到16 TB。 支持的平台包括Linux,Windows和MacOS。
  • 在JDK 14和JDK 13中都预览过的文本块旨在简化表示跨几行源代码的字符串的过程,同时又避免了常见的转义序列,从而简化了编写Java程序的任务。 文本块是一种多行字符串文字,它避免了大多数转义序列的需要,以可预测的方式自动设置字符串格式,并在需要时为开发人员提供了对该格式的控制权。 文本块建议的目标是提高Java程序中字符串的可读性,这些Java程序表示用非Java语言编写的代码。 另一个目标是通过规定任何新构造都可以表达与字符串文字相同的字符串集,解释相同的转义序列并以与字符串文字相同的方式进行操作来支持从字符串文字的迁移。 OpenJDK开发人员希望添加转义序列来管理显式空白和换行控件。
  • Shenandoah的低暂停时间垃圾收集器将成为生产功能并退出实验阶段。 一年前已将其集成到JDK中
  • Nashorn的移除于2014年3月在JDK 8中首次亮相,但此后已被诸如GraalVM之类的技术淘汰 。 OpenJDK 15提案要求删除Nashorn API和jjs 。 用于调用Nashorn的命令行工具。

[ 同样在InfoWorld上:什么是Kotlin? Java替代解释 ]

可以在java.jdk.net上找到JDK 15的早期访问版本。 根据Oracle六个月的发布节奏 ,JDK 15将是一个短期功能发布,支持六个月。 下一个长期支持(LTS)版本将获得几年的支持,它将是JDK 17,该版本将于2021年9月到货。当前的LTS版本是JDK 11 ,该版本于2018年9月发布。

翻译自: https://www.infoworld.com/article/3534768/java-15-starts-to-take-shape.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值