一、引言
Java模块化系统(Java Platform Module System,简称JPMS)自Java 9版本开始引入,标志着Java语言在软件工程实践上的重大进步。JPMS的出现是为了应对随着Java生态不断壮大带来的挑战,如类路径混乱、全局命名空间冲突、不透明的依赖关系以及难以封装和隔离等问题。它的引入具有重要意义,体现在以下几个方面:
- 软件架构优化:JPMS允许开发者将大型系统拆分成更小、更独立且有明确定义边界的模块,各模块可以包含特定功能集并声明自身的公开接口,从而促进高内聚、低耦合的设计原则,提高系统的整体架构清晰度和可组织性。
- 提升可维护性:通过模块化,开发团队可以更好地控制模块间的依赖关系,减少因隐式依赖引发的错误,简化升级过程,同时也方便进行组件级别的测试和维护。
- 性能优化:JPMS引入了模块层面上的可见性和访问控制,这意味着不是所有模块中的类都会在启动时加载,而是仅加载那些满足模块间依赖关系的必要类,有助于减少内存占用和启动时间,理论上可以带来一定的性能提升。
本文的核心内容将围绕JPMS的三个核心组成部分展开:
- 模块声明:每个Java模块通过module-info.java文件进行声明,其中定义了模块的名称、导出的包、需要导入的其他模块以及其他模块化相关属性。模块声明是模块化系统的基础,它界定了模块的边界及对外交互规则。
- 依赖管理:JPMS提供了标准化的方式来管理模块间的依赖关系,确保了依赖的有序性和一致