为什么要引入java模块化系统

  1. Java 运行环境的膨胀和臃肿。 每次 JVM 启动的时候,至少会有 30 ~ 60MB 的内存加载,主要原因是 JVM 需要加载 rt.jar ,不管其中的类是否被 classloader 加载,第 一步整个 jar 都会被 JVM 加载到内存当中去(而模块化可以根据模块的需要加载程序运行需要的 class )。
  2. 当代码库越来越大,创建复杂,这些都阻碍了 Java 开发和运行效率的提升。
  3. 很难真正地对代码进行封装 , 而系统并没有对不同部分(也就是 JAR 文件)之间的依赖关系有个明确的概念。 每一个公共类都可以被类路径之下任何其它的公共类所访问到,这样就会导致无意中使用了并不想被公开访问的 API 。
  4. 本质上讲 也就是说,用模块来管理各个 package ,通过声明某个 package暴露,模块 (module) 的概念,其实就是 package 外再裹一层,不声明默认就是隐藏。因此,模块化使得代码组织上 更安全 ,因为它可以 指定哪些部分可以暴露,哪些部分隐藏。

模块化系统实现的目标

  1. 模块化的主要目的在于减少内存的开销;
  2. 只须必要模块,而非全部 jdk 模块,可简化各种类库和大型应用的开发和维护;
  3. 改进 Java SE 平台,使其可以适应不同大小的计算设备
  4. 改进其安全性,可维护性,提高性能

模块化系统实现案例

  • 首先,电脑是已经安装好jdk9或以上版本。
  • 在工程目录下创建模块,这里以创建两个模块为例
       

Java common模块 java 模块 包_Java common模块

  • 修改模块配置信息
       

Java common模块 java 模块 包_Java common模块_02

       

Java common模块 java 模块 包_java9 模块化系统_03

  • 在每一个模块的顶级文件目录下创建module-info.java文件(这里实在java文件目录下,具体看情况)
       

Java common模块 java 模块 包_Java common模块_04

       

Java common模块 java 模块 包_java9 模块化系统_05

  • 创建测试文件

Java common模块 java 模块 包_module-info.java_06

可以看到,现在的测试类是报错的

  • 配置module-info.java文件
       

Java common模块 java 模块 包_Compilation failed_07

  • 测试

       如果me哦什么问题的话,打印如下

       

Java common模块 java 模块 包_java9 模块化系统_08

     如果出现如下错误

      

Java common模块 java 模块 包_java9 模块化系统_09

      查看下列文件并修改

       

Java common模块 java 模块 包_java9 模块化系统_10