Jigsaw被推迟到了Java SE 9

by admin on 2020年5月5日

Oracle 欲推迟 Java 9
的发布,因为需要额外的时间来开发模块化功能和项目
Jigsaw ,发布时间计划从 2016 年 9
月推迟到 2017 年 5 月。如果下周二 (12.8)
没有充分的反对意见,就会采用这个新提议。

图片 1

近日,Java Platform Group的首席架构师Mark
Reinhold在其博客上宣布添加模块化系统以及模块化JDK的提案被推迟到了Java
SE
9。

Java 9 是标准 Java 平台非常重要的一个版本, 原本计划在 2016 年 9
月发布,而现在可能会被推迟
6 个月。

甲骨文OpenJDK项目负责人Mark
Reinhold今天在博客中称,Jigsaw项目的开发工作相对滞后,将不会出现在明年发布的Java
8中。
Jigsaw项目旨在在Java
SE平台上设计并实现的一个标准的模块系统,并在Java
SE平台以及JDK中应用该系统。Reinhold称,根据最初设想,Jigsaw项目将被应用在Java
8中,预计在2013年5月完成主要功能,并在9月左右发布最终版本。项目正在稳步开展中,但是仍存在一些重大的技术挑战,更重要的是,没有足够时间用于广泛评估、审查、反馈。因此,Jigsaw项目将被推迟到下一个版本Java
9中。到目前为止,OpenJDK社区已经实现了模块系统的初步设计,并发布了一个开源的原型实现,任何人都可以下载、评估。按照计划,Java
8将于2013年9月左右发布,届时将包括Lambda项目、新的Date/Time
API、类型注解以及一些小的特性。
Java
9将在两年后,也就是2015年9月左右发布,除了Jigsaw项目外,其他的新特性尚未确定。Reinhold称,虽然推迟Jigsaw项目并不是一个愉快的决定,但是似乎是一个最好的选择。Via
MreinholdBlog

虽然是个艰难的决定,但这么做可以确保将更多的精力放在模块化系统上,从而保证最终的正确性,这么做也不会延误Java
SE 8的发布,Java SE 8计划在今年8月发布。

图片 2

这个决定让人想起2010年的执行计划Plan
B,它将Lambdas(即JSR
335)的加入推迟到了JDK
7发布后。这样,JDK 7就在一年半前发布了(2011年7月),距离之前的JDK
6发布过去了4年半。

在这周的一封 openjdk
邮件列表中,甲骨文的
Java 平台组首席架构师 Mark Reinhold
写道,计划推迟的原因主要是模块化开发的复杂性,这是为了提升系统的可扩展性和性能,模块化开发基于
Jigsaw 项目。在之前的 18 个月 Jigsaw 的开发进程一直很顺畅,但是由于当前
JDK (Java Development Kit) 9 特性完整里程碑是 12 月 10 日,Jigsaw
需要更多的时间来开发。

为了保证稳定性与未来的路线图,JDK将会每两年发布一次版本,同时会有一年两次的Release
Train,这类似于Eclipse每年的Release
Train——Reinhold表示Eclipse的Release
Train的发布时间在夏末,正好是中间的时间点。

“JSR 376 EG (专家组)
尚未发布初稿评审规范,但是在过去两个月收到了很多高质量的反馈和建议,而且还会继续有更多,所以
Java 开发组希望能确保基础构建工具和 IDEs
的维护者能有充足的时间来设计和实现模块化开发支持。”

这样,大型组织就可以规划何时升级到新版本的JDK上去,并使用敏捷规划技术,根据已经完成的内容来进行日常发布,而不会导致匆忙发布或是延迟发布。

因此 Reinhold 提议 JDK 9 发布时间延长 6 个月,常规可用性推迟到 2017 年 3
月,特性完整里程碑推迟到 2016 年 6
月。根据之前的计划修改,这并不是要添加大量与 Jigsaw
无关的特性,也不是让现有特性无限制的增加。

但遗憾的是,这意味着今年8月发布的JDK
8将不会有基于Jigsaw的模块化系统。引入模块化的延迟并不会对一般的开发者造成影响;但随着软件代码量的增长,模块化将会成为软件架构中的必要工具。诸如OSGi与PojoSR之类的模块化系统已经为模块提供了运行时支持;模块化已经成为众多构建与运行时系统中的关键组成部分,对于企业应用服务器来说亦如此。

如果下周二没有充分的反对意见,12 月 8 日就会采用这个新提议。

虽然可以在之后添加模块化支持,但随着代码基历史的不断增长(通常并没有使用模块化进行设计),找到适合的模块将成为一件棘手的事情。没多少人认为
JavaBeans
API需要依赖于GUI;但java.beans.Beans#instantiate()却包含了指向
java.applet.AppletInitializer的一个引用,这直接导致依赖了java.awt包。因此,为JDK寻找合适的模块依然是个巨
大的挑战;随着包数量的不断增长,这些包之间不经意的依赖也会不断增加。java.lang、java.io与java.net包彼此都包含了循环引用,
这使得将其划分到不同模块变得异常艰难。

这不是 Jigsaw 第一次延迟了,此前在 Java 8 也发生过类似的事件。

最后,Jigsaw的延迟引入可以给Oracle与其他模块化专家提供更多的时间来精化提案并使用已有的想法与开发计划。正如Mark在其博客上说
到,Jigsaw的延迟并不是因为工作做得不够,也不是因为目前为止所取得的进展或实现不足,而是不想延误事先定好的JDK
8发布计划,也是为了确保JDK平台的模块化实现要成为最棒的实现。

via
infoworld.com 

文章转载自:开源中国社区 []    

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图