OpenJDK:更快的速度,更少的匆忙

JDK 9发布以来,已经过去了两年多的时间,随之而来的是切换到基于时间而不是基于功能的发布时间表。从JDK 6升级到JDK 9花费了将近11年的时间,这似乎令人难以置信,但是在短短两年多的时间里,我们已经从JDK 9升级到JDK 13。

与旧的主要发行版方法相比,采用这种新策略的每个发行版都提供了较少的功能。但是,我们看到的是总体变化速度比以往任何时候都要快,这对于保持Java充满活力并吸引开发人员来说是一个重大优势。

现在,通过快速发布节奏可以实现的事情之一就是能够通过使功能成为Java SE标准的一部分来添加功能而不会一概而论。在JDK 9中,模块系统的引入提供了孵化器模块。直接从定义它们的JEP 11引用该摘要:

“孵化器模块是将非最终API和非最终工具交付给开发人员的一种手段,而API /工具则朝着最终版本或在将来的版本中删除的方向发展。”

API开发是一项艰巨的业务,因此,当你使用地球上最流行的编程平台时,API的开发就成倍增加了。最初是UNIX的开发者之一的Ken Thompson曾经被问到,如果他重新设计UNIX系统,他会做些什么。他的回答是我会用e拼写创造物。” 由于Ken1960年代后期的选择,使用该系统调用时,我们永远都必须拼写错误创建。第一个孵化器模块用于HTTP / 2协议支持。如果你通读了将该API纳入标准的JEP 321,则初始API和最终API之间会有一些更改。

在某些方面,API比更改更容易引入,因为包名称空间可以相对容易地更改。对于HTTP / 2,孵化器软件包为jdk.incubator.http,并且已将其迁移到JDK11中的jdk.net.http

在不将语言和VM功能纳入标准的情况下,很难对其进行介绍,但这就是预览功能所具有的。再次引用JEP 12的定义:

预览语言或VM功能是Java SE平台的一项新功能,已完全指定,完全实现但还不是永久性的。JDK功能版本中提供了预览功能,以引起开发人员根据实际使用情况提供反馈;这可能会导致它将在未来的Java SE平台中永久存在。

在此要做出的重要区别是,这些不是正常意义上的beta功能。正如JEP所说,这些是完整的功能,只是不永久的。

第一个预览功能以Switch表达式(在JEP 325中定义)的形式包含在JDK 12中。这是一个了不起的功能,它使我们能够大大减少与switch语句关联的样板代码并减少潜在的错误。通过消除在case语句的每个块中显式中断的需求,并允许对返回值进行一次分配,从而消除了在case语句的每个块中记住这样做的需要,从而实现了这一点。

作为预览功能,默认情况下不包含此功能(因为它不属于标准功能)。必须将其他命令行标志同时用于编译和Java运行时,以明确表明你要使用此功能(-enable-preview)。

开关表达式是此概念的一个很好的例子。在初始实现中,可以将新旧开关语法结合在一起,如下所示:

此处使用带有数字值的中断,这是从开关表达式返回的值。分隔符也可以与标签一起使用,但是由于标签不能为数字(或以数字开头),因此语法不会引起问题。但是,反馈导致决定放弃使用中断,而将其替换为yield以使其更加清晰(请参阅JEP 354)。

JDK 13,包含了JEP 355(文本块),这是另一个预览功能。除了技术细节外,此功能很有趣,因为它还包括API更改。在String类中添加了三个方法(stripIndenttranslateEscapesformatted)。因为这些是现有类的一部分,所以不能使用孵化器模块(这对于三种方法来说也过多)。结果,这三种方法被立即弃用,以便可以在后续发行版中将其删除。

孵化器模块和预览功能的趋势仍在继续,JDK 14将拥有不少于五个,而且开关表达式也将成为标准配置:

  • JEP 305:instanceof的模式匹配(预览)
  • JEP 343:包装工具(培养箱)
  • JEP 359:记录(预览)
  • JEP 361:开关表达式(标准)
  • JEP 368:文本块(第二预览)
  • JEP 370:外部存储器访问API(孵化器)

回顾Java的历史,很容易希望我们从一开始就具备这些功能(可以从基于反馈的更改中受益的几个功能和API)。但是,在多年的发布开发周期中,这是不切实际的。转向每年两次的JDK版本,不仅可以更快地提供更多功能,而且还允许OpenJDK开发人员以对开发人员最有用的形式提供功能。

有什么问题可以加下qq:2062583349。也可添加vx:admindesire,有java、python、web等习资料和视频课程干货”。欢迎交流!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值