AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

IBM 和 Red Hat 会对 Java 模块系统(Jigsaw)投反对票

  • 2017-05-06
  • 本文字数:1778 字

    阅读完需:约 6 分钟

InfoQ之前曾经报道过JSR 376(Java 平台模块系统)的开发现状,它通常被称为“Jigsaw 项目”。现在,有一件不太寻常事情,IBM 和Red Hat 都公开表示,将会对Jigsaw 目前的状态投反对票。

这个项目试图为Java 提供一个标准化的模块系统,它最初的计划是在Java 7 中实现,在Mark Reinhold宣布B 计划之后,转移到了Java 8 中。2012 年7 月,Oracle 再一次推迟了这个项目,将其转移到了Java 9 中。即便如此,这个项目依然再次延期,这主要是因为Jigsaw 的复杂性而且它需要进行广泛的测试。

Jigsaw 的范围是非常广泛的,它不仅想要模块化庞大的 Java 运行时,还想强制进行强封装,这样的话 Java 代码只能通过公开的接口去访问平台库。模块化的代码不能随心所欲地进入另外一个模块的内部。

不仅如此,Oracle 希望模块系统不仅用在 JDK 本身中,还要用在应用程序的代码中。为了实现这一点,JSR 376 专家组(Expert Group,EG)曾经讨论过应用级别模块化与 JDK 模块化的各个方面。

除了标准流程之外,目前已经有两个主要的模块实现,它们与 Jigsaw 的范围有些重叠,这两个方案就是 JBoss Modules 和 OSGi,前者来自 Red Hat,而后者由一个厂商所组成的联盟来管理,这些厂商中包含 IBM。

Red Hat 和 IBM 都是 Java Community Process 执行委员会的成员,这个委员会有 25 个成员,它们要负责批准所有的 Java 新标准,包括“平台释放版本”要包含哪些的内容,比如 Java 的主版本。这样的释放版本必须要取得三分之二席位的支持。

来自 IBM 的 Tim Ellison 在 OpenJDK 邮件列表中宣布了他们的决定,他这样评论到:

IBM 也会投反对票,这反应了我们对这个 JSR 的态度,我们认为眼下它还没有超出 Public Review 阶段的要求,并不适合继续推进到 Proposed Final Draft 阶段。

JSR 376 专家组和公众已经针对规范当前的 public review 草案提出了很多合理的问题和关切,这些问题应该进行进一步的讨论并得到妥善解决。我们倡导专家组的所有成员继续协同工作,解决邮件列表中所记录的问题。

在将规范推至下一阶段之前,IBM 希望在整个专家组中形成更紧密的共识。

Ellison 的表态似乎是对一个私下交流的回应,这个交流是在 Ellison、Mark Reinhold 和 Scott Stark(Red Hat)之间进行的,Stark 是这样评论的:

目前,Red Hat 将不会投票批准 JPMS 的 public review 草案,因为它并不能实现 Java 社区的最佳利益。

有个问题在于 IBM 和 Red Hat 所提供的已有的模块系统很难与 Jigsaw 便捷地进行互操作。不过,这两个系统都没有在市场上占据支配性的地位,尽管被影响者会比较痛苦,但是大多数的 Java 项目并不会受到这种不兼容性的影响。

但是,Jigsaw 的问题并不局限于 OSGi 和 JBoss modules。在 Java 世界中,主流的代码打包和分发系统是 Maven,Jigsaw 并没有为基于 Maven 的项目提供一个清晰的升级路径,Maven 会将代码打包到 JAR 文件中,Jigsaw 并没有提供将其打包到模块中的升级途径。

这种关切在一篇联合文档中进行了详细描述,这篇文档是由Red Hat 和外部的Maven 专家共同编写的。Maven 的核心关注点是所谓的“自动化模块(Automatic Modules)”,对社区中的很多人来说,Maven 所关注的情况要比与各厂商的模块系统间的兼容性问题要严重得多。

Martijn Verburg 是伦敦 Java 社区的领导者(同时也是 JCP 执行委员的投票成员),他这样告诉 InfoQ:

作为 EC 成员,这么早就阐明其投票立场并且采用如此公开的方式,实在有些不同寻常。这表明,在 Java 生态系统中,主要的参与者对 JPMS 和 Jigsaw 这一实际实现有着很严重的担忧。尽管目前的模块规范和实现为 Java 带来了许多重要的安全和简洁(compact)运行时提升,但是它(还)没有弥合与其他通用模块系统的鸿沟,也没有处理好它们所依赖的构建工具,无论正确与否,Java 平台恐怕会经历 Python2/3 这样的分裂。

在 Java 新版本的开发周期中,临近结束时,出现如此明显的分歧甚至敌视是前所未有的。尽管这只是一个 Public Review 投票,而不是最终批准投票,但这是一个明确的警告信号。

如果考虑到其他厂商和社区的观点,Oracle 对 Java 9 的交付时间点似乎会出现冲突。到底 Oracle 会改变方向(这样的话,有可能会造成 Java 9 的再次延期)还是坚持自己的观点(即便主要的厂商和社区参与者有反对意见),尚有待继续观察。

查看英文原文: IBM and Red Hat to Vote “No” on Java Modules (Jigsaw)

2017-05-06 19:551600

评论

发布
暂无评论
发现更多内容

Here I come

Dreamer

c++ primer -- 第14章 C++中代码重用

Dreamer

c++

C++ primer -- 第十五章 友元,异常和其他

Dreamer

c++

week2- 作业二,学习总结-框架设计

未来已来

6.6Doris分析案例(一): NoSQL案例

张荣召

架构设计-学习总结笔记

Xuenqlve

架构师训练营 第六周作业

haha

架构师一期

第二周作业-学习总结

jingx

学习笔记--week06

张荣召

C++ primer --第十一章 使用类

Dreamer

c++

C++ primer -- 第17章 输入,输出和文件

Dreamer

c++

6.5搜索引擎的基本架构

张荣召

C++primer-函数探幽

Dreamer

c++

C++ 第九章 内存模型和名称空间

Dreamer

c++

Week 2 :框架设计(学习总结)

Sean Chen

架构师训练营第一期 - 第六周学习总结

卖猪肉的大叔

极客大学架构师训练营

6.8Doris分析案例(三):扩容伸缩设计

张荣召

极客大学 - 架构师训练营第一期 - 第六周作业

Black Eyed Peter

极客大学架构师训练营

C++ primer -- 第十三章 类继承

Dreamer

c++

6.7Doris分析案例(二):高可用和集群扩容设计

张荣召

第二周学习总结

刘洋

极客大学架构师训练营

架构师训练营第六周学习笔记

一马行千里

学习 极客大学架构师训练营

C++ primer -- 第十章 对象和类

Dreamer

c++

架构师训练营第一期 - 第六周课后作业

卖猪肉的大叔

极客大学架构师训练营

架構師訓練營第 1 期 - 第 06 周總結

Panda

架構師訓練營第 1 期

Ubuntu常见问题解决方案与使用技巧

jiangling500

ubuntu

C++ primer -- 第十二章 类和动态内存分配

Dreamer

c++

C++ primer -- 第16章 string类和标准模版库

Dreamer

c++

6.4Zookeeper与分布一致性架构

张荣召

架构师训练营第 6 周:技术选型 (二)

子青

架构师训练营第一期 - week6

习习

IBM和Red Hat会对Java模块系统(Jigsaw)投反对票_Java_Charles Humble_InfoQ精选文章