jdk9-模块系统

150 阅读1分钟

Java 9 最大的变化之一是引入了模块系统(Jigsaw 项目)。

模块就是代码和数据的封装体。模块的代码被组织成多个包,每个包中包含Java类和接口;模块的数据则包括资源文件和其他静态信息。模块可以做到很细力度的访问隔离,提升了安全性。

模块规则描述

1.requires表示当前模块需要什么类

module com.san {
requires java.compiler;
#有时我们只在编译时需要一些模块,它们在运行时是可选的。例如,测试或代码生成库。这就需要用到静态导入了,和maven的<scope>compile</scope>类似
requires static java.compiler;
#引用 com.san 的模块也可以引用com.liq
requires  transitive com.liq ;
}

2.exports 导出包 这个模块哪些包可以被引用 类似vue的export

exports com.li ;
#指定  com.li 只能被com.zhang引用
exports com.li to com.zhang;

3.opens 暴露哪些包指定运行时可用 ,也就是开放哪些包可以反射

# 开放com.liq.invoker的反射
opens com.liq.invoker ;
# 只对  com.san 开放com.liq.invoker的反射
opens com.liq.invoker to com.san;

4.provides with 指定这个类的实现类

provides com.liq.service.LiService
            with com.liq.serviceImpl.LiIServiceImpl;

5.uses 表示这个模块要用到的另人申明的接口或是虚类。 uses只能从模块自己的包中或者requires、requires static以及requires transitive传递过来的接口或者抽象类。

uses com.liq.MyInferface;