1. 程式人生 > 程式設計 >3、深入分析JDK的安裝與配置

3、深入分析JDK的安裝與配置

3、深入分析JDK的安裝與配置配置

我們在前兩篇文章中分別向大家通俗易懂的介紹了什麼是Java,以及有關Java的一些趣事,相信你已經迫不及待的想要正式學習Java了,畢竟之前的介紹只是一些概念,並沒有真的去接觸Java,比如如何執行一個Java程式。

那麼,如何執行一個Java程式呢?我們先來看一個例子:

PS:作為一個Java程式設計師,你一定要在初學的時候牢牢記住以下這段程式碼。

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!"
); } } 複製程式碼

這是非常經典的一段程式碼,意味著你即將開啟Java的程式碼,進入使用Java編織的程式碼世界,所以這段程式碼一定要記住,我記得我在剛開始學習Java的時候,網上認識一個做程式設計師的,我跟他說我學過Java,他有點不信,我就把這段程式碼敲給他了,他立馬說“還真的學過Java啊”,看吧,知道這段程式碼的作用了吧。

因為你剛接觸Java,你也許並不明白上面這段程式碼啥意思以及為啥要這樣寫,沒事,這個現在不重要,這個到以後我們會詳細的講解的。

例項操作執行HelloWorld

接下來我將使用最原始的方式給大家執行這段程式碼:

首先,我在桌面上新建一個txt檔案,然後把這段程式碼複製進去,接著我將檔案的副檔名從txt改成java(這是Java檔案的副檔名),也就是這個樣子:

對了,這裡一定要記住,檔案的名字要命名成HelloWorld,你暫時不用管為什麼,解析來我們按住win+r開啟Windows的執行視窗,然後在裡面輸入cmd開啟我們的命令列視窗,也就是這個樣子:

開啟命令列視窗之後,我們在命令列輸入cd desktop也就是進入到我們的桌面路徑。這個時候我們要知道,我們剛才已經把寫好的Java檔案(也就是HelloWorld.java)放到桌面上了,接下來我們開始使用如下的命令去編譯這個檔案:

javac HelloWorld.java
複製程式碼

大家要注意上圖中的操作,那些不仔細看的同學不要再問,cd desktop怎麼操作的啊,圖上已經很清楚了哦。

這個時候你會發現,當我們執行完上述命令之後,在檔案的下方隨之會產生一個HelloWorld.class

的檔案。

這個檔案叫做Java位元組碼檔案,也就是我們使用javac這個命令將HelloWorld.java編譯之後生成的檔案,你目前先知道這些就行,那麼我們接下來繼續操作,使用如下命令:

java HelloWorld
複製程式碼

這個時候我們注意看,當執行完這個命令之後,底下隨之產生了一個Hello World!的字樣,這是啥,我們再回過頭來看看這段經典程式碼:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!"); 
    }
}
複製程式碼

我們是不是看到這麼一句程式碼了:

System.out.println("Hello World!");
複製程式碼

意思可能你也猜到了,這就是在螢幕上打印出Hello World!

以上我們就簡單的演示了一下如何執行一個java程式,可能這裡有跟著我的步驟操作的同學,但是你會發現,你的不行,你的操作早就出錯了,這是為什麼呢?

為什麼我的就不行?

行了,別疑惑啦,我來告訴你怎麼回事吧,你在操作的時候,當你在命令列輸入:javac HelloWorld.java的時候,是不是出現了以下的錯誤:

這是為啥啊?什麼不是內部或外部命令,其實啊,這個簡單點說就是找不到這個javac這個命令,也是啊,你現在直接就在自己的電腦上去編譯java程式,那怎麼行,我們想要聽歌,也要下載個聽歌軟體呢,所以啊,你這裡是缺少執行java的一些東西了,比如這個javac命令,它其實是一個可執行程式,我們Windows上的可執行程式一般就是exe結尾的,所以這幾個javac其實就是javac.exe

看看,你電腦裡是不是沒有它?那怎麼辦?不著急,我們接下來就進行java執行環境的的搭建,也就是常規的jdk的安裝與配置。

正式開始搭建java開發環境(jdk安裝與配置)

想當年我在學java的時候,安裝這個jdk,配置環境變數啥的,足足花了我一個周啊,其實現在也有很多人說,搭建環境什麼的是最麻煩,而且容易出錯的,我當時就覺得java環境變數配置這塊真難,搞得我雲裡霧裡的。

你可能會說,有問題找百度啊,百度上關於jdk安裝與環境變數配置的有很多教程啊,是的,我當初也是跟著網上教程搭建的,很多就是一上來就教你如何下載,然後怎麼配置,就是一頓猛如虎的操作,然後就完了,那些給你講為啥這樣做的很少,導致自己當時理解的並不是很透徹,所以經常出現小錯誤。

所以,在今天的次這講解中,我不僅教你怎麼操作,很多比較重要的點我也會告訴你為啥這樣做,也就是不僅知其然,還要知其所以然!

jdk和jre是個啥

那麼jdk和jre到底是個啥呢?首先你需要知道的是這倆貨其實都是縮寫,什麼縮寫呢?如下:

JRE: Java Runtime Environment JDK:Java Development Kit

就是這了,JDK就是Java Development Kit,也就是java開發者工具的意思,也就是你如果需要編寫一些java程式的話,是需要這個jdk中提供的一些工具的,比如我們上面說的javac命令和java命令,那就是jdk提供的開發工具,所以說啊,如果你要開發java的話,就一定要安裝JDK了。

那啥又是jre呢?jre的全名是Java Runtime Environment,意思也就是java執行時環境,這個也好理解,就是說,你雖然可以使用jdk提供的工具去開發java程式,但是如果你要是想要在你的電腦上去執行java程式的話,那就需要安裝jre了,因為jre是提供了一個可以供java程式執行的環境。

另外一點需要特別說明的就是,其實jdk已經包含了jre,在你下載安裝jdk的過程中就會提示你安裝jre的,不過jre也是可以單獨安裝的,可能有人不明白,為啥jre可以提供java的執行環境呢?這裡多說一點,那是因為jre中包含jvm,也就是java虛擬機器器,除此之外jre還包含一些java基礎類庫,java程式是執行在java虛擬機器器中的,這個你現在不理解也沒事,關鍵你得記住jdk和jre大概是個啥。

它們之間的關係大致是這個樣子的:

所以,先有個基本的認識就ok了,接下來我們開始安裝JDK。

JDK的安裝與配置

我們在做這個操作之前預設你之前是沒有安裝過的,所以我們會一步步的操作每一個安裝與配置的過程,所以,你是可以跟著操作的。

我們上面大致解釋了什麼是jdk和jre,在正式下載安裝jdk之前,我還需要補充一點額外知識,我們知道Java最初是有sun公司開發的,後倆sun公司被Oracle收購,Java也就是成了Oracle的,那麼伴隨Java的jdk也就從當初的sun公司跑到了現在的Oracle,要知道這才是正宗的Java啊,提供的jdk也是最原汁原味的,所以我們現在常用的jdk就是Oracle公司的。

說這個啥意思呢?那是因為jdk可不止Oracle公司一家有,其他公司可能也會去自己實現jdk,包括jre也是,不同公司都可以自己實現來滿足自己的個性化業務的,好了,說這個就是為了告訴你,我們用Oracle的Java相關工具,畢竟這是主流!

下載JDK

接下來我們就去下載JDK,首先我們去搜索JDK:

然後我們點選進去,就來到jdk的下載介面:

在這個下載介面,我們看到了最新的jdk現在已經是13了,我們這裡要使用的是jdk1.8,我們繼續往下找,找到1.8的下載位置:

這裡會不會有人不知道從哪裡看Jdk的版本啊,你仔細看左上角,是不是有一個Java SE 8u231,這個就是指的jdk版本是1.8的啊,你在看看其他的,是不是有13,11,7等等,其實1.8就是8,這個只是叫法不同,在jdk1.4之前都叫什麼1.X這種形式,但是到了1.5的時候,由於這個版本更新幅度很大,為了突出這個,就不叫1.5,改叫5.0了,所以後面就是6.0啊,7.0和8.0之類的,而這個0一般不讀,也就是jdk8或者jdk11,不過我們依然可以叫成jdk1.8,其實就是jdk8.

好了,我們開始下載,當我們點選下載按鈕之後,會出現如下的介面:

這裡要注意的首先在最上方你要先“Accept”,你不接受,人家不讓下載啊,點選接受之後,在下方找到自己適應的版本,比如我的是Windows64位的,我就下載最後一個,點選即可:不過這裡會跳轉到Oracle登入介面,需要你註冊Oracle才可以下載,記得之前好像不行的,不過現在人家讓註冊才能下載,沒辦法,那你就註冊以下就行了,比如我這裡註冊好了,我直接登入:

點選登入之後就開始下載了(如果你這裡有問題搞不懂的話,可以發郵件給我,我幫你解答,我的郵件地址:[email protected])。

安裝JDK

下載之後我們雙擊這個檔案就會進入安裝介面:

我們接著下一步:

到了這一步我們就需要注意幾點了,首先第一點發現沒有,中間那個框有個公共jre,這個公共jre是什麼啊,這裡你先不用管,我後面會單獨說說這個的,這也是個細節問題。

另外要注意的點就是安裝的位置,這裡是可以更改的,不過改與不改,都是無關緊要的,但是,有兩點,你必須記住:

1.安裝路徑中不能包含中文

2.安裝的位置你一定要記住在哪,因為後面配置環境變數需要用到。

比如我這裡將路徑更改一下,點選更改:

這裡如何改變路徑內容?看圖:

你可以點選上面的向下箭頭展開本地路徑列表去選擇一個合適的路徑,當然,你也可以直接在下面的路徑欄中輸入你要存放的路徑,這裡有個小細節,路徑最後面要不要加上這個反斜槓呢?就是“\”,這個是要加的,那要是你忘了加怎麼辦,沒事,當你點選確定的時候它會自動新增上,不信你試試。

點選確定之後就是這樣了:

ps:為了檢驗大家看的是否認真,我上面故意犯了一個小錯誤,不過這個錯誤沒什麼影響,不知道你看出來了嘛?

緊接著,我們下一步:

這已經在開始安裝了,我們等一會,不過這裡對大家來說可能會有一個小問題,什麼問題呢?你是不是疑惑怎麼在這裡不動了?

出現這個情況怎麼回事啊,你看看你的說面是不是又彈出這麼一個框:

這是啥?看到jre了沒,這個是讓我們安裝jre的,這裡你先記住,這個不是jdk中包含的jre,這是一個單獨的jre安裝,這裡也改變一下jre的安裝位置,讓它與jdk處在同一個層級下,方便查詢使用(有些工具可能需要單獨的jre)

注意這裡在更改位置的時候必須為jre指定一個空資料夾,所以我這裡新建了一個空的資料夾jre:(其實這裡更好的操作應該是將空資料夾命名成jre的完整名字,包括版本號,這裡應該就是jre1.8.0_231)

然後下一步就開始安裝java了(包含jre的安裝):

安裝完成程式就退出了,這個時候我們去看看我們安裝之後的資料夾,你還記得你把java安裝到哪裡了吧,我的在這裡:

箭頭所指的是我們剛剛安裝好的jdk和jre(注意這裡的命名其實不推薦,上面說過了),所以我們先把這個jre的檔名字改成jre1.8.0_231,另外上面提到過我這裡有個小錯誤,不知道大家發現沒,其實就是jdk的資料夾名稱後面的應該是231,我卻寫成了321,現在我們來做一個統一的修改吧。

現在我們就正式把jdk和jre安裝完成了,接下來我們開啟jdk你會發現還有一個jre:

這個其實是jdk自帶的jre,我們之前就說過jdk是包含jre的,所以在安裝jdk的時候會自動把jre也給安裝上的,不過我們上面是不是還單獨裝了一個jre,這是咋回事?

公共jre

還記得這張圖嘛?

我們之前在安裝的時候並沒有在意這個公共JRE,那這是個啥玩意兒,我之前在學習的時候就沒有注意這個,網上看的很多教程也沒有講這個,尤其是那種說傻瓜安裝的,就直接告訴你下一步下一步就可以了,頂多提醒你要記住jdk的安裝位置,後面要配置環境變數用。

那這個公共JRE是個啥?簡單點說就是這是一個獨立的JRE安裝程式,如果這裡你不做什麼處理,那麼在後續的安裝過程中會提示你安裝JRE,也就是這個:

其實我們的jdk已經自帶jre了,安裝jdk之後就已經安裝了jre,不信你看:

所以,這裡的公共JRE相當於另外單獨裝一下JRE,一般情況下是不需要的,因此我們在這裡可以這樣做:

點選這個公共JRE的下拉箭頭,展開之後選擇此功能將不可用,也就是成了這個樣子:

這樣就不會單獨安裝一個JRE了。這是個小細節,大家注意就行了。

配置Java環境變數

到了這裡我們已經安裝好了JDK(jre也以隨jdk的安裝而安裝),接下來我們就需要去配置Java的環境變量了。

接下來我先帶大家去配置Java環境變數,使得我們可以編譯Java程式以及執行Java程式,至於為什麼要配置,其中涉及的有些概念是什麼意思以及有什麼區別,我們呢暫時先不管,等我們把環境變數配置好之後,那個單獨說。

首先我們先到我們下載的jdk中看一下:

這裡面的檔案看起來不少啊,不過作為初學者的你,目前僅僅需要了解下bin目錄就行,這個bin目錄中就是存放了各種開發java程式需要用到的工具集等,我們之前說的javac命令和java命令就是在這個bin目錄,不信你看看:

我們要編譯Java程式的話就需要使用到javac這個命令,你之前操作的不行那是你電腦中根本就沒有這個命令了,當然不行了,不過你會說,現在有啦,可以了嘛?

我們來試試,開啟cmd命令列視窗,然後進入到桌面,因為我們之前的程式碼檔案時放在桌面的,接著,我們輸入:javac HelloWorld.java

好吧,還是不行,那是怎麼回事啊,彆著急,我們再來看下面的操作你就會明白了:

怎麼樣,看明白了嗎?要知道為什麼不行,那是你沒有javac這個命令啊,那你說現在我不是已經安裝jdk已經有javac這個命令了嗎?這倒是不假,可是你直接在命令列去輸入javac HelloWorld.java電腦也不知道這個javac在哪啊,所以你得去寫個絕對路徑才可以。就像上面那樣。

可能你也想到了,這樣的話就麻煩了,要寫那麼長,不能直接寫javac就能編譯嗎?這個當然可以啦,這就需要進行我們常說的java環境變數配置了。

首先,我們複製javac所在的路徑,其實也就是bin的路徑,我的如下:

接下來我們右鍵點選我的電腦選擇屬性就來到了這裡:

然後我們就進入了環境變數配置,也就是在這裡:

進入到環境變數之後我們找到系統變數中的Path,然後雙擊就會彈出“編輯環境變數”,然後我們點選新建:

然後將我們複製的bin路徑複製進去,然後點選確定即可,這裡要注意,之前開啟的視窗也需要都點選確定,直到所有的都關閉,這樣我們就簡單的把Java環境變數給搭建起來了,那我們再來試試之前的javac HelloWorld.java這裡要注意了,之前的dos命令視窗必須關閉重新開啟:

還真的可以了,你那裡呢?是不是也操作成功了呢?這個看起來也挺簡單的啊,那是不是也可以執行java呢?我們再來試試:

看到沒,可以了,不過我上面好像除了個錯誤啊,仔細看是我寫的太快,把單詞打錯了,這其實也是很多新手的一個問題,就是覺得我明明是照著做的,怎麼到我這裡就不行了呢?有的時候就是因為自己的馬虎,說不定就是哪個單詞寫錯了。

現在我們差不多已經把Java環境給配置好了,為什麼說差不多呢?其實還有一個更有的配置,接下來我們一起來操作,這次我們不復制bin的路徑了,而是複製jdk的安裝路徑,我的是這個:

然後我們還是之前的編輯環境變數的操作,由於跟上面的開啟方式一樣,我這裡就不貼圖了,不知道的返回上面看,首先我們在系統環境變數中點選新建變數:

在新建系統變數中,按照圖中所示操作,變數值就是jdk的安裝位置,變數名有人問可以改嗎?答案是不能,就要命名成JAVA_HOME,然後點選確定,接著我們再雙擊開啟Path,然後還是新建:

這裡不知道有人看懂沒,上面的新建系統變數其實就是個對映,這裡的:

%JAVA_HOME%其實就等價於jdk的路徑,後面再加上個“\bin”不久跟之前的一樣了嘛,那為什麼要這樣做呢?因為我們後面可能還要用jdk11,那麼我們這樣設定環境變數的話就可以直接去更改JAVA_HOME而不用再去更改Path中的變量了,這樣設定之前的那個就可以刪掉了。

到此,我們就配置好Java的環境變數啦!

關於JDK的那些個概念解惑

以上我們安裝了jdk,而且也配置好了Path環境變數,現在我們可以正常去編譯和執行Java程式了,那麼關於jdk的安裝配置這就結束了嘛?當然不是,這其中還涉及很多的概念性問題,比如說什麼是Path環境變數,什麼是環境變數和系統變數以及classpath是什麼等等,接下里我們一起再來看看。

什麼是Path環境變數,為什麼要配置?

Path環境變數在Windows中其實就是去記錄一些可執行檔案的,在Windows中的可執行檔案如xxx.exe等,當我們要執行這樣的一個可執行檔案的話,會首先在當前路徑下去尋找這個可執行資料夾,比如我們之前在桌面使用javac命令,但是桌面並沒有這個命令,也就是當前路徑沒有,那麼就會去Path路徑下去找,如果Path路徑下也沒有的話,那就會報錯。

如果我們把需要用到的命令工具都配置到(這裡配置的而是工具的路徑地址)Path環境變數中,那麼我們就可以在任意位置去使用這個命令工具,因為雖然說我們當前路徑沒有,但在Path環境變數中可以找到這個命令工具的地址。

就像我們寫的Java源程式,需要使用javac命令去編譯,但是javac命令只能在其bin目錄下才能執行,但是我們平常做開發又不能把程式儲存到bin的安裝目錄中,所以為了讓我們可以把我們的程式儲存在電腦上的任意位置,那麼就需要將javac設定成在電腦的任何位置都可以執行,那麼怎麼辦呢?解決辦法就是配置環境變數。

在我們沒有配置環境變數之前,javac命令只存在與bin目錄,所以我們想要使用javac命令,那就必須在javac所處的目錄下進行,如果你在其他目錄下執行javac,那也找不到javac這個命令工具啊,有人說,那不可以在你要執行的那個程式的目錄下新增上jacac命令工具嗎(比如說把javac.exe複製到桌面),這個還真不可行,因為java很多命令是互相依賴的,單獨的一個javac是不能獨自執行的,除非你再複製一個完整的jdk目錄過去,但是如果你又換了一個目錄呢?總不能再複製一份吧,顯然這是不現實的。 。

所以如果不設定環境變數而你執行程式的當前路徑下又沒有javac這個命令,那麼作業系統是不知道你這個javac.exe在哪裡,所以就無法執行,另外要知道在電腦上,當我們輸入一個命令的時候,它會先搜尋當前路徑如果沒有所需要的,那就會自動去搜索PATH變數中所指定的所有目錄。

path和classpath的區別,為什麼要配置class path

在有的教程中會告訴大家要在配置一個classpath,其實這個我是沒有配置過的,這是啥呢?

對於Path環境變數簡單來說就是告訴作業系統你所需要的命令工具該去哪裡找,而classpath記錄的則是一些Java類檔案的位置,為啥要弄這個,設定classpath主要是為了將要使用到的一些class檔案與Java中的一些類庫檔案關聯起來,這樣是為了來執行一些比較特殊的Java程式,啥是特殊的檔案,比如你的Java程式使用到了一些其他的類,比如使用到了別人寫的一個Java類(你的Java程式引入了該類),這個時候你執行這個Java程式的時候就必須告訴系統該去哪裡找這個Java類,這個classpath就是指定這個Java類檔案的地址的。可以這麼簡單的去理解。

另外要知道的就是path是給作業系統用的,不僅僅是配置Java相關的,其他很多也需要配置path環境變數,而classpath則不同,它專門是針對Java的,是專門用於查詢一些Java類路徑的。

一般來說classpath並不需要配置,像那些引用其他類的程式我們都會使用一些整合開發工具了,也即是IDE,比如IDEA和eclipse這些,它們都有相關的配置,所以你即使不配置class path也沒有關係,但是你總得知道有這麼個東西。

環境變數,系統變數和使用者變數

簡單來說,環境變數就是一個路徑,當你在電腦中用到一些相關的東西的時候,電腦會自動通過這個變數指定的路徑去迴圈早你需要的東西,我們常見的就是各種命令工具了,比如我們一直在說的javac.exe 。

系統變數是環境變數的一種,我們在設定環境變數的時候會發現有兩個,一個是使用者變數,一個是系統環境變數,其實這個也好理解,我們知道Windows系統可以設定多使用者操作,這個使用者變數只針對當前使用者生效,而系統變數則是所有的使用者都可以使用。

再簡單點來說就是,如果說設定系統環境變數和使用者環境變數的話,這都可以叫做設定環境變數,如果你設定的是系統環境變數的話,那麼你這個電腦上的所有使用者都可以使用,但是如果你設定的是使用者變數的話,其他的使用者就不能使用了。