jdk中rt.jar的作用

rt代表“RunTime”。.jar是.exe,.java,类文件的包,以及软件程序所需的所有媒体资料,如图像,视频,音频。

rt.jar包包含引导类(bootstrap classes)——来自Core Java API的所有类。java.time.、java.util.、java.nio.、java.lang.、java.text.、java.sql.、java.math.*等等都在rt.jar包下。例如,需要从java.util.concurrentpackage引用类,比如 ConcurrentHashMap,JVM会从rt.jar中查找它,从而使程序能够正确运行。

当你编写程序时,你会用到很多系统类的变量,比如String类,System。它实际上是PrintWritter类的一个对象。所有这些java.*,javax.*,sun.*,org.*,jdk.*类都驻留在rt.jar中,JVM在运行时从rt.jar文件访问所有这些类。如果在类路径中没有包含rt.jar,则无法访问核心类exp,java.lang.String,java.lang.Thread,java.util.ArrayList和Java API中的所有其他类。

rt.jar包含了JVM信任的class文件,JVM加载时不会对其他class文件进行严格的安全检查。

这些API的源代码可以在$ JAVA_HOME / src.zip文件中找到。

由于rt.jar中的所有类都是JVM已知的,当JVM加载这些类时,会用单独的引导类加载器进行加载,避免许多基本安全检查,这样做主要是出于各种性能考虑。而对于其他的jar或class,类加载器会进行大量的安全审查。

我们在配置java环境变量时会配置JAVA_HOME、Path、Classpath,其中Classpath会配置.;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar。(在jdk1.5之后可以不用再配置Classpath)

rt.jar在%JAVA_HOME%jrelib,dt.jar和tools.jar在%JAVA_HOME%lib下。

  • rt.jar:Java基础类库,也就是Java doc里面看到的所有的类的class文件。
  • tools.jar:是系统用来编译一个类的时候用到的,即执行javac的时候用到。
  • dt.jar:dt.jar是关于运行环境的类库,主要是swing包。

最后我们再看下rt.jar包下的java包子目录。

参考链接:

https://blog.csdn.net/u011305680/article/details/80380532

https://blog.csdn.net/ni_hao_fan/article/details/95315193

原文地址:https://www.cnblogs.com/woaiheniunai/p/15456382.html