JDK安裝目錄及其子目錄含義詳解

出處:https://blog.csdn.net/JUSTWOSHISHUI/article/details/84706788

 1、先簡單介紹下JDK和JER。

 

    1)JDK(Java Development Kit) 就是Java 程序開發的工具包,即Java的SDK。JDK 是整個Java的核心,包括了Java的開發環境和運行環境(Java Runtime Envirnment)以及一堆Java工具(tools.jar)和Java基礎的類庫(rt.jar) 等。

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

 

    3)區別與聯繫

 

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

      (2)聯繫:(參考以下Java源文件的編譯和執行過程)

            a)Java源文件經過Java編譯器(javac.exe)編譯以後形成JVM可運行的字節碼(.class)文件。

            b)運行Java解釋器(java.exe)即可將JVM上運行的目標代碼(字節碼,即.class文件)解釋成爲具體平臺的機器碼,也就可以運行該Java程序了。

            c)由b)可知,任何一臺機器只要配備了Java解釋器,就可以運行這個程序,而不管這種字節碼是在何種平臺上生成的。但要注意的是Java解釋器只是一個基於JVM平臺的程序,所以它不能單獨執行,必須依賴於JVM。

    

2、JDK安裝目錄及其子目錄分析(我的機器安裝的是JDK1.6,所以本文以JDK1.6版本的爲例)

 

    1)安裝完JDK後,我的機器中Java目錄下有jdk和jre兩個文件夾,如下圖所示。


   
 

    2)奇怪的是jdk下還有一個jre文件夾,而且兩個jre文件夾的內容看起來基本一樣,那這兩個jre文件夾又有什麼作用和區別呢?這個問題我們稍後再回答,現在我們先看下jdk1.6.0_16文件夾(部分)。


     
 

    由上圖可知,我的JDK根目錄爲:C:\Program Files\Java\jdk1.6.0_16(下面以jdk代替),現在我們介紹下相關目錄:

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

      --jdk\bin:jdk開發工具可執行文件目錄,裏面包含有javac.exe、java.exe等可執行程序。

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

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

      --jdk\demo:jdk自帶的一些例子,含有源代碼的程序示例。

      --jdk\include:c的頭文件,用與支持native-code庫使用jvm Debugger接口。

 

    3)再來看下jdk\jre\下的一些子目錄:

 

    jdk\jre\:Java運行環境存放目錄。

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

          --jdk\jre\bin\client:java client VM and DLL。

          --jdk\jre\bin\server:java servlet VM and DLL。

 

      --jdk\jre\lib: Java程序運行時環境使用的代碼庫、屬性設置和資源文件,主要包括:

            * rt.jar:系統引導庫(構成Java平臺核心API的RunTime 類)。

            * charsets.jar:字符轉換類及其它與國際化和本地化有關的類。

        --jdk\jre\lib\ext:Java平臺擴展類庫的缺省安裝目錄。例如JavaHelp jar 就可以放在此目錄下。

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

        --jdk\jre\lib\applet:對applet支持的一些資源文件。

        --jdk\jre\lib\fonts:TrueType 字體文件。

 

3、下面來解釋下爲什麼Java目錄中會存在兩個jre目錄以及三個lib目錄,他們的作用和區別又是什麼?

 

    1)兩個jre目錄,分別爲:

  • C:\Program Files\Java\jre6:可部署的JRE。
  • C:\Program Files\Java\jdk1.6.0_16\jre:jdk中自帶並使用的JRE。

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

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

 

    2)三個lib目錄,分別爲:

  • C:\Program Files\Java\jre6\lib:jre下的。
  • C:\Program Files\Java\jdk1.6.0_16\lib:jdk下的。
  • C:\Program Files\Java\jdk1.6.0_16\jre\lib:jdk\jre下的。

    a)jre下的lib:只是運行java程序的jar包,是爲JVM運行時候用的,包括所有的標準類庫和擴展類等。

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章