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: 非常多!详细技术细节记录于如下会议记录中:

\\

  • 2017年5月18日专家组会议记录;\\t
  • 2017年5月22日专家组会议记录;\\t
  • 2017年5月23日专家组会议记录。\

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

\\

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

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

  1. Java平台模块系统公众审查未能通过

    在过去的几周里,Java世界中的戏剧,阴谋和政治活动异常高涨,最终在本周的JSR 376 Java平台模块系统公共评审投票中达到了顶峰. Java模块化(包括Java平台模块系统(JPMS))可以说是 ...

  2. Oracle的Java模块化系统保卫战

    2017年企业新兴技术(ETE)大会上最为及时的演讲之一要算由Oracle JVM负责人Karen Kinnear呈献的"Java的未来:模块化及其他".在她演讲之前的这段时间发生 ...

  3. 使用JDK9提供的模块化系统,来定义自己的模块

    JDK9提供的模块化系统 Java模块化系统的背景 模块是什么 模块化的目标 可靠的配置 强封装 增强可扩展性能和可维护性 可定制的运行环境 模块的类型 1.具名模块(Named Module) 2. ...

  4. Java9新特性系列(模块化系统: Jigsaw-Modularity)

    模块化的前时代 Ant时代 相信大家对Ant都不陌生,Ant是任务型的,定义了一系列的任务dir/compile/jar等等,缺点是操作文件 Maven时代 Maven/Gradle相对于Ant,增加 ...

  5. Java 9 模块化(Modularity)

    JDK9的发布一直在推迟,终于在2017年9月21日发布了.下面是JDK9的几个下载地址:  JDK9.0.1 Windows-x64下载地址  Oracle Java 官网下载地址  OpenJDK ...

  6. java 平台级模块系统_Java平台模块系统公众审查未能通过

    java 平台级模块系统 在过去的几周里,Java世界中的戏剧,阴谋和政治活动异常高涨,最终在本周的JSR 376 Java平台模块系统公共评审投票中达到了顶峰. Java模块化(包括Java平台模块 ...

  7. Java平台,标准版Oracle JDK 9中的新功能

    Java平台,标准版 Oracle JDK 9中的新增功能 版本9 E77563-05 2017年9月 JDK 9中的新功能概述 Java Platform,Standard Edition 9是一个 ...

  8. Java Platform Module系统中的可选依赖项

    Java平台模块系统(JPMS)对依赖项有很强的见解:默认情况下,需要(必须可访问)它们,然后在编译时和运行时都将它们存在. 但是,这不适用于可选的依赖项,因为代码是针对运行时不一定存在的工件编写的. ...

  9. java平台设计zhe_基于java平台的网上评教系统的设计与实现

    基于java平台的网上评教系统的设计与实现 作者: 郭文占 摘要: 教师评价是高校教育管理的重要方面,也是促进教育发展和教师发展的重要手段.网上评教极大地减少了教务管理人员的工作量,正在被越来越多的高 ...

最新文章

  1. IoC容器和Dependency Injection模式
  2. java字符_Java String 类
  3. 学习进度条(第三周)
  4. 学科网站建设的尝试与思考
  5. 学习笔记:Keras 错误提示
  6. 【Oracle】RAC11gR2Grid启动顺序及启动故障诊断思路
  7. android各层之间,Android运行程序在各层架构之间的相互关系
  8. supervisor 守护多个进程_supervisor管理守护进程
  9. 项目杂-备注-说明-其他
  10. Mac小知识——MAC电脑如何查看IP
  11. WinForm窗体美化
  12. 2020Java程序设计基础(华东交通大学)章节测试免费满分答案
  13. 安装RHEL 7(Centos7类同)
  14. php多合一安装包,DOXCX多合一小程序系统Sass平台源码分享
  15. 江苏大学linux实验报告,正弦波振荡电路实验报告.doc
  16. Python解答多元线性方程组
  17. 如何搭建APP分发平台分发平台搭建教程
  18. Echarts 水球图设置基准线
  19. Linux终端编程--termios
  20. 查看Git本地安装位置

热门文章

  1. Python threading Thread多线程的使用方法
  2. 分布式服务常见问题—访问量统计如何做?
  3. AD设备覆铜与同网络过孔的连接方式
  4. “毕设导师互选系统”项目产品宣传推广方案
  5. (Android第一行代码)活动的启动模式
  6. jquery和zepto的扩展方法extend
  7. Can not find the tag library descriptor for http://java.sun.com/jsp/jstl/
  8. MySQL监控系统Lepus的搭建
  9. HighCharts点击柱形或饼块等加URL或Click事件
  10. SQL 2008 R2 启动失败 提示 请求失败或服务未及时响应