时隔16年Jeff Barr重返10.23-25 QCon上海站,带你看透AI如何重塑软件开发! 了解详情
写点什么

Reinhold 就 Jigsaw 投票一事向 JCP 提交公开信

  • 2017-05-11
  • 本文字数:1184 字

    阅读完需:约 4 分钟

Oracle Java Platform Group 的首席架构师 Mark Reinhold 向 JCP 执行委员会提交了一封公开信。在公开信中,他表示对 IBM 投了 JSR 376 反对票一事感到震惊,并争辩说,Red Hat 之所以也投反对票,是出于“保护他们自家的非标准模块化系统,而这个系统在 JBoss/Wildfly 之外的生态系统并没有多少用武之地”。他进一步辩解说:

在你们考虑如何投出你们手中宝贵的一票之前,我建议你们先对这一规范的价值做一个考量,并仔细考虑你们的投票将会对未来带来的深远影响。

因为专家组缺少统一的意见就投反对票,这无异于在反对 JCP 本身。JCP 的存在并不是为了强制达成统一意见,它需要正当充分的理由。它赋予规范制定者充分的决策权,防止专家组成员因为自己的个人兴趣而妨碍到整个进程。如果你们放弃了你们的权利,那么未来的 JSR 就变成了“专家团”的自我表演。

很多失败的技术都是这么来的。

我不希望 Java 的未来会是这个样子。

作为回应,来自 Red Hat 的 David Lloyd 提出了一些比较突出的问题,简单概括如下。

  • 在运行时允许模块间存在环。
  • 模块原始补丁(虽然很小)会被重新计算(在必要情况下进行分阶段)。
  • 在模块路径间提供了包命名隔离。

Lloyd 补充说:

我们担心针对反射所做的变更对于社区来说太过剧烈,而且还有可能对执行委员会和专家组造成很大影响。我认为,在专家组达成一致意见之前,我们还是保持现状。

在模块路径命名方面,Reinhold 提交了一个更新提案 #AutomaticModuleNames,为了更好地与 Maven 兼容,如果 JAR 包里包含了 pom.properties,可以将 Maven 的 group identifier 包含进来,这样模块命名就不太可能发生冲突。

#AutomaticModuleNames 允许开发者将他们的代码拆分成多个模块,而无需等待他们所使用的类库或框架支持 Jigsaw。

这一提案的关键之处在于, JAR 包里的一个 manifest 属性 Automatic-Module-Name。当 JAR 被放进模块路径时,这个属性的值会被用作模块的名字。如果模块路径里的 JAR 包没有提供这个属性,那么模块的名字就需要通过基于文件名的算法来计算得出。Reinhold 建议说:

通过这种机制,类库的维护者就可以很方便地维护一个稳定的模块。例如,在 Maven 里,通过 “pom.xml”里的几行代码就可以添加 manifest 属性。类库维护者在一开始就声明一个稳定的模块名,不需要等待它的依赖库实现模块化,而依赖该类库的软件包和应用可以立即实现模块化。

Oracle 已经在 Java 模块系统提案上进行了大量的工作,从 JSR 277 开始,至今已经有 12 年的时间。最初计划在 Java 7 里发布,后来延期到 Java 8,现在是 Java 9。这一提案从一开始就饱受争议。不过,到目前为止,社区方面已经对 Jigsaw 方案达成广泛的共识,Jigsaw 为分解 JDK 提供了必要的方案。问题在于,如果在 Java 9 里加入 Jigsaw,那么很多 Java 工具就无法工作。

查看英文原文: Reinhold Publishes Open Letter to JCP Pleading That JPMS (Jigsaw) Is Approved

2017-05-11 19:002242
用户头像

发布了 322 篇内容, 共 156.4 次阅读, 收获喜欢 148 次。

关注

评论

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

Android Lottie 中秋月饼变明月动画特效

阿策小和尚

28天写作 Android 小菜鸟 12月日更

【分布式技术专题】「分布式ID系列」百度开源的分布式高性能的唯一ID生成器UidGenerator

码界西柚

唯一ID 12月日更 UidGenerator 服务ID 百度技术

【Promise 源码学习】第十七篇 - async/await 简介

Brave

源码 Promise 12月日更

设计模式【5】-- 原型模式

秦怀杂货店

Java 编程 设计模式 原型模式

100+行业大牛,Qcon全球软件开发者大会参会记录

看点代码再上班

技术 互联网 软件开发 Qcon

Redis 实战:巧用 Bitmap 实现亿级数据统计

码哥字节

redis BitMap 签约计划第二季

1-7聚合架构第八讲:ADM被骂的冤吗?

钰湚—付晓岩

企业架构 业务架构 聚合架构

1-8聚合架构第九讲:我们聊聊4个A?

钰湚—付晓岩

企业架构 业务架构 聚合架构

Servlet的生命周期

JavaEdge

12月日更

MySql优化:MySQL体系结构及存储引擎总结

秋水

MySQL性能优化 内容合集 签约计划第二季

你只认识大众汽车的车标怎么能行?赶紧用python采集所有车标学习一下

梦想橡皮擦

12月日更

Redis 核心原理与实战总结系列

码哥字节

Redis 6.0 技术专题合集

10.《重学JAVA》--控制语句(二)

杨鹏Geek

Java 25 周年 28天写作 12月日更

MySql优化:详细解读InnoDB存储引擎

秋水

MySQL性能优化 内容合集 签约计划第二季 MySQL InnoDB

区块链,开启智慧养老新时代

CECBC

电商系统微服务架构设计

天天向上

架构实战营

我们需要一个React框架吗?

RingCentral铃盛

React 框架 分布式应用框架

🏆视差特效的原理和实现方法

德育处主任

JavaScript 前端 特效 前端特效 css特效

如何决定响应式网站的 CSS 单位?

海拥(haiyong.site)

响应式 大前端 28天写作 签约计划第二季 12月日更

模块二作业

Geek_e6f7f6

架构训练营

Maven进阶(四):Maven 常用命令

No Silver Bullet

maven 12月日更

给弟弟的信第9封|初入职场攻略

大菠萝

28天写作

SQL优化和索引

lixiaofeng

SQL优化 索引优化 内容合集 签约计划第二季

预付式消费不安全怎么办?区块链技术来了

CECBC

成年人除了工作以外,在社会上还要争取什么?

DaemonStone

管理 技术人生 职业发展 人生选择

Redis持久化策略——AOF

蝉沐风

redis 持久化 aof

Java代理设计模式(Proxy)的四种具体实现:静态代理和动态代理

汪子熙

Java 设计模式 代理模式 28天写作 12月日更

创业合伙人的选择和经营

wood

创业 合伙人 28天写作

模块六作业

doublechun

「架构实战营」

dart系列之:实时通讯,在浏览器中使用WebSockets

程序那些事

flutter dart HTTP 程序那些事 12月日更

聊聊SpringBoot中的两种占位符:@*@ 和 ${*}

xiaoxi666

maven springboot

Reinhold就Jigsaw投票一事向JCP提交公开信_Java_Charles Humble_InfoQ精选文章