1. 程式人生 > >Java基礎教程(2)--Java開發環境

Java基礎教程(2)--Java開發環境

特殊 .html 完成 能夠 println 個數 過程 intel 免費試用

一.JVM、JRE和JDK的概念

??對於初學者來說,這三個術語出現的頻率很高,而且有關這它們的問題在面試題中也會經常出現。因此,理解它們的定義、區別和聯系就顯得尤為重要。在學習這幾個專業術語之前,我們先來了解一下Java代碼的編譯運行過程。
??機器語言是用二進制代碼表示的,能夠被計算機直接識別和執行的一種機器指令的集合。也就是說,通過機器語言,我們可以直接操控電腦去做任何我們想要執行的操作。但是,由於機器語言是用二進制表示的,這就導致了它學習成本高、代碼晦澀難懂、不便於調試等缺點。試想一下,寫代碼只用0和1,每個指令都要查手冊,而且一旦手誤寫錯一個數字,很難靠肉眼識別出來,這對於程序員來說,無疑是一件非常痛苦的事。
??高級語言是以人類的日常語言為基礎的一種編程語言,使用一般人易於接受的文字來表示(例如漢字、不規則英文或其他外語),它的學習成本相對於機器語言來說大大降低,從而使程序編寫更容易,亦有較高的可讀性。編譯器是將高級語言翻譯成機器語言的軟件,使用高級語言編寫的代碼經過編譯器翻譯以後得到電腦可以直接執行的機器語言代碼,這就相當於變相地編寫機器語言。電腦領域已經發明了成百上千種編程語言,每種語言都有對應的編譯器。在編寫高級語言之前,首先要確保電腦上已經安裝了對應的編譯器。
??高級語言大體上可分為編譯型語言和解釋型語言。編譯型語言首先將源代碼通過編譯器生成機器語言代碼,再由電腦運行生成的機器語言代碼。像C和C++等都是編譯型語言。解釋型語言不需要事先編譯,直接將源代碼解釋成機器語言並立即執行,每次執行都需要重新翻譯。像Python和JavaScript等都是解釋型語言。
??Java語言是一種特殊的存在。Java源代碼(文件後綴名為.java)首先經過編譯之後轉換為一種稱為Java字節碼的中間語言(文件後綴名為.class),再由Java虛擬機對字節碼進行解釋和執行。如果說它是編譯型語言,它編譯之後得到的並不是機器語言代碼,無法直接運行,這與編譯型語言的定義相矛盾;但是如果說他是解釋型語言,似乎也不太合理,因為它在解釋之前有一個編譯過程。因此,可以說它既是編譯型語言,又是解釋型語言,也可以說它既不是編譯型語言,又不是解釋型語言。
??現在回過頭來看JVM、JRE和JDK的概念。JVM(Java Virtual Machine,Java虛擬機)是將Java字節碼解釋給本地系統運行的軟件。JVM是Java實現其平臺無關性特點的關鍵。Java語言使用JVM屏蔽了與具體平臺相關的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。JVM在執行字節碼時,把字節碼解釋成具體平臺上的機器指令執行。這就是Java的能夠“一次編譯,到處運行”的原因。
??但是只有JVM還不能執行字節碼,因為在解釋字節碼的時候JVM需要調用解釋所需要的類庫。JRE(Java Runtime Environment,Java運行時環境)是運行Java程序所必需的環境的集合,包含JVM標準實現及Java核心類庫。也就是說,如果要運行Java程序,那麽電腦上必須安裝JRE。
??安裝JRE之後,我們就可以在電腦上運行編譯好的Java程序了。這對於Java程序的用戶來說足夠了,但是如果是Java開發人員,那麽只安裝JRE將無法進行Java開發,因為無法將Java源代碼編譯成字節碼。JDK(Java Development Kit,Java開發工具包)中包含了編譯Java源代碼的工具javac,提取Java文檔的工具javadoc等工具和JRE。因此,安裝JDK以後,我們既可以進行Java的開發,也可以運行Java程序。下面這張圖很好地說明了這三者之間的關系:
技術分享圖片

二.安裝JDK

1.下載JDK

??正如上一篇文章中所說,我們選擇安裝JDK11。這裏是它的下載地址。個人比較喜歡壓縮包的安裝方式,所以這裏選擇windows64位的zip文件。註意要勾選Accept License Aggrement。
技術分享圖片
將下載的壓縮包解壓至任何你想要安裝的位置。這裏我將解壓出的jdk-11文件夾放在了F盤的env文件夾下。

2.配置環境變量

??接下來需要配置環境變量Path和JAVA_HOME。首先介紹一下為什麽需要配置這兩個環境變量。Path環境變量用來指定cmd中可執行文件的搜索路徑。編譯Java源代碼需要使用javac.exe,運行字節碼需要使用java.exe,如果沒有配置這兩個可執行文件的路徑,那麽在cmd中使用這兩個命令時將會出現“xxx不是內部或外部命令”的錯誤。而JAVA_HOME環境變量則是用來定義JDK的安裝路徑。在一個環境變量中可以使用其他環境變量的值,使用時需要在其他環境變量前後加%。例如,JDK的安裝路徑是F:\env\jdk-11,那麽JAVA_HOME也需要配置為F:\env\jdk-11。javac.exe和java.exe的路徑為F:\env\jdk-11\bin,那麽Path中只需要配置%JAVA_HOME%\bin即可。這樣做的一個好處是,如果要切換或修改JDK的路徑,只需要修改JAVA_HOME的值。另外一個需要配置JAVA_HOME的原因是,許多組件依賴於Java的環境,如果不配置JAVA_HOME環境變量,這些組件將會因為找不到Java的安裝路徑而報錯,例如tomcat、maven等。
??在許多其他有關配置JDK環境變量的教程中都配置了CLASSPATH,但是從Java1.5開始就可以不配置這個環境變量了,而且每篇教程裏CLASSPATH的值都不一樣,有配置rt.jar的,有配置dt.jar的,也有配置tools.jar的,這對於初學者來說非常不友好。這裏我們選擇不配置CLASSPATH變量。
??最後再來介紹一下系統變量和用戶變量。在配置每個環境變量時,既可以將其配置在系統變量裏,又可以配置在用戶變量裏。但是系統變量對所有用戶都有效,而用戶變量只對當前用戶有效。並且系統變量的優先級高於用戶變量,也就是說如果一個環境變量在系統變量和用戶變量中都進行了配置,那麽電腦將優先使用系統變量。因為系統變量中有許多比較重要的環境變量,所以我選擇在用戶變量中配置Path和JAVA_HOME變量。
??如果是使用IDEA(一個JDK的集成開發環境,下文會講到)進行開發的話,Path變量是沒有必要配置的,因為可以在IDEA中配置Java的安裝路徑。但是為了演示在cmd中使用javac和java命令,我們將同時配置Path和JAVA_HOME變量。
??下面是具體的配置步驟:
(1)右鍵我的電腦,屬性,找到高級系統設置;
技術分享圖片


(2)高級,環境變量;
技術分享圖片
(3)在用戶變量中新建JAVA_HOME變量,復制JDK的安裝路徑並粘貼到變量值,確定;
技術分享圖片
(4)在用戶變量中編輯Path變量(如果沒有就新建),填入%JAVA_HOME%\bin,確定;
技術分享圖片
??之後一直點擊確定即可退出環境變量的配置。至此,JDK的環境變量就全部配置完成了。此時可以打開cmd測試一下(如果配置前已經打開了cmd,需要關閉並重新打開,因為環境變量會在下一次打開cmd時才生效)。輸入javac -version和java -version,看到如下輸出則表示配置成功:
技術分享圖片

三.第一個Java程序

??下面我們將編寫一個非常簡單的Java程序來體驗Java代碼的編寫、編譯和運行。
??首先新建一個文本文檔,然後編寫以下代碼:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

??保存,然後將文件名修改為“HelloWorld.java”。打開cmd,切換到這個文件所在的目錄(我將這個文件放在了F盤的根目錄下),然後運行javac HelloWorld.java進行編譯,此時會在目錄中看到生成了一個HelloWorld.class文件,這個文件就是編譯之後生成的字節碼。接著運行java HelloWorld(這裏不用加.class後綴),命令行將會輸出“Hello,World!”。
技術分享圖片
??這裏看不懂沒有關系,我們會在後面的文章中對每一個語法進行介紹。

四.集成開發環境

??上一節中,我們已經了解了如何從命令行編譯和運行一個Java程序,這是一個很有用的技能。但是每次編譯和運行都要手動輸入命令則會顯得有點麻煩。集成開發環境(Integrated Development Environment,以下簡稱IDE)集成了這些功能,在編寫完代碼後只需要點擊運行按鈕,IDE將會在後臺自動為我們執行這些命令並將輸出顯示在控制臺上。當然,IDE的功能遠不止於此,它還提供了調試、分析、自動補全、語法檢測等許多功能,它使得我們的開發工作更加輕松高效。
??Java的IDE有很多,其中最出名的要屬eclipse和Intellij IDEA了。eclipse是一個開源的、免費的集成開發環境。筆者剛開始學習Java使用的就是這款IDE,直到後來遇到了IDEA。個人更加喜歡IDEA,功能非常強大,界面也很美觀。網上有很多人就eclipse和IDEA哪個更好展開了激烈的討論,在我看來這是沒有必要的。IDE只是一個工具,每個人選擇自己用著順手的工具就可以了,我們真正關註的編程語言本身,而不是使用什麽工具並且說服別人一定要去用什麽工具。在後面的教程中我都會使用IDEA進行講解。
??IDEA分為社區版(Community)和旗艦版(Ultimate),社區版免費,但是相對於旗艦版來說少了很多功能,不過對於Java初學者來說肯定是夠用了。旗艦版收費,而且非常貴,第一年的價格是499美刀,之後每年便宜100美刀,第三年及以後都是299美刀。學生黨可以憑借教育網郵箱(後綴為.edu.cn的郵箱)申請免費試用。如果不是學生黨到但是還是想使用旗艦版的話,這裏推薦一個提供免費註冊碼的網站,上面有詳細的教程。

Java基礎教程(2)--Java開發環境