最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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

评论

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

无需服务器开发,实现设备状态缓存方案——实践类

阿里云AIoT

sql 缓存 运维 物联网 存储

小令观点 | 数字世界里,拿什么来保护你的身份安全?

令牌云数字身份

身份安全 人脸识别 安全技术

软件测试/测试开发丨从 0 开始学 Python 自动化测试开发(二):环境搭建

测试人

Python 软件测试 自动化测试 测试开发

软件测试/测试开发丨Google 测试总监聊如何经营成功的测试职业生涯

测试人

软件测试 自动化测试 测试开发 职业生涯

小令观点 | 人脸识别遇到了什么关键性难题?

令牌云数字身份

人脸识别 难题攻克

PyTorch中 torch.nn与torch.nn.functional的区别

代码的路

Python PyTorch

尚硅谷Filebeat视频教程发布

小谷哥

目标跟踪相关知识总结

代码的路

图像处理

转租、重组、裁员,Salesforce给中国学徒带来了哪些启示?

ToB行业头条

小令观点 | 个人信息泄露——当代数字身份之殇

令牌云数字身份

数字身份 信息泄露 身份

软件开发入门教程网之Git 基本操作

雪奈椰子

git clone git push

前端面授培训课程哪里好呢

小谷哥

Python中LSTM回归神经网络的时间序列预测

代码的路

Python

极光笔记 | 如何为 iOS 16 创建一个实时活动

极光JIGUANG

ios 开发者 运营 API

带你来吃瓜!Andy Pavlo教授带您一文回顾数据库的2022年

StoneDB

MySQL 数据库 HTAP StoneDB 企业号 1 月 PK 榜

RPN:Region Proposal Networks (区域候选网络)

代码的路

图像处理

深圳大数据程序员培训多长时间可以找工作

小谷哥

创建Root权限虚拟环境

代码的路

Linux

软件开发入门教程网之Git 分支管理

雪奈椰子

git git pull cannot lock ref git 学习

Integer.valueOf(String) 方法之惑

Steven

SiamFC:用于目标跟踪的全卷积孪生网络 fully-convolutional siamese networks for object tracking

代码的路

图像处理

PyTorch中 nn.Conv2d与nn.ConvTranspose2d函数的用法

代码的路

Python PyTorch

稳扎稳打,坚定前行 | 一文带你回顾 StoneDB 的 2022 年

StoneDB

MySQL 数据库 HTAP StoneDB 企业号 1 月 PK 榜

上海前端培训课程哪家的好

小谷哥

堆叠降噪自动编码器 Stacked Denoising Auto Encoder(SDAE)

代码的路

图像处理

【DBA100人】白鳝:一直往上走,从程序员到数据库专家

OceanBase 数据库

数据库 oceanbase

PyTorch的简单实现

代码的路

Python PyTorch

培训学习大数据开发技术怎么样

小谷哥

自编码器 AE(AutoEncoder)程序

代码的路

自编码器

SiamRPN:High Performance Visual Tracking with Siamese Region Proposal Network 孪生网络

代码的路

神经网络

CLIPPO:纯图像的CLIP,参数减半且更强大!

Zilliz

机器学习

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