在 Java 里,“模块(Module)”这个词在不同语境下含义不同。通常大家问“Java 模块有哪些类型”,主要指 Java 9 引入的模块系统(JPMS,Java Platform Module System)中的模块类型,也可能泛指 Java 生态中的“模块/组件类型”。下面分层次说明。
在 module-info.java 体系中,模块可以按来源和用途分为以下几类:
由 JDK 自身提供的模块,例如:
java.basejava.sqljava.xmljava.logging特点:
java.base查看方式:
java --list-modules
开发者自己写的业务模块,例如:
module com.example.order {
requires com.example.common;
exports com.example.order.api;
}
特点:
module-info.java当你把一个没有 module-info.java 的旧 Jar 包放到模块路径(--module-path)时,Java 会自动把它变成模块。
特点:
Automatic-Module-Name)示例:
--module-path lib/old-lib.jar
当类在 classpath(而不是 module path) 上运行时:
特点:
requires 其他模块本身不包含代码,只用来聚合其他模块:
module com.example.all {
requires com.example.order;
requires com.example.user;
}
常用于:
在 Maven / Gradle 多模块项目中,常见类型:
pom.xml 中 packaging=pomuser-service、common-utilspring-boot 应用jar 或 war| 类型 | 说明 |
|---|---|
| 普通模块 | 标准 JPMS 模块 |
| 自动模块 | 兼容旧 Jar |
| 未命名模块 | classpath 模式 |
| 平台模块 | JDK 内置 |
Java 模块类型主要包括:平台模块、应用模块、自动模块、未命名模块和聚合模块;在工程中也可分为父模块、子模块、公共模块等。
如果你是指 Spring 模块、Java EE 模块、或者 IDE 中的 module 概念,可以告诉我,我可以进一步细分讲解。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。