您如何看待模块化生态系统?
Stephen Colebourne: Java平台模块系统(JPMS)并不完美,但是已经达到了值得发布的地步。 大多数开发人员可以继续使用类路径,并且不受模块更改的影响。 狡猾的反思实践将是主要问题,必须解决一些库升级问题。 我很高兴看到模块系统的工作即将结束,因为我个人认为还有其他一些大型语言挑战被推迟了太长时间。
JAXenter:这项主要的新功能早就该发布了,但是现在终于要实现了,它将如何影响现有和新的代码库?
Stephen Colebourne:在这两种情况下,除非他们的依赖关系至少部分模块化,否则开发人员几乎无能为力。 虽然自动模块理论上允许立即使用模块系统,但实际上最好等到依赖项模块化为止。 对于新的代码库,重要的是要制定模块化计划。 将代码结构化为Maven风格的项目,并确保两个模块中都没有软件包。 这将为以后添加module-info.java文件的方式做准备。
将Jigsaw应用于成熟的代码库可能会非常困难。
您觉得哪些功能特别有挑战性?
Stephen Colebourne:将Jigsaw应用于成熟的代码库可能会非常困难。 这可能极富挑战性,以至于不值得去做。 从长远来看,模块是一个很大的功能。
JAXenter:您能否举一些例子说明模块如何改善Java 9体验?
Stephen Colebourne:如果您可以使用将代码模块化和所有依赖项模块化的系统,那么您的代码将在稳定性和封装性方面迈出一大步。 20年后,JVM将真正了解jar文件(模块)的边界并尊重/强制执行。 这是一种“强硬的爱”,但会带来更好的解决方案。
你最喜欢哪个?
Stephen Colebourne:接口上的私有方法。 向接口添加静态和默认方法的能力确实改变了我设计API的方式。 拥有私有方法将进一步帮助您。 但是,我确实鼓励人们现在总是在接口上编写“ public static”,“ public abstract”或“ public default”以提高清晰度。
在尝试Java 9时,您个人遇到了哪些问题?如何解决该问题?
史蒂芬·科尔本(Stephen Colebourne):我尝试了一些非常早期的版本,但很多都不起作用。 我最近没有遇到任何重大问题。
拼图呢?
Stephen Colebourne:大多数现有的Java代码将继续在Java 9上运行。类路径仍然存在。 模块是可选的。 而且我认为,大多数应用程序开发人员应该忽略模块系统,直到它们的依赖关系至少已部分模块化为止。 因此,关键的误解是一切都会突然失败,而实际上这不会比许多其他Java版本升级差很多。
为什么开发人员应该选择JBoss Modules和OSGi的Jigsaw?
Stephen Colebourne: Java平台模块系统与OSGi并没有太多的共同点。 OSGi模块系统最适合用于动态模块,即。 一个生态系统,在JVM的生存期内,模块可以出现和消失。 它还可以处理复杂的情况,例如同时在内存中存储同一个jar的两个版本。 大多数系统不需要这些复杂性,并且平台模块系统不会走那么远是一个好习惯。 我没有使用过JBoss模块,所以我无法发表评论。
关键的误解(关于Java 9)是,一切都会突然失败,而事实上这并不会比许多其他Java版本升级差很多。
JAXenter:您想在Java 10中看到什么?
Stephen Colebourne:我希望Java 10的发布速度比Java 9快得多。因此,我希望它包含的更改更少。 我期待在将来的版本(不是Java 10)中开发的数据类扩展到开发人员今天使用POJO / bean的用例。 对于Java来说,这将是一个巨大的有益变化。
JAXenter:与会者将从您的
Stephen Colebourne:我的Java SE 9 Modules演讲解释了Module系统的设计,以及如何在指出陷阱的同时对自己的代码进行模块化。 我总是发现,“陷阱”是最有趣的部分,对于与会者来说也是最有用的。
Stephen Colebourne将在伦敦JAX上发表一个演讲,该演讲的重点是Java平台模块系统的基础及其含义,特别是对反思的影响。
要了解有关Java 9和模块化的更多信息,请下载最新一期的《 JAX Magazine》:
当您听到Java一词时,您会想到什么? 区块链,DevOps和微服务怎么样? 如果您想了解新兴技术或更深入地研究您已经熟悉的主题(我正在向您介绍Java 9),那么有什么比直接参考源代码更好的方法呢?
打开杂志,让专家(全部14个人)为您提供信息。
翻译自: https://jaxenter.com/java-9-jigsaw-interview-colebourne-136795.html