就在 Mark Reinhold 发表 关于 Java 9 模块系统状态的 最新主要博客文章前几小时,研究 OSGi 和云应用程序多年的作家兼演讲者 Paul Bakker 在 JavaZone 上发表了关于完全相同的演讲主题为 Reinhold。
除了一些小细节外,他在这次演讲中所说的一切仍然是准确的。这是他向我解释的关于 Java 9 模块化的关键主题:
Java 9 要做的最重要的事情是迫使开发人员考虑模块化。这很好,因为模块化是我们的目标。事实上,我们目前使用 OSGi 只是实现该目标的一个工具。同时,我们在 Java 9 计划的代码冻结前仅三个月就有了第一个公开原型,这是一个如此巨大的变化,这让我们有点害怕。
——保罗·贝克
2015 年 9 月 17 日更新,附加报价:
这里最具破坏性的事情可能是某些(不受支持的 API)在没有显式导出和破坏向后兼容性的情况下不再可用的第一件事。不过,第 9 个版本将具有向后兼容性标志。
——马库斯·拉格格伦
因此,如果您更喜欢包含 Reinhold 最近文章中讨论的大部分想法的视觉演示,请观看视频:
来自 Vimeo 的 会话描述:
随着模块化进入 Java 9 的核心 Java 平台,我们所有的模块化需求是否都得到满足,或者使用 OSGi 之类的东西是否仍然有意义?在本次演讲中,您将了解 Jigsaw 如何帮助实现模块化,以及在哪些情况下它可能不足。
Java 9 将提供一个模块系统,称为 Jigsaw。除了将 JDK 本身模块化之外,Java 开发人员还可以使用 Jigsaw 构建更多模块化的应用程序。不过,模块化和 Java 的历史要早得多。 OSGi 是 Java 中模块化的事实标准,自 2000 年以来一直存在。近年来采用率正在增加。
模块化架构有很多优点,例如增加解耦从而提高灵活性。从这个意义上说,非常欢迎对 Java 模块化的本地支持。现在最大的问题是:Java 9 是否提供了构建真正模块化应用程序所需的一切?由于 Java 9 需要保持向后兼容性,因此在强制执行模块边界时需要做出一些妥协。
本次演讲讨论构建模块化应用程序真正需要的内容。我们将调查两个模块系统满足(或不满足)哪些要求。您会看到 Jigsaw 和 OSGi 都提供了模块化拼图的一部分。此外,您还将了解在 Java 9 之上拥有额外的模块化运行时(例如 OSGi)是否仍然有意义。
保罗巴克
Paul 是 Luminis Technologies 的软件架构师,也是 O'Reilly 出版的“使用 OSGi 构建模块化云应用程序”一书的作者。他认为模块化和云是我们必须应对的两个主要挑战,以便将技术提升到一个新的水平,并且正在努力使主流软件开发成为可能。 Paul 是 Amdatu、Apache ACE 和 BndTools 等开源项目的积极贡献者。他有 Java 相关技术培训师的背景,并且经常在会议上发表演讲。
麦山德
Sander 在 Luminis Technologies 制作可扩展的软件。他在 JVM 平台上拥有近十年的经验,擅长模块化 Java 和 JavaScript 开发。此外,数据分析和机器学习是他不断增长的兴趣列表的一部分。 Sander 喜欢分享知识,例如通过他在
branchandbound.net
上的博客和为 Dutch Java Magazine 撰稿。他定期在国际开发者大会上发表演讲,分享他对 Java、替代 JVM 语言和相关技术的热情。