一、Java模块化概述
1.1历史开发模式
JDK 8及以前开发模式
- Java源代码以Java文件(类/接口/注解等)的形式编写
- 每个Java文件被明确地放入到一个包中
- Java文件编译后的class文件,可以压缩为jar包,供别的程序调用
- 一个程序可以使用类库,类库通常以jar包呈现
- 将所有程序jar包,类库jar包,都放在classpath上,来运行程序
- -以Jar为中心
问题
- jar文件无法控制别人访问其内部的public的类
- 无法控制不同jar包中,相同的类名(包名+类名)
- Java运行时,无法判定classpath路径上的jar中有多少个不同版本的文件。Java加载第一个符合名字的类
- Java运行时,无法预判classpath路径上是否缺失了一些关键类
1.2模块化
Java模块化是Java 9引入的一种新的编程范式,它可以让我们将代码组织成更高层次的单元,提高代码的可重用性、可维护性和安全性。Java模块化的核心概念是模块(module),它是一组相关的包和资源,以及一个描述模块属性的文件(module-info.java)。模块可以声明它们所依赖的其他模块,以及它们所导出的包,从而实现对内部实现的封装和对外部接口的公开。模块还可以提供和使用服务,实现松耦合的设计。Java模块化系统还提供了一些工具和命令,让我们可以方便地创建、管理和运行模块化应用程序。
模块化原则
- -强封装性:一个模块必须能够对其他模块隐藏其部分代码。
- -定义良好的接口:模块必须向其他模块公开定义良好且稳定的接口。
- -显式依赖:明确一个模块需要哪些模块的支持才能完成工作。