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;