java9的模块化

秒速五厘米 2023-01-22 09:59 88阅读 0赞

到现在了,都快java17了,可是对于java9的module对于正式生产的使用文章少之又少,由于可以分模块打包,在加上graalvm的native image,对于云原生发布支持很好,这里记录下笔记.

先使用jdeps —class-path [classpath路径] [xxx/xxx/xx(类名路径)] 查看依赖关系

如果有版本冲突 加上 —multi-release 11(jdk版本号)

是的,目前是需要把所有依赖加到module-info配置里,不知道是不是我姿势不对

module-info.java

open module { //使用open关键字,可以用于spring对自己的项目的类进行反射

requires spring.boot;

exports com.xx.xxxx;

}

关键字:

requires

exports

open

use 服务使用

provide 服务提供

with

to

transitive 隐式传递依赖

static 编译强制,运行可选

模块类型:

普通模块(Normal Modules)
开放模块(Open Modules)
自动模块(Automatic Modules)
未命名模块(Unnameed Modules)

扩展:

Java 9的最新版本允许库开发人员使用JAR文件清单META-INF/MANIFEST.MF文件属性’Automatic-Module-Name’来指定其自动模块名称

比如Automatic-Module-Name: spring.boot

java9开始提供多版本jar,可以根据当前环境jdk版本自动选择合适的jar,通过ServiceLoader.load方法在META-INF/services目录指定的实现类

模块化jar文件

打包jmod文件

jlink:精简,只打包需要的api

发表评论

表情:
评论列表 (有 0 条评论,88人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java9模块

    到现在了,都快java17了,可是对于java9的module对于正式生产的使用文章少之又少,由于可以分模块打包,在加上graalvm的native image,对于云原生发布

    相关 java9模块编程示例

        这里是把在慕课网上看到的《Java9之模块系统》课程代码学习了一遍,加深了一些对模块化的理解,但是还是不太懂如今这种模块化思想,其实在java里面有了maven管理依赖

    相关 java9-模块介绍

    java9的模块化类似于nodejs,如果大家学过,可能更好理解模块化的概念。Oracle为什么要给java加入模块化,主要有以下几个问题: 整个jre环境太大了,运行