写点什么

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:551974

评论

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

GitHub爆赞的Web安全防护指南,网络安全零基础入门必备教程!

我再BUG界嘎嘎乱杀

黑客 网络安全 信息安全 WEB安全 网安

Intel:13/14代酷睿补丁几乎无损性能!未来所有产品都安全

E科讯

深度解析 MetaArena 游戏引擎,如何让 GameFi 应用更具生命力?

股市老人

PingCAP 崔秋当选 CCF 数据库专业委员会执行委员

PingCAP

TiDB CCF pingCAP

全球化浪潮下的数据库革新:嘉里物流 TiDB 实践价值的设想

PingCAP

数据库 物流 TiDB

AI 应用实战营 - 作业 十 - 知识库1

德拉古蒂洛维奇

2024黑帽大会最热门的九大AI网络安全工具

我再BUG界嘎嘎乱杀

AI 黑客 网络安全 信息安全 网安

敏捷前瞻:首届中国Scrum大会带您走进Scrum的未来

顿顿顿

敏捷开发 敏捷项目管理 scrum大会 敏捷大会 scrum敏捷开发

可图Kolors-LoRA风格故事挑战赛

IT蜗壳-Tango

华为专家带你玩转To B产品设计,助力企业转型!

轶天下事

掌握这种思维,让你每句话直击要害,颠覆你的职场表现

轶天下事

解析淘宝买家秀API返回值中的热门晒单与趋势预测

技术冰糖葫芦

Python 提取出SQL语句中Where的值的方法

不在线第一只蜗牛

Python sql 开发语言

深入探讨微服务架构中的同步通信机制

不在线第一只蜗牛

架构 微服务 云原生 通信

开源图片编辑器的插件化架构

秦少卫

开源图片编辑器 开源vue图片编辑器 vue图片编辑器 开源在线PS源码 开源海报编辑

从 MySQL 迁移到 TiDB:使用 SQL-Replay 工具进行真实线上流量回放测试 SOP

PingCAP

MySQL 数据库 TiDB

降级攻击可“复活”数以千计的Windows漏洞

我再BUG界嘎嘎乱杀

黑客 网络安全 信息安全 漏洞 网安

淘宝/天猫商品详情API返回值实战解析

技术冰糖葫芦

API Explorer api 货币化 API 接口 API 测试

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