史上!最最最簡潔明了的 Java JDK 安裝目錄及其子目錄含義 10分鐘詳解 – 精簡歸納

Java JDK 安裝目錄及其子目錄含義 10分鐘詳解 – 精簡歸納


JERRY_Z. ~ 2020 / 8 / 30
轉載請註明出處!❤️



一、JDK 安裝目錄及其子目錄結構圖

這裡以 JDK 1.8.0_231 版本為例
JDK 安裝在了:D:\Program\Java 目錄下

當 JDK 安裝完成後,在安裝目錄下除了 jdk 文件夾, 還會出現一個 jre 文件夾,而 jdk 文件夾內部也包含一個 jre 文件夾……,具體含義待會再說,先看一下 JDK 安裝目錄及其子目錄結構圖:


二、認識 JDK 與 JRE

(1)、啥是 JDK ?

JDK 即 Java SDK (全稱:Java 程式開發的工具包),JDK 是整個 Java 的核心,包括了 Java 的開發環境和運行環境,以及一堆 Java 工具 (tools.jar) 和 Java 基礎的類庫 (rt.jar) 等。

(2)、啥是 JRE ?

JRE 即 Java 運行環境,是運行 JAVA 程式所必須的環境的集合,包含 JVM (JAVA 虛擬機)標準實現、Java 核心類庫 (API) 及支援文件,但不包含開發工具(編譯器、調試器等)。

(3)、JDK 與 JRE 的關係

<1>、區別

JDK 是開發工具包,是用來開發 Java 程式的,也就自然是面對 Java 的程式開發人員,而 JRE 是只是運行環境,面向的是 Java 程式的使用者。也就是說,如果要使用 Java 開發程式,則必須安裝 JDK,但如果只是想運行 Java 程式,那隻需要安裝JRE 即可。

<2>、聯繫

參考以下Java源文件的編譯和執行過程

1、Java 源文件 (.java) 經過 Java 編譯器 (javac.exe) 編譯以後形成 JVM 可運行的位元組碼 (.class) 文件。

2、運行 Java 解釋器 (java.exe) 即可將 JVM 上運行的目標程式碼(位元組碼,即 .class 文件)解釋成為具體平台的機器碼(通常為:二進位碼),也就可以運行該 Java 程式了。

3、任何一台機器只要配備了 Java 解釋器,就可以運行這個程式,而不管這種位元組碼是在何種平台上生成的。但要注意的是 Java 解釋器只是一個基於 JVM 平台的程式,所以它不能單獨執行,必須依賴於JVM。

<3>、包含

由上圖可知:JDK 包含 JRE 包含 JVM
所以,安裝 JDK 就間接安裝 JRE 及 JVM 了


三、JDK 各個文件夾含義詳解

(1)、D:\Program\Java\jdk 目錄

<1>、D:\Program\Java\jdk

jdk 根目錄,包含版權、許可及 README 文件以及Java核心平台API的源文件歸檔 (src.zip)。

<2>、–jdk\bin

jdk開發工具可執行文件目錄,裡面包含有 javac.exe、java.exe 等可執行程式。

<3>、–jdk\lib

jdk 開發工具使用的類庫目錄,主要包括 tools.jar 和 dt.jar。

<4>、–jdk\jre

jdk 開發工具所使用的 Java 運行時環境的根目錄,除了文檔外,它與可部署的 jre 完全相同。

<5>、–jdk\include

c 的頭文件,用與支援 native-code 庫使用 jvm Debugger(虛擬機調試器)介面。

(2)、D:\Program\Java\jdk\jre 目錄

<1>、D:\Program\Java\jdk\jre

Java 運行環境存放目錄。

<2>、 –jdk\jre\bin

jre 執行文件及 DLL 庫,可執行文件與 jdk\bin 相同,不必將該目錄放在 PATH 環境變數中。

<3>、–jdk\jre\lib

Java 程式運行時環境使用的程式碼庫、屬性設置和資源文件,主要包括:

1、rt.jar

系統引導庫(構成Java平台核心API的RunTime 類)。

2、charsets.jar

字元轉換類及其它與國際化和本地化有關的類。

3、–jdk\jre\lib\ext

Java 平台擴展類庫的預設安裝目錄。例如 JavaHelp jar 就可以放在此目錄下。

4、–jdk\jre\lib\security

包含用於安全管理的文件。這些文件包括安全策略 (java.policy) 和安全屬性 (java.security) 文件。

5、–jdk\jre\lib\applet

對 applet 支援的一些資源文件。

6、–jdk\jre\lib\fonts

TrueType 字體文件。

(3)、為什麼 Java 目錄中會存在兩個 jre 目錄以及三個 lib 目錄,他們的作用和區別又是什麼?

<1>、兩個 jre 目錄

1、D:\Program\Java\jre

可部署的 JRE。

2、D:\Program\Java\jdk\jre

jdk 中自帶並使用的 JRE。

3、區別及聯繫

總體來說,兩個 JRE 文件夾的內容基本相同,區別主要體現在工作的職責上,也就是不同的 JRE 負責不同的工作範圍。

如果只是要執行 Java 程式,則只需要 Java 目錄下的 JRE 即可。如果要開發 Java 程式,則需要 JDK 中的 JRE。比如我們使用 javac.exe 來編譯 Java 程式時,系統會優先使用 jdk\bin 下的可執行文件,使用的運行環境也是 jdk 下的 jre。

<2>、三個 lib 目錄

D:\Program\Java\jre\lib:jre下的。
D:\Program\Java\jdk\lib:jdk下的。
D:\Program\Java\jdk\jre\lib:jdk\jre下的。

1、jre 下的 lib

只是運行 java 程式的 jar 包,是為 JVM 運行時候用的,包括所有的標準類庫和擴展類等。

2、jdk 下的 lib

包括 java 開發環境的 jar 包,是給 JDK 用的,例如 JDK 下有一些工具,可能要用該目錄中的文件,比如編譯器等。

3、jdk 下的 jre 下的 lib

是開發環境中,運行時需要的 jar 包。最典型的就是導入的外部驅動 jar 包,因為編譯時,系統找的是 jdk 下的 jre,而不是最外層的 jre。


四、附

交流方式:

❤️ ❤️ ❤️

QQ: 1846334075

WeChat: zhoujirui54

CSDN://blog.csdn.net/D_si_God

Cnblogs://www.cnblogs.com/JERRY-Z-J-R/

GitHub://github.com/JERRY-Z-J-R

Gitee://gitee.com/JERRY-Z-J-R

本文內容參考於 //blog.csdn.net/JUSTWOSHISHUI/article/details/84706788 在原文的基礎上,進行了重新直觀的排版,並加入了一些知識點和流程圖對相應結構與知識進行更直觀的解釋