2018年7月

Java9新特性——模块化

Java9引入了模块化的特性,利用这个特性可以创建小型的JRE来发布应用程序,减少JRE体积,提高资源利用率

将应用打包成模块

  1. 在源码根路径新建module-info.java来配置模块信息

    module 模块名(用于其它应用导入,以及运行环境打包) {
        //requires声明依赖模块
        requires java.base;
        //transitive关键字将依赖的模块传递出去,导入当前模块的时,无需再次导入即可以使用这个依赖的模块
        requires transitive java.desktop;
        //exports声明导出的模块,即外部工程导入本模块之后,可见的包名,其他包名将对外隐藏
        exports top.dreagonmon.app.test;
    }
  2. 编译源码,生成字节码.class文件(生成的字节码中有module-info.class文件)
  3. 将字节码打包成jmod模块包

    jmod create --class-path <字节码所在的路径> <输出的jmod文件路径>
  4. 根据jmod生成运行环境

    jlink --output <输出目录名> --add-modules <应用模块名> --module-path <jmod文件所在的路径>

    可以不包含java自带模块的路径,正确配置的JAVA环境会自动发现这些模块

  5. 运行应用的主类

    cd <输出目录>/bin/java 主类类名(一定要将主类导出,才可以从外部执行)