咱們在前兩篇文章中分別向你們通俗易懂的介紹了什麼是Java,以及有關Java的一些趣事,相信你已經火燒眉毛的想要正式學習Java了,畢竟以前的介紹只是一些概念,並無真的去接觸Java,好比如何運行一個Java程序。java
那麼,如何運行一個Java程序呢?咱們先來看一個例子:程序員
PS:做爲一個Java程序員,你必定要在初學的時候緊緊記住如下這段代碼。web
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
複製代碼
這是很是經典的一段代碼,意味着你即將開啓Java的代碼,進入使用Java編織的代碼世界,因此這段代碼必定要記住,我記得我在剛開始學習Java的時候,網上認識一個作程序員的,我跟他說我學過Java,他有點不信,我就把這段代碼敲給他了,他立馬說「還真的學過Java啊」,看吧,知道這段代碼的做用了吧。eclipse
由於你剛接觸Java,你也許並不明白上面這段代碼啥意思以及爲啥要這樣寫,沒事,這個如今不重要,這個到之後咱們會詳細的講解的。jvm
接下來我將使用最原始的方式給你們運行這段代碼:工具
首先,我在桌面上新建一個txt文件,而後把這段代碼複製進去,接着我將文件的擴展名從txt改爲java(這是Java文件的擴展名),也就是這個樣子:學習
對了,這裏必定要記住,文件的名字要命名成HelloWorld,你暫時不用管爲何,解析來咱們按住win+r
打開Windows的運行窗口,而後在裏面輸入cmd
打開咱們的命令行窗口,也就是這個樣子:開發工具
打開命令行窗口以後,咱們在命令行輸入cd desktop
也就是進入到咱們的桌面路徑。這個時候咱們要知道,咱們剛纔已經把寫好的Java文件(也就是HelloWorld.java)放到桌面上了,接下來咱們開始使用以下的命令去編譯這個文件:spa
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安裝與環境變量配置的有不少教程啊,是的,我當初也是跟着網上教程搭建的,不少就是一上來就教你如何下載,而後怎麼配置,就是一頓猛如虎的操做,而後就完了,那些給你講爲啥這樣作的不多,致使本身當時理解的並非很透徹,因此常常出現小錯誤。
因此,在今天的次這講解中,我不只教你怎麼操做,不少比較重要的點我也會告訴你爲啥這樣作,也就是不只知其然,還要知其因此然!
那麼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和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如今已是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才能夠下載,記得以前好像不行的,不過如今人家讓註冊才能下載,沒辦法,那你就註冊如下就好了,好比我這裏註冊好了,我直接登陸:
點擊登陸以後就開始下載了(若是你這裏有問題搞不懂的話,能夠發郵件給我,我幫你解答,個人郵件地址:ithuangqing@163.com)。
下載以後咱們雙擊這個文件就會進入安裝界面:
咱們接着下一步:
到了這一步咱們就須要注意幾點了,首先第一點發現沒有,中間那個框有個公共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,那這是個啥玩意兒,我以前在學習的時候就沒有注意這個,網上看的不少教程也沒有講這個,尤爲是那種說傻瓜安裝的,就直接告訴你下一步下一步就能夠了,頂多提醒你要記住jdk的安裝位置,後面要配置環境變量用。
那這個公共JRE是個啥?簡單點說就是這是一個獨立的JRE安裝程序,若是這裏你不作什麼處理,那麼在後續的安裝過程當中會提示你安裝JRE,也就是這個:
其實咱們的jdk已經自帶jre了,安裝jdk以後就已經安裝了jre,不信你看:
因此,這裏的公共JRE至關於另外單獨裝一下JRE,通常狀況下是不須要的,所以咱們在這裏能夠這樣作:
點擊這個公共JRE的下拉箭頭,展開以後選擇此功能將不可用
,也就是成了這個樣子:
這樣就不會單獨安裝一個JRE了。這是個小細節,你們注意就好了。
到了這裏咱們已經安裝好了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,並且也配置好了Path環境變量,如今咱們能夠正常去編譯和運行Java程序了,那麼關於jdk的安裝配置這就結束了嘛?固然不是,這其中還涉及不少的概念性問題,好比說什麼是Path環境變量,什麼是環境變量和系統變量以及classpath是什麼等等,接下里咱們一塊兒再來看看。
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變量中所指定的全部目錄。
在有的教程中會告訴你們要在配置一個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系統能夠設置多用戶操做,這個用戶變量只針對當前用戶生效,而系統變量則是全部的用戶均可以使用。
再簡單點來講就是,若是說設置系統環境變量和用戶環境變量的話,這均可以叫作設置環境變量,若是你設置的是系統環境變量的話,那麼你這個電腦上的全部用戶均可以使用,可是若是你設置的是用戶變量的話,其餘的用戶就不能使用了。