一、 模块化是什么?
Java 9引入了模块化系统,称为"Java Platform Module System"(JPMS)
这个系统允许将Java程序分成模块,每个模块都有自己的规范,可以明确地声明它依赖于哪些其他模块,并且只能访问被其所依赖的模块暴露的API。这样可以
模块化就是增加了更高级别的聚合,是Package的封装体。
Package是一些类路径名字的约定,而模块是一个或多个Package组成的封装体。
java9以前 :package => class/interface。
java9以后 :module => package => class/interface。
二、为什么需要模块化?
大家都知道JRE中有一个超级大的rt.jar(60多M),tools.jar也有几十兆,以前运行一个hello world也需要上百兆的环境。
变成了模块化的好处
- 提高程序的安全性和可维护性。
- 让Java SE程序更加容易轻量级部署。
- 强大的封装能力。
- 改进组件间的依赖管理,引入比jar粒度更大的Module。
- 改进性能和安全性。
三、JDK被拆为了哪些模块呢?
3.1 终端执行java --list-modules
查看
打开终端执行java --list-modules
查看。
E:\jdk11\bin>java --list-modules
java.base@11.0.9
java.compiler@11.0.9
java.datatransfer@11.0.9
java.desktop@11.0.9
java.instrument@11.0.9
java.logging@11.0.9
java.management@11.0.9
java.management.rmi@11.0.9
java.naming@11.0.9
java.net.http@11.0.9
java.prefs@11.0.9
java.rmi@11.0.9
java.scripting@11.0.9
java.se@11.0.9
java.security.jgss@11.0.9
java.security.sasl@11.0.9
java.smartcardio@11.0.9
java.sql@11.0.9
java.sql.rowset@11.0.9
java.transaction.xa@11.0.9
java.xml@11.0.9
java.xml.crypto@11.0.9
jdk.accessibility@11.0.9
jdk.aot@11.0.9
jdk.attach@11.0.9
jdk.charsets@11.0.9
jdk.compiler@11.0.9
jdk.crypto.cryptoki@11.0.9
jdk.crypto.ec@11.0.9
jdk.crypto.mscapi@11.0.9
jdk.dynalink@11.0.9
jdk.editpad@11.0.9
jdk.hotspot.agent@11.0.9
jdk.httpserver@11.0.9
jdk.internal.ed@11.0.9
jdk.internal.jvmstat@11.0.9
jdk.internal.le@11.0.9
jdk.internal.opt@11.0.9
jdk.internal.vm.ci@11.0.9
jdk.internal.vm.compiler@11.0.9
jdk.internal.vm.compiler.management@11.0.9
jdk.jartool@11.0.9
jdk.javadoc@11.0.9
jdk.jcmd@11.0.9
jdk.jconsole@11.0.9
jdk.jdeps@11.0.9
jdk.jdi@11.0.9
jdk.jdwp.agent@11.0.9
jdk.jfr@11.0.9
jdk.jlink@11.0.9
jdk.jshell@11.0.9
jdk.jsobject@11.0.9
jdk.jstatd@11.0.9
jdk.localedata@11.0.9
jdk.management@11.0.9
jdk.management.agent@11.0.9
jdk.management.jfr@11.0.9
jdk.naming.dns@11.0.9
jdk.naming.ldap@11.0.9
jdk.naming.rmi@11.0.9
jdk.net@11.0.9
jdk.pack@11.0.9
jdk.rmic@11.0.9
jdk.scripting.nashorn@11.0.9
jdk.scripting.nashorn.shell@11.0.9
jdk.sctp@11.0.9
jdk.security.auth@11.0.9
jdk.security.jgss@11.0.9
jdk.unsupported@11.0.9
jdk.unsupported.desktop@11.0.9
jdk.xml.dom@11.0.9
jdk.zipfs@11.0.9