最近看java.util.concurrent包的内容,发现java.time.、java.util.、java.nio.、java.lang.、java.text.、java.sql.、java.math.*等等都在rt.jar包下,才发现自己对平时经常用到的jdk的源码来源并不是很清晰。
我们在配置java环境变量时会配置JAVA_HOME、Path、Classpath,其中Classpath会配置
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
。当然,在jdk1.5之后可以不用再配置Classpath,笔者猜测应该是BootstrapClassloader已经默认了这个加载路径%JAVA_HOME%\lib
的原因,有具体研究过的期待一起交流。
我们主要看下rt.jar、dt.jar、tools.jar的作用,rt.jar在%JAVA_HOME%\jre\lib
,dt.jar和tools.jar在%JAVA_HOME%\lib
下。
- rt.jar:Java基础类库,也就是Java doc里面看到的所有的类的class文件。
- tools.jar:是系统用来编译一个类的时候用到的,即执行javac的时候用到。
- dt.jar:dt.jar是关于运行环境的类库,主要是swing包。
图片太占篇幅,最后我们再看下rt.jar包下的java包子目录。