Jigsaw项目的延期已获批准

在七月份,Oracle的首席架构师Mark Reinhold在博客上透露Jigsaw项目将会延期,他提议将原本计划在Java 8发布的Jigsaw延迟到至少两年以后的Java 9中。

该项延迟随后获得JSR 337专家组批准。

InfoQ关于各界反响的文章在读者中产生了一系列的讨论。

Reinhold在他的答疑博客文章中 d回答了大多数关键问题,并讨论了历史、原理以及替代方案。

简单来说,Reinhold指出JDK模块化很复杂,而Sun微系统公司没有足够的人员。采用已有的OSGi和Maven并不是可行的方案,因为它们都不能满足所有的需求。

有一项建议是再次从Lambda项目中抽取员工,将Lambda项目延迟到Java 9,但是Reinhold认为这是不行的。

还有一项建议并没得到详细的回答。

Jigsaw项目包含了两个阶段,正如Reinhold所描述:

在第一阶段中,我们将会探索一种与既存Java模块化方案不同的模块化方式。我们假设能够修改Java语言、虚拟机以及API。这样做的话就能够在编码的所有阶段实现很强大的强制模块化边界,从编译期到开发到执行。这样的话,会带来更好的可用性、可诊断性、安全性以及性能。第一阶段的最终目标是生产出能够交付给Module-System JSR专家组的工作原型。

第二阶段是生产出Module-System JSR专家组所定规范的参考实现。专家组可能给出与我们所探索的完全不同的方案。如果这种事发生的话,Jigsaw将会做出必要的调整,但是无论如何,我觉得最终的结果将会对我们当前的工作有好处。

那为什么不把看起来简单一些的第一阶段放在Java 8中,而只将第二阶段延迟到Java 9中呢?Reinhold回复说:

如果我们在一个Release版本中发布模块系统,而在下一个Release版来模块化JDK,那么,我们会有犯根本性错误的巨大风险。如果是这样的话,我们必须在稍后的Release版本中修复它,而在形成即成事实后再去修复根本性的设计错误一般都会导致很坏的最终结果。

专家组全票通过。一位专家组成员这样说:

鉴于我认为我们没有明确的策略能够按时在SE8中完成,所以我投了赞成。

提供模块化框架是关键的交付功能,而单独交付那个阶段的风险要明显小于实际的JDK模块化。如果在Java 8中提供这个关键的特性,而将JDK的模块化延迟到Java 9中,那我们的读者认为承担这样的风险是否值得呢?

如果你有不同的观点,请在下面进行评论来让我们知道你的想法。

查看英文原文:Project Jigsaw Late for the Train: Deferment ratified

你可能感兴趣的:(Jigsaw项目的延期已获批准)