JDK爲什麼需要配置環境變量呢?(完美解答)

首先我們要清楚,我們編寫程序最終的結果是要在電腦上運行的,那我們不配置環境變量就不能運行程序嗎?
帶着這個問題,我們開始好好分析分析

1. 我們知道Java程序的執行離不開三樣東西:JDK、JRE、JVM

  • JDK:是Java程序開發工具包,包含JRE和開發者用的工具。 可以運行也可以開發Java程序
  • JRE:Java程序的運行環境,包含JVM標準實現和運行時所需的核心類庫。 可以運行Java
    程序
  • JVM:Java虛擬機,是運行所有Java程序的假想計算機,是Java程序的運行環境。 Java的虛擬機
    本身不具有跨平臺的性能,每個操作系統下有專屬的JVM。 所有編寫的Java程序都運行在JVM上,可將.class文件解釋
    爲機器碼(…\jdk\jre\bin\java.exe)

2.解釋完這三個重要的名詞之後,下面分析一下JDK的目錄結構

  • JDK中包含JRE,在JDK的安裝目錄下有一個名爲jre的目錄,裏面有兩個文件夾bin和lib,在這裏可以認爲bin裏的就是
    jvm,lib中則是jvm工作所需要的類庫,而jvm和 lib和起來就稱爲jre。

  • 疑問:JDK目錄下有bin、lib、jre文件夾,而其中的jre文件夾下又有bin、lib----有什麼不同?
    答:

    1. jdk是開發時環境,jre是運行時環境。就是編寫java文件用jdk,運行java文件用jre;
    2. jdk的bin下有各種java程序需要用到的命令,與jre的bin目錄最明顯的區別就是jdk下才有javac

    在這裏插入圖片描述
    在這裏插入圖片描述

  • 用下幅圖表示真的直觀明瞭
    在這裏插入圖片描述

3. 那Java程序的執行過程呢?

  • 我們從官網上可以得知,Java的運行過程是如下圖所示
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 由上圖可知,Java程序的運行是先將xxx.java文件(使用 javac 編譯指令)編譯成xxx.class文件(字節碼文件),在將字節碼文件(使用 java 執行指令)解釋成電腦所能認識的機器指令並運行的

4. 我們爲什麼要配置環境變量?

  • 首先說一下java相關的環境變量有哪些吧:path / CLASSPATH / JAVA_HOME

    path(環境變量):

    • path 是 dos 以前的內部命令,windows繼續沿用至今。用作運行某個命令的時候,本地查找不到某個命令或文件,會到這個聲明的目錄中去查找
    • 環境變量可以簡單的理解爲路徑導向。例如:Windows裏面的臨時文件夾存放的路徑導向。當要訪問此類文件時可根據此環境變量找到它的存放目錄。像下面講的在我們輸入Java命令如javac等的時候不用敲入它的路徑,系統自動根據環境變量設置找到其實際地址。
  • 配置PATH環境變量(必需):
    前面講到了 Java 程序的運行首先需要使用 javac 編譯指令 編譯成字節碼文件, 繼而使用 java 執行指令 解釋並運行字節碼文件,而 window 運行 java 編譯命令 javac 或者執行指令 java 的時候,本地查找不到某個命令或文件,就會到path中去查找。那這個 javac 我們知道是存在 JDK 目錄下面的 bin 目錄中的,因爲我們不可能在每個 java 文件所在目錄放置 JDK ,故把 JDK 放置 path 環境變量中,這樣每個 java 文件都可以通過 path 中設定的jdk目錄找到編譯命令進行編譯。

  • 配置CLASSPATH環境變量(必需):
    在java開發過程中我們會用到很多開發人員已經幫我們寫好的標準類庫,而我們要用這些類庫的話必須告訴計算機如何找到它們,CLASSPATH環境變量的作用就是指定類搜索路徑,JVM就是通過CLASSPTH來尋找類的,設置CLASSPATH環境變量即可使計算機找到它們。

  • 配置JAVA_HOME環境變量(不必需):
    JDK 是我們進行 java 開發必不可少的,在開發過程中我們通常會使用一些java開發過程中用到的軟件(如 eclipse、tomcat等)是通過JAVA_HOME來找到 JDK 的(環境變量JAVA_HOME的值就是 JDK 安裝的路徑),所以我們不配置JAVA_HOME的話那我們使用eclipse時可能要受到影響。

OK,感覺差不多已經解釋清楚了,如有不對的地方歡迎下面評論交流,如果覺得不錯,記得點個贊哦~~

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