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\tools.jar
。(在jdk1.5之后可以不用再配置Classpath)
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包子目錄。
參考鏈接:
https://blog.csdn.net/u011305680/article/details/80380532
https://blog.csdn.net/ni_hao_fan/article/details/95315193