为什么要引入java模块化系统
- Java 运行环境的膨胀和臃肿。 每次 JVM 启动的时候,至少会有 30 ~ 60MB 的内存加载,主要原因是 JVM 需要加载 rt.jar ,不管其中的类是否被 classloader 加载,第 一步整个 jar 都会被 JVM 加载到内存当中去(而模块化可以根据模块的需要加载程序运行需要的 class )。
- 当代码库越来越大,创建复杂,这些都阻碍了 Java 开发和运行效率的提升。
- 很难真正地对代码进行封装 , 而系统并没有对不同部分(也就是 JAR 文件)之间的依赖关系有个明确的概念。 每一个公共类都可以被类路径之下任何其它的公共类所访问到,这样就会导致无意中使用了并不想被公开访问的 API 。
- 本质上讲 也就是说,用模块来管理各个 package ,通过声明某个 package暴露,模块 (module) 的概念,其实就是 package 外再裹一层,不声明默认就是隐藏。因此,模块化使得代码组织上 更安全 ,因为它可以 指定哪些部分可以暴露,哪些部分隐藏。
模块化系统实现的目标
- 模块化的主要目的在于减少内存的开销;
- 只须必要模块,而非全部 jdk 模块,可简化各种类库和大型应用的开发和维护;
- 改进 Java SE 平台,使其可以适应不同大小的计算设备
- 改进其安全性,可维护性,提高性能
模块化系统实现案例
- 首先,电脑是已经安装好jdk9或以上版本。
- 在工程目录下创建模块,这里以创建两个模块为例
- 修改模块配置信息
- 在每一个模块的顶级文件目录下创建module-info.java文件(这里实在java文件目录下,具体看情况)
- 创建测试文件
可以看到,现在的测试类是报错的
- 配置module-info.java文件
- 测试
如果me哦什么问题的话,打印如下
如果出现如下错误
查看下列文件并修改