近日,Java平台集团首席架构师Mark Reinhold参加今年的Devoxx大会。在大会上,Mark Reinhold发表了他对Jigsaw和Java 9的看法,指出了人们以往对Java 9新版本认知的十大误解。
但是,如果你想自己处理这些依赖性API,最好的选择就是将这些API替换成维护的API。
误解四:类似于OSGi的模块在Java 9根本不能运行
这个理解是错误的。只要不使用内部API,OSGi这一类的模块仍然会按照预期方式使用类路径,Java 9并没有阻止使用第三方模块系统。
误解五:Java 9中类路径的代码不能使用某些模块导致Java社区分解
这种想法过于偏激了。类路径上的代码可以读取所有公共以及受保护类型的解析模块,这允许较大系统逐渐迁移。此外,一个可以被a.JAR文件运输的库或者框架可以被转化成一个模块。
误解六:强封装是Java 9被接受的唯一障碍
强封装绝对不是Java 9使用的唯一障碍,人们依赖的内部API现在已经被隐藏了,但是这个版本中还有很多不兼容的东西。Rt.jar已经被一种新的更可靠的格式取代,系统图像的布局也不同,一系列系统类有待提高安全性,这就意味着它们由类加载器加载,但是与引导类加载不同,版本字符串格式被改变了。
误解八:Jigsaw将修复多版本问题
这个计划好像还没有开始实行,虽然Java社区的一部分人都希望Java 9能够以允许方便快捷的加载给定名称的多个不同模块。相反,来自甲骨文的Alan Bateman建议应该从构建工具和容器入手,来解决同一模块的多版本问题。
误解九:Jigsaw无法修复多版本问题,压根不能用
关于多版本的解决有两个主要的含义:
1、 用类加载器以任何方式工作的API将以不兼容的方式发生变化。任何对类加载器关系做出假设的代码都不会像以前那样工作。
2、 构建工具需要重新优化支持多版本
Jigsaw团队正在努力的解决这些问题。
误解十:现有系统模块化很容易
JDK模块化花了9年的时间,任何大型系统都需要话费大量时间和资源才能从上一个版本转化到下一个版本,而且最终获得的成品可能还会不尽人意。在模块化现有系统之前,权衡成本和收益是必须要考虑的问题。如果你正在构建一个新的项目,那一定要使用模块化。