JDK8与JDK13关于rt.jar的区别
在JDK8中,rt.jar有64MB,tools.jar有17MB。
$ cd /Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home
$ ls
COPYRIGHT LICENSE README.html bin include javafx-src.zip jre lib man release src.zip
$ ls -lh ./jre/lib/rt.jar
-rw-r--r-- 1 root wheel 64M 10 5 18:39 ./jre/lib/rt.jar
$ ls -lh ./lib/tools.jar
-rw-r--r-- 1 root wheel 17M 10 5 18:40 ./lib/tools.jar
$ ls -lh lib/dt.jar
-rw-r--r-- 1 root wheel 159K 10 5 18:40 lib/dt.jar
JDK中的lib\tools.jar和JRE中的lib\rt.jar已从Java SE 9中删除。这些JAR中可用的类和资源现在以文件中的内部格式存储在lib目录的命名模块中。 可以使用称为jrt的新方案来从运行时映像检索这些类和资源。 依靠这些JAR位置的应用程序将不再工作。可参考:
- Java Platform, Standard Edition Oracle JDK 9 Migration Guide一文中的"Removed rt.jar and tools.jar"
- Quora: Why is rt.jar missing from JDK 9?
- JEP 261: Module System
JDK 13的目录如下,可以看出在jmods目录下有70个以jmod为后缀的文件。
$ cd /Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home
$ ls
bin conf include jmods legal lib man release
$ ls -lh jmods
16M java.base.jmod
111K java.compiler.jmod
50K java.datatransfer.jmod
12M java.desktop.jmod
33K java.instrument.jmod
111K java.logging.jmod
868K java.management.jmod
88K java.management.rmi.jmod
445K java.naming.jmod
695K java.net.http.jmod
74K java.prefs.jmod
365K java.rmi.jmod
43K java.scripting.jmod
2.1K java.se.jmod
599K java.security.jgss.jmod
80K java.security.sasl.jmod
52K java.smartcardio.jmod
74K java.sql.jmod
186K java.sql.rowset.jmod
3.9K java.transaction.xa.jmod
651K java.xml.crypto.jmod
4.3M java.xml.jmod
53K jdk.accessibility.jmod
279K jdk.aot.jmod
27K jdk.attach.jmod
1.8M jdk.charsets.jmod
8.3M jdk.compiler.jmod
337K jdk.crypto.cryptoki.jmod
147K jdk.crypto.ec.jmod
160K jdk.dynalink.jmod
6.9K jdk.editpad.jmod
2.3M jdk.hotspot.agent.jmod
99K jdk.httpserver.jmod
7.4K jdk.internal.ed.jmod
88K jdk.internal.jvmstat.jmod
348K jdk.internal.le.jmod
80K jdk.internal.opt.jmod
440K jdk.internal.vm.ci.jmod
6.0M jdk.internal.vm.compiler.jmod
13K jdk.internal.vm.compiler.management.jmod
207K jdk.jartool.jmod
1.3M jdk.javadoc.jmod
144K jdk.jcmd.jmod
459K jdk.jconsole.jmod
720K jdk.jdeps.jmod
824K jdk.jdi.jmod
108K jdk.jdwp.agent.jmod
458K jdk.jfr.jmod
392K jdk.jlink.jmod
647K jdk.jshell.jmod
5.3K jdk.jsobject.jmod
32K jdk.jstatd.jmod
9.3M jdk.localedata.jmod
70K jdk.management.agent.jmod
34K jdk.management.jfr.jmod
58K jdk.management.jmod
57K jdk.naming.dns.jmod
18K jdk.naming.rmi.jmod
23K jdk.net.jmod
107K jdk.pack.jmod
521K jdk.rmic.jmod
2.1M jdk.scripting.nashorn.jmod
54K jdk.scripting.nashorn.shell.jmod
23K jdk.sctp.jmod
63K jdk.security.auth.jmod
24K jdk.security.jgss.jmod
14K jdk.unsupported.desktop.jmod
16K jdk.unsupported.jmod
41K jdk.xml.dom.jmod
93K jdk.zipfs.jmod
使用jmod命令解压后,结构如下:
> jmod extract --dir javabase java.base.jmod
> ls javabase
bin classes conf include legal lib man