速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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:002559
用户头像

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

关注

评论

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

Verilog HDL

贾献华

7月月更

李宏毅《机器学习》丨2. Regression(回归)

AXYZdong

机器学习 7月月更

python小知识-rethinking python 生成器

AIWeker

Python python小知识 7月月更

MySQL数据库优化

五分钟学大数据

MySQL 7月月更

模块七作业 - 王者荣耀商城异地多活架构设计

Elvis FAN

JAVA编程规范之控制语句

源字节1号

后端开发

短视频直播系统源码——如何优化满足用户需求?

开源直播系统源码

直播系统源码 开源源码 短视频直播系统源码

值得一看的智能运维AIOps关键核心技术概览!

云智慧AIOps社区

人工智能 机器学习 运维 智能运维 自动化运维

vueCli3.x版本中如何修改打包好的css、js、img文件名

木叶🐱

7月月更

Okaleido或杀出NFT重围,你看好它吗?

鳄鱼视界

还在羡慕其它平台有跨店满减,其实你也可以!

CRMEB

2022年浙江省等保备案流程指南

行云管家

等保 等保备案

云计算和大数据的关系以及区别详细讲解

行云管家

云计算 大大数据

易观千帆银行用户体验中心成立,助力银行业用户体验升级

易观分析

银行 用户体验

不会吧!钉钉都下载了,你还不知道可以这样玩?

Jianmu

钉钉 持续集成 自动化运维 建木CI 通知

想进大厂拿高薪?掌握Redis的Sentinel哨兵原理将是至关重要的突破口

了不起的程序猿

Java java程序员 Redis 数据结构

音视频开发进阶|第四讲:音频自动增益控制 AGC

ZEGO即构

音视频开发 AGC

边无际 Shifu IoT 开源开发框架 助力物联网应用开发加速十倍

亚马逊云科技 (Amazon Web Services)

开源 Kubernetes 物联网 应用开发

TPC藏宝计划质押系统开发(Dapp)

薇電13242772558

智能合约 dapp

动手实践丨手把手教你用STM32做一个智能鱼缸

华为云开发者联盟

物联网 IoT

不是我说,Nacos和Apollo中的长轮询定时机制,真的太好用了

Java全栈架构师

Java 程序员 面试 微服务 nacos

nacos注册中心之服务注册

急需上岸的小谢

7月月更

全新出品!阿里P5工程师~P8架构师晋升路线揭秘

程序员小毕

Java 程序员 面试 架构师 学习路线

uni-app进阶之内嵌应用【day14】

恒山其若陋兮

7月月更

易周金融 | 邮惠万家银行开业;微信公众号叫停四类金融营销宣传

易观分析

金融

面试官:你确定Redis是单线程的进程吗?

Java永远的神

Java redis 程序员 架构 面试

向量化执行引擎框架 Gluten 宣布正式开源,并亮相 Spark 技术峰会

Kyligence

spark Gluten

jdbc自带MySQL连接池实践

FunTester

声网传输层协议 AUT 的总结与展望丨Dev for Dev 专栏

声网

传输协议 Dev for Dev

Google上网神器Ghelper

源字节1号

软件开发 小程序开发

软件研发落地实践,要从设计就开始

华为云开发者联盟

云计算 后端 开发

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