在七月份,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
评论