模块化概述
- Java语言随时间推移庞大,称为“臃肿”语言。无论是大软件还是小程序都要JVM加载整个JRE环境。
-
针对这种情况,Java9推出了模块化系统,Java被拆分为N多个模块,允许Java程序根据需要选择加载程序必须的Java模块
2021-02-10_200119.jpg
模块的基本使用
目标:在Test01
文件中调用Student
和Teacher
中的方法
2021-02-10_201715.jpg
- 在模块的src目录下新建
module-info.java
的描述性文件,该文件专门定义模块名,访问权限,模块依赖等信息 - 模块导出:
exports 包名;
模块所有为导出的包都是模块私有,模块外无法访问 - 模块依赖:
requires 模块名;
模块要访问其他模块内容,必须明确指定依赖哪个模块,否则无法访问
添加依赖报错,需要Alt+Enter添加
//MyOne下module-info.java
module MyOne {
exports com.itheima01;
exports com.itheima02;
}
//MyTwo下module-info.java
module ModuleOperator {
requires MyOne;
}
模块服务的使用
- Java6开始,服务使用者只面向接口编程,但不清楚服务提供者的实现类
- Java9模块化系统进一步简化服务机制
将服务接口定义在模块中,使用uses
来声明该服务接口
服务实现模块使用provides
为服务接口指定实现类
2021-02-10_203704.jpg
目标:让Test02可以使用
MyService
接口却看不到具体的实现类itheima
和NJUPT
//MyOne下module-info.java
import com.itheima03.MyService;
import com.itheima03.impl.itheima;
import com.itheima03.impl.NJUPT;
module MyOne {
exports com.itheima01;
exports com.itheima02;
exports com.itheima03;
provides MyService with itheima, NJUPT;
}
//MyTwo下module-info.java
import com.itheima03.MyService;
module ModuleOperator {
requires MyOne;
uses MyService;
}