AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

JCP EC 投票反对 Java 平台模块系统

  • 2017-05-14
  • 本文字数:2729 字

    阅读完需:约 9 分钟

近日,JCP 执行委员会有关 JSR-376(Java 平台模块化系统,通常称为 Jigsaw)的投票结果在Java 社区进程页面上发布,有10 票赞成提案,13 票反对公开评审。

InfoQ 之前曾经报道过,这伴随着为期一周的激烈的公开辩论和评审,以及 Reinhold 最近针对 JCP EC 的抗辩

当你考虑如何投票时,我劝你就事论事地评判这份规范,另外,你要考虑到,自己的投票会成为什么性质的先例。

执行委员会似乎把这话记在了心里,并在回复评论时指出,提案以其目前的形式尚未准备就绪。其中部分担忧来自于自动化模块命名,即如果没有在 Jar 文件的 module-info.class 中指定,则模块名将从文件名生成。由于文件名是不确定的,任何从文件名到显式声明的名称的切换都无法以向前兼容的方式实现,所以这个问题可能会严重地伤害 Java 社区。Stephen Colebourne 是 Joda Time 及 Java 8 时间包的作者。他早些时候写道

自动化模块允许模块依赖于非模块。但这是通过在文件名上指定 requires 子句而不是模块名来实现的。如果模块是基于文件名发布的,那么这后续会让我们吃苦头。一条新的 MANIFEST.MF 记录允许任何开源项目选择一个模块名,并立即发布其选择。当 JPMS 看到 MANIFEST.MF 记录时,它会将该值用作自动化模块的名称。

社区成员必须不惜一切代价避免发布基于文件名的模块化 Jar 文件。但是,从现在开始,社区成员可以发布包含新 MANIFEST.MF 记录的 Jar 文件(虽然从技术上讲 MANIFEST.MF 记录尚未最终确定,但它应该很快就会定下来)。

有关自动化模块名的反馈已经在专家组邮件列表上报道过,而公开评审草案则被希望按照原样发布。然而,在过去这些天里,Reinhold 认识到自动化模块名的问题,使得邮件列表形成了一份修正提案。 不过,这并不包含在提交给 JCP EC 的公开评审草案中,成员们注意到了评论,他们不能投票支持这份使用了先前写法的提案,因为它没有包含邮件列表上讨论的最终提案

LJC 对这份规范投了反对票,因为它是在投票开始阶段提交的。在 14 天的投票时间里,对于部分非常困难的问题,如#AutomaticModuleNames,规范负责人和专家组在达成一致方面取得了重大的进展。

不过,我们 [SAP SE] 尤其关心的是,专家组内缺少直接沟通。假如这份 JSR 未能以三分之二的多数票获得批准,我们希望专家组和规范负责人可以使用另外 30 天的时间经常见面,从而理清存在的问题,提出新的、更合理、更高瞻远瞩的提案。尽管我们知道不可能改正所有问题,但我们认为,过去的几天已经清楚地表明,良好的折中还是可能的(例如“自动化模块问题”),我们相信,多出来的时间可以用于提交一份更好的规范,供重新投票。

反馈普遍是积极的,并且认可到目前为止为实现 JPMS 所做的大量工作。由于未能获得三分之二的多数票,为了提交一份更新过的提案,公开评审阶段现在另外延长了 30 天。接下来,后续的投票可以基于根据邮件列表上的讨论修正后的提案进行,如重新讨论自动化模块命名方案。不过,它还是建议,讨论应该在邮件列表上进行,而不是博文讨论区:

最后,请所有成员和规范负责人回到谈判桌上来,彼此间直接交流,而不是在博文和公开信中互相指责!

虽说有人可能会将反对票视为反对 JPMS,但事实是,目前为止,与该 JSR 相关的工作还在进行当中,还有一些不完善的地方,在最终投票之前可以忽略。公开评审将在 30 天内再进行一次,如果公开评审发现了新问题,则可以重新评审。不过,一旦 JSR 通过了公开评审,就会进入最终评审投票阶段,不允许再重复,这是最后一次。虽然它不会影响 OpenJDK 中的实现(代码已经落地),但它会影响其他 Java 供应商为了保持和 Java 兼容所需要做的工作。Oracle 可以选择否决或解散 JCP,从而让一份尚未完成的规范快速通过评审。Martijn Verburg 在 Java 伦敦社区的博客上发文解释了 LJC 投反对票的原因

这是 JCP 所支持的(不,不只是因为政治)

临时观察员及部分科技媒体可能会得出结论,所有这些不过是大公司政治。近期的公共博客和公开信助长了这种情绪,但是我们极力主张,人们要读一下伴随“反对票”的评论。

虽然 Oracle 是 Java 的管理者,但 JCP 执行委员会(EC)的宗旨是引导整个 Java 生态系统的发展,我们强烈的感到,它在这种情况下理应如此。

Ben Evans 是 EC 中另一位来自 LJC 的代表,他告诉 InfoQ:

自 Jigsaw 项目启动以来,LJC 一直是它的支持者。我们清楚地知道,这种根本的变化所包含的复杂性对 Java 应用程序打包和部署方式的影响。不过,更重要的是,我们第一次有了模块系统。

在过去的几个周里,尤其是从 JPMS JSR 被提交评审以后,专家组已经在解决未决问题方面取得了重大进展。然而,主要问题依然存在,需要在正式发布以前修复。最重要的是修复自动化模块的建议,因为社区已经表明,他们最感兴趣的是模块的迁移路径(尤其是,例如,基于 Maven 的应用程序)。

一旦 EG 就如何将其应用到现有代码提供了一些指引,如果获得了进一步喘息的空间,就可以举办一些骇客日活动,看看社区对新特性提案的反应。

JPMS 仍然具有很大的潜力——但在可以广泛使用之前还有更多的工作要做。

IBM 的 Tim Ellison 在有关投票的评论下发表了一篇博文,表达了希望未决问题得到解决的愿望:

专家组和规范负责人会继续密切合作,富有成效地完善规范草案,我们对此持乐观态度。我们坚信,修订可以让 JSR 376 规范的几个遗留技术问题的状况得以改善,并作为“建议的最终草案(Proposed Final Draft)”,而且不会对 Java 9 项目计划产生重大干扰。

Twitter 也发表声明,解释了他们投反对票的原因,并表达了希望规范负责人和专家组协力解决未决问题的愿望:

对于 JPMS,我们主要关注的是,它可能给 Java 开发人员带来破坏性变化,却没有达到人们对于这样一个系统的预期,提供立竿见影的效果。我们担心,这会延误这项重要技术的广泛应用。我们希望,如果 JPMS 更全面地实现原来的一些目标,它就可以解决 Java 开发人员现如今面临的真正痛点。特别是,非导出程序包名称冲突可以说不符合该 JSR“互不干扰(non-interference)”和“强封装”的目标。但是,如果模块更彻底地隔离,那么可以通过将它们作为非导出程序包隐藏在模块中,使构建系统支持同一程序包的多个副本。这种切实的、立竿见影的效果可以抵消开发人员模块化自己的源代码所需要完成的所有困难工作,可以促进 JPMS 更快的应用。

出于上述原因,Twitter 对 JSR 376 投了反对票。我们希望,规范负责人和专家组在接下来的几个周里协力消除我们的担忧,并解决其他投反对票的 JCP 执行委员会成员提出的其他问题。我们期待着在 JSR 376 再审投票时可以投赞成票。

InfoQ 已经和 Mark Reinhold 取得联系,请他对此事发表评论。在收到回复后,我们会在这里发布。

查看英文原文 JCP EC Votes Against the Java Platform Module System

2017-05-14 19:001977
用户头像

发布了 1008 篇内容, 共 410.1 次阅读, 收获喜欢 346 次。

关注

评论

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

Apache APISIX Ingress v1.5-rc1 发布

API7.ai 技术团队

APISIX kubenetes Ingress Controller

RT-Thread记录(二、RT-Thread内核启动流程 — 启动文件和源码分析)

矜辰所致

RTT RT-Thread 8月月更

多业务模式下的交易链路探索与实践

转转技术团队

中台 状态机 FSM

我和 TiDB 的故事 | 学tidb半年,社区治好了我的精神内耗

TiDB 社区干货传送门

人物访谈 社区活动

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

万猫学社

云原生 istio envoy kiali

Python开启虚拟环境

技术小生

8月月更 Python虚拟环境

2022 CCF国际AIOps挑战赛决赛暨AIOps研讨会报名已开启

BizSeer必示科技

人工智能 阿里云 华为云 信通院

开源一夏 | Java格式化日期 微秒

六月的雨在InfoQ

开源 8月月更

2022年6月互联网医疗领域月度观察

易观分析

医疗 市场

后台权限系统的设计以及主流的五种权限模型详解

Java全栈架构师

Java 程序员 架构 面试 后端

sync-diff-inspector 使用实践

TiDB 社区干货传送门

6.x 实践

一次多表关联顺序的慢查询——TiDB 关联特性

TiDB 社区干货传送门

性能调优

没开发人员,接到开发物联网系统的活儿,干不干?

AIRIOT

低代码 物联网 低代码,项目开发

莅临GOPS大会龙智展位,获取Forrester最新报告:《Forrester Wave™:2021年第四季度企业服务管理报告》

龙智—DevSecOps解决方案

ITSM Forrester Wave Forrester

关注微信公众号,自动登陆网站

源字节1号

微信小程序

内存问题难定位,那是因为你没用ASAN

华为云开发者联盟

云计算 开发 内存

centOS7.3 安装启用 iptables 记录

JavaPub

Linux centos7 iptables

文盘Rust -- 配置文件解析

TiDB 社区干货传送门

开发语言

我和TiDB的故事 | 遇上你是我的缘

TiDB 社区干货传送门

人物访谈 社区活动

COSCon'22城市/学校/机构出品人征集令

开源社

#开源 COSCon'22

数据治理体系演进简介

网易数帆

大数据 数据治理 元数据 数据标准

官方发布·2022南京智博会定于10月份在新庄国展召开

AIOTE智博会

版本控制篇 | 龙智邀您共赴GOPS全球运维大会,探索大规模、敏捷、高质量、开放式的软件研发与运营之路

龙智—DevSecOps解决方案

运维 DevSecOps GOPS大会

对话庄表伟:开源第一课

开源社

#开源

shell脚本,帮你提升摸鱼时间!

工程师日月

签约计划第三季 8月月更

五大理由告诉你为什么开发人员选择代码质量静态分析工具Klocwork来实现软件安全

龙智—DevSecOps解决方案

静态代码分析 代码静态分析 SAST工具 SAST

SonarQube即将亮相第十八届GOPS全球运维大会

龙智—DevSecOps解决方案

代码安全 GOPS大会 运维、 代码质量检测工具

不是吧?还有人不会定位线上MySQL慢查询问题?

Java永远的神

Java MySQL 数据库 程序员 面试

【7.29-8.5】写作社区精彩技术博文回顾

InfoQ写作社区官方

优质创作周报

手摸手带你 在 Windows 系统中安装 Istio

万猫学社

云原生 istio windows

我和 TiDB 的故事 | 横看成岭侧成峰

TiDB 社区干货传送门

人物访谈

JCP EC投票反对Java平台模块系统_Java_Charles Humble_InfoQ精选文章