博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle的Java模块化系统保卫战
阅读量:5919 次
发布时间:2019-06-19

本文共 2806 字,大约阅读时间需要 9 分钟。

2017年企业新兴技术(ETE)大会上最为及时的演讲之一要算由Oracle JVM负责人Karen Kinnear呈献的“”。在她演讲之前的这段时间发生了很多事情,其中最为引人瞩目的就是5月8号针对JSR 376的投票事件。

\\

Kinnear介绍了Java 9的目标,包括提升开发者效率和改进Java云API。在对进行了一番评述之后,她开始专注于(JPMS)的话题。JPMS也就是或。

\\

Kinnear向参会人员问了三个有关模块化的问题。

\\
  • 模块遗漏问题。 \\t
    • 模块系统在构建模块图时会检测遗漏的模块。\\t
    \\t
  • 冲突问题。 \\t
    • 在构建模块图时包的冲突问题也会被检测到。\\t
    \\t
  • 变更内部API是否安全? \\t
    • 模块系统可以确保无法从模块外部访问内部的API。\\t
    \

Kinnear说,模块可以被集成到已有的应用程序里,她还演示了包与模块之间如何进行交互,解释了模块路径和类路径之间的区别。她还向开发者介绍了如何迁移到Java 9,特别是如何在迁移过程中保持向后兼容。

\\

Oracle Java平台组的首席架构师在2016年3月份的中描述了JPMS的目标。

\\
  • 可靠的配置 \\t
    • 使用声明式的程序组件依赖机制代替脆弱且容易出错的类路径机制。\\t
    \\t
  • 强封装 \\t
    • 组件可以声明自己的哪些公共类型是可以被其他组件访问哪些是不能被访问的。\\t
    \

社区的反应

\\

Red Hat的JBoss架构副主席表达了他对JPMS存在的一些,Red Hat认为这些问题是影响JPMS无法达成JSR提交目标的主要因素。Stark说:

\\
\

Jigsaw是一个全新的模块化系统,它可以很好地应用在Java上,但并没有在生产环境里那些基于JVM的真实应用上大规模尝试应用JPMS。很多应用程序可能无法使用Jigsaw,或者需要进行重大的重构才可以。

\
\\

IBM和Red Hat公开表示他们。

\\

尽管没有达成一致意见,Reinhold仍然,并声明“这对于广大的Java生态圈来说是最有益的,我们因此可以达成切实的目标”。在投票当天,他还向执行委员会(EC)提交了一封,呼吁他们能够为JSR 376投赞成票。不过,最终JSR 376仍然投票。

\\

投票之后

\\

Twitter的JVM和GC工程师解释了。

\\
\

我们的主要疑问在于,JPMS有可能会颠覆开发者,但却未能给他们带来直接的好处。我们担心因此会阻碍这项技术的大规模采用。我们希望JPMS能够对最初的目标做更全面的调整,从而真正地解决开发者的痛点。比如,非公开包名称冲突就与当前JSR“不互相干扰”和“强封装”的目标不一致。而如果模块能够更加彻底地分离,那么就可以通过把包隐藏在模块内部来支持相同包的多个复本同时存在。如此直观的好处简化了开发人员模块化代码的工作,也因此能够加速JPMS的采用速度。

\
\\

在与InfoWorld的一次中,Reinhold尝试着澄清人们对JPMS的误解。关于人们反对无法在Java中使用Maven这一问题上,Reinhold说,这不是真的,“Maven可以在Java 9里使用”。不过他承认,Maven的插件可能无法正常运行,包括。

\\

Reinhold确认了开发者最喜欢的一些库、框架和工具可能无法在Java 9中使用,这是因为当下的一些因素造成的,不过他说在正式发布时可能可以解决这些问题。他指出,这些项目的维护者已经在使用Java 9抢先版,所以他们会为这些项目做好支持Java 9的准备。这也就是为什么一些项目已经可以使用Java 9,如和。

\\

很多开发团队认为,在他们将所有代码、框架和库模块化之前就不能使用Java 9。Reinhold说这也是不对的。

\\
\

开发人员可以在Java 9里继续使用类路径,不过因为Java 9有了模块机制,所以开发人员就不再需要类路径了。

\
\\

伦敦Java社区共同创始人及jClarity CEO 与了他对JSR 376投票的看法。在谈到JVM模块化的好处时,他说:

\\
\

它为Java代码提供了更多的安全性;它隐藏了很多内部API或者不应该暴露给开发人员的API;不过需要为那些被隐藏的功能提供安全的替代方案。Java的运行时将变得更小,因为运行时被拆分成更小的模块。Java 9将提供工具,用于将应用程序部署在更小的运行时上,只安装必要的组件。服务器端的应用程序就不需要把客户端的GUI(如AWT何Swing)也包含在内。这样,Java可以启动得更快,可以在更小的设备上运行应用,在云端的部署也会更快。

\
\\

IBM的高级技术研究员最近表达了他对如何的看法。他说:

\\
\

我们希望看到修订过的规范重新呈现给JCP执行委员会,也希望执行委员会能够支持专家组的结论。IBM关心的是企业应用在迁移到Java 9时的兼容性问题。升级到Java 9对迁移有重大的影响,而JPMS的默认行为在这方面会提供很大的帮助。

\\

JSR 376即将进入到终稿阶段。在定稿之前可能还有一些小幅度的改动,不过整个过程充分展示了JCP致力于为Java提供更加强大的语言特性。感谢Oracle一直在主导这个规范,以及专家组在这个里程碑上所投入的大量精力。

\
\\

Reinhold最近针对Java 9的GA版本发布日期提出了一个新的。他说:

\\
\

为了迎接各种可能的结果,我建议保持6月22号的JDK 9初始候选版本发布日期不变,不过将GA版本的发布日期向后延期,为通过JCP流程争取更多的时间。我提议将GA版本的发布日期向后延期8周,从7月27号调整为9月21号。

\
\\

JSR 376的下一个投票日期是周一,也就是2017年6月26号。

\\

参考资料

\\
  •  (November 13, 2015)\\t
  •  by InfoQ (September 22, 2016)\\t
  •  by InfoQ (October 4, 2016)\\t
  •  by Scott Stark (April 14, 2017)\\t
  •  by InfoQ (May 1, 2017)\\t
  • by InfoQ (May 4, 2017)\\t
  •  by Tony Printezis (May 10, 2017)\\t
  •  by Paul Krill (May 17, 2017)\\t
  •  by InfoQ (May 19, 2017)\\t
  •  by Tim Ellison (May 26, 2017)\\t
  •  by Mark Reinhold (May 30, 2017)\

编辑后记

\\

Michael Redlich是ETE的积极参与者,他从2008年开始作为ETE的参会者和演讲者,2013年成为ETE指导委员会的成员。

\\

查看英文原文

转载地址:http://pjbvx.baihongyu.com/

你可能感兴趣的文章
取证学习资料DVD
查看>>
高性能优化Web前端
查看>>
Sublime Text 格式化代码快捷键
查看>>
疯狂的 Web 应用开源项目
查看>>
程序员全国不同地区,微信(面试 招聘)群。
查看>>
【干货】界面控件DevExtreme视频教程大汇总!
查看>>
用户管理脚本之删除用户——Delete_user.sh
查看>>
前端重构实践(二) —— 模块化开发
查看>>
ssh 与 locale
查看>>
将Flash 嵌入WPF 程序
查看>>
《自己动手做交互系统》——2.3 制作过程
查看>>
闭包 !if(){}.call()
查看>>
关闭CentOS6启动进度条,显示详细自检信息
查看>>
垂直居中的几种实现方法
查看>>
CSS定位
查看>>
我的友情链接
查看>>
python MySQLdb安装和使用
查看>>
总结thinkphp快捷查询getBy、getField、getFieldBy用法及场景
查看>>
无线路由器使用交换机模式上网不稳定
查看>>
poj 1789 Truck History
查看>>