写点什么

Java 平台模块化系统(JSR 376)通过公开测评复议投票

  • 2017-07-09
  • 本文字数:2401 字

    阅读完需:约 8 分钟

Java 平台模块化系统(JPMS,Java Platform Module System)亦称为 Jigsaw 项目 JSR 376 。尽管在两个月前 JPMS 未通过最初的公开评测投票(Public Review Ballot),但是这次 Java 标准制定组织(JCP,Java Community Process)执行委员会(EC,Executive Committee)以压倒性多数通过了复议投票 InfoQ 在前期曾报道过,有一系列的原因导致 EC 成员 IBM 和 RedHat 在首次公开评测投票前就公开宣称将会投反对票,并在报道中推测 Twitter 和 Java 伦敦社区最终也将会投反对票。

在复议投票中,除 Red Hat 以外的所有 EC 成员都投了赞成票。Red Hat 在投票中弃权。Red hat 对自己的投票原因做出了如下解释:

Red Hat 此次投了弃权票,尽管我们认为自上次投票以来为在 EG 内达成一致已经取得了积极的进展,我们也相信那些影响当前建议被社区更广泛采纳的条目是可以在发布的 30 日扩展期内得以解决的。虽然如此,我们并非想要拖延 Java 9 的发布,并很高兴看到有规范牵头人和 EG 对随后的 Java 版本提出了更积极的规划建议,因为理解未来更改是否需要并将会在哪里发生,关键是获得在模块化系统上的真实世界反馈。我们希望项目领导者和 EG 会继续对来自于更广泛 Java 社区的输入保持开放态度,就像过去 30 天中所做的那样,并期待由来自于 OpenJDK 之外的用户和社区数据所驱动的 Java 演化。

Twitter 在首轮投票中投了反对票,但在复议投票中改投了赞成票。Twitter 的JVM/GC 工程师 Tony Printezis 博客中给出了如下解释:

JSR 376 专家组(EG,Expert Group)已经努力澄清了一些模糊之处(#RestrictedKeywords #CompilationWithConcealedPackages #ResolutionAtCompileTime ),并在修订的 JSR 376 规范中做了一些重要改进(#ModuleNameInManifest )及放松了强封装

考虑到上述工作,我们决定对 JSR 376 公开测评复议投票投赞成票。

通过去除了一个重要的障碍,放松的强封装默认会有助于 JDK 9 的采纳,至少在短期内会是如此。考虑到这些改进,当前在 EG 内基本一致地认为,JPMS 已准备好在 JDK 9 中发布。

伦敦 Java 社区在首轮投票中也投了反对票,并在复议投票中改为赞成。就这一最新投票结果,Java 伦敦社区的联合创始人及jClarity 的CEO Martijn Verburg ,以及 IBM 资深技术人员 Tim Ellison 接受了 InfoQ 的采访。

InfoQ:你们如何看待 Red Hat 选择投弃权票?

Verburg: 首先要声明,这是我个人的看法和猜测。我认为 Red Hat 之所以这样投票,是因为它认为投赞成票将会让它的客户产生错觉,认为当前形式的 Jigsaw 已准备好提供所有用户的全部用例使用。Red Hat 清楚地表明了自己的态度,即虽然当前形式的 Jigsaw 是一个可接受的基础,但是尚未对所有用户和用例准备好。

Red Hat 正寻求解决的一些 Jigsaw 条目,已经推迟到稍后的日期。我们当前仍不确定对这些问题的解决是否将会出现在 Java 9 的更新版发布或是 Java 10 中。

InfoQ:自 5 月 8 日投票后,还做了哪些更改?

Verburg: 非常多!详细技术细节记录于如下会议记录中:

其中需要特别强调指出的是:

  • 在版本命名格式上取得了一致。
  • 在自动模块命名(Automatic Module Naming)规则上取得了一致,并给出了最佳使用指南(这对 Maven 生态系统非常重要)。
  • 同一模块的多版本处理问题将会延期解决。
  • 在将放宽强封装作为默认上取得了一致(这意味着更少的应用将会打破常规,而是给出告警)。
  • 整理了部分关键字的使用方法(支持 Eclipse 编译器工作)。T

InfoQ:为使 JSR-376 投票通过,是否还实现了一些其它的改进和贡献因素?

Verburg:事实上,规范牵头人和 EG 间通过电话会议联系,并为改进相互之间的通信和协作而做了大量的工作,这是尤其至关重要的。

Ellison:在 5 月 8 日投票关闭后,还完成了一系列的改进【1】。其中部分改进是一些相对较小的 API 改进,这些改进早就应该完成,即便规范那时已经进展到建议最终草案(Proposed Final Draft)状态。其它的一些改进是提供了新的功能,包括支持已有代码更容易的迁移,以及支持 Java 9 概念在已有软件库和应用中更宽泛的采纳。作为专家组,我们聚在一起(虚拟的)并探讨了一些突出的问题,决定了哪些问题应在最初版本中“必须解决”,哪些问题可以推迟到稍后的 Java SE 版本中,以及哪些问题应该在当前阶段被抛弃。

对于通过增加平台发布节奏而确保提升 Java SE 技术的生命力和步伐的做法,在 JCP 中存在着一些讨论。这必须实现于多年来一直对 Java 工作良好的标准化过程中,并且具有一个能为商业利益提供富有成效协作的论坛。

综合这两个方面的因素,我希望有 JSR 维护版本专家组能尽快重新考虑一些被推迟的 JPMS 条目。而且通过提交一个最初版本,任何更进一步的提升将会受益于一些真实世界经历。

对于这个话题,我在一篇博客文章【2】中做了详解介绍。其中的突出问题列出于文档【3】中。

[1] https://www.jcp.org/en/jsr/results?id=5959

[2] https://developer.ibm.com/javasdk/2017/05/26/building-consensus-jsr-376-java-platform-module-system/

[3] http://openjdk.java.net/projects/jigsaw/spec/issues/

InfoQ:你们希望在 JSR-376 中能看到哪些更进一步的改进?

Verburg:我希望能有更多的工作围绕着版本控制和版本支持开展。当前,挑出问题的责任依然落在构建工具上,但我们希望 Jigsaw 能对此提供强大的引导作用。

Ellison:模块化并非一次性设计。我们认为它将随人们的使用而不断进化,给出我们以前从未看到过的问题,我们从来没有预先考虑到的用例,并不断地采纳业界的改进(例如云、微服务、无服务器等)。我一直关注着如何与社区共同工作,如何了解我们客户的利益,意在确保当前代码并未落后于 Java SE 的演化,并且很好地支持新的框架和编程模型。

查看英文原文: Java Module Platform System (JSR 376) Passes the Public Review Reconsideration Ballot

2017-07-09 19:002656
用户头像

发布了 227 篇内容, 共 76.8 次阅读, 收获喜欢 28 次。

关注

评论

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

聊一聊“会员制”

鲸品堂

会员中心 付费会员 企业号 6 月 PK 榜

英特尔研究院发布全新AI扩散模型,可根据文本提示生成360度全景图

E科讯

从实际业务出发,OA上云我更推荐华为云

平平无奇爱好科技

深度解读:ASP.NET Core Blazor 含快手入门教程

EquatorCoco

asp.net

敏捷项目管理工具大全

顿顿顿

敏捷项目管理 敏捷工具 scrum工具

Cloud Studio 浏览器插件来啦

CODING DevOps

中国自动驾驶发展加速,已实现多场景落地应用

来自四九城儿

Nautilus Chain:模块化Layer3的先行者

BlockChain先知

Django笔记四十四之Nginx+uWSGI部署Django以及负载均衡操作

Hunter熊

Python nginx django 负载均衡 uwsgi

企业上云数据安全不容忽视,华为云ERP上云解决方案全面保障信息安全

YG科技

作为ISV,这是我为什么选择华为云ECS的理由

平平无奇爱好科技

沙利文发布《2023中国数据管理解决方案市场报告》,腾讯云位列领导者梯队

说山水

2023-06-21:redis中什么是BigKey?该如何解决?

福大大架构师每日一题

redis 福大大架构师每日一题

复旦大学高校专区入驻飞桨AI Studio,优质教育资源等你来学!

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨

自动驾驶发展依旧处于初步阶段

来自四九城儿

大规模 AI 高性能网络的设计与实践

Baidu AICLOUD

大模型训练 RDMA

Kubernetes集群授权管理

穿过生命散发芬芳

Kubernetes 6 月 优质更文活动

中国的“贝尔实验室”:我们的数据库从内核的第一行代码写起

YashanDB

AI血洗时尚圈!就连这些线上店家都开始用AI生成爆款商品了

Openlab_cosmoplat

人工智能 AI

Nautilus Chain:模块化Layer3的先行者

大瞿科技

卡口服务 —— 基于前端巡检系统的拓展实践|得物技术

得物技术

基于 Flink CDC 构建 MySQL 到 Databend 的 实时数据同步

Databend

自动驾驶的必要技术和等级

来自四九城儿

火山引擎Dataleap数据质量解决方案和最佳实践(一):数据质量挑战

字节跳动数据平台

数据治理 数据开发 数据质量 数据研发

全方位赋能开发者成长!华为开发者联创日·深圳站圆满落幕

彭飞

企业OA上云靠谱最重要,多年业务推进为何华为云成为我的首选?

平平无奇爱好科技

作为IT从业者,为什么我推荐华为云ECS?

平平无奇爱好科技

学习 SSL/TLS ,这一篇就够了

火山引擎边缘云

TLS 证书 SSL证书

java中synchronized和ReentrantLock的加锁和解锁能在不同线程吗?如果能,如何实现?

福大大架构师每日一题

Java Go 福大大架构师每日一题

把金融航母开进智能峡湾,总共分几步?

脑极体

华为 AI 金融

OpenHarmony自定义组件

坚果

OpenHarmony 6 月 优质更文活动

Java平台模块化系统(JSR 376)通过公开测评复议投票_Java_Michael Redlich_InfoQ精选文章