JDK安裝文檔
1 雙擊安裝文件后過一會(huì)就會(huì)出現(xiàn)安裝界面,點(diǎn)擊下一步
2 在這個(gè)界面要更改安裝目錄,要安裝到不含空格以及中文的目錄下
3 過一會(huì)彈出來這個(gè)界面就說明JDK安裝成功,可以把這個(gè)界面關(guān)掉,因?yàn)檫@個(gè)界面是安裝JRE的,但JDK里面包含了JRE,不需要再安裝JRE
4 最后會(huì)出現(xiàn)這個(gè)界面,點(diǎn)擊關(guān)閉即可,JDK安裝過程結(jié)束,接下來是配置Path環(huán)境變量
5 打開系統(tǒng)環(huán)境變量界面(win10系統(tǒng)可以按照:開始 -- 設(shè)置 -- 系統(tǒng) -- 關(guān)于 -- 系統(tǒng)信息 -- 高級(jí)系統(tǒng)設(shè)置 -- 環(huán)境變量)
6 把JDK安裝目錄下的bin目錄追加到Path環(huán)境變量后面(別忘了使用英文分號(hào)和原有路徑進(jìn)行分隔)
可能大家聽說過JAVA_HOME環(huán)境變量,其實(shí)不配置也沒關(guān)系
至此JDK安裝并配置完成!
編者薦語:
Java 是排名第一的編程語言和開發(fā)平臺(tái)。它可以降低成本、縮短開發(fā)時(shí)間、推動(dòng)創(chuàng)新并改進(jìn)應(yīng)用服務(wù)。隨著全球數(shù)百萬開發(fā)人員運(yùn)行超過 510 億臺(tái) Java 虛擬機(jī),Java 繼續(xù)成為企業(yè)和開發(fā)人員首選的開發(fā)平臺(tái)。
很多Java程序員在寫了很多年代碼后,有時(shí)候你突然問他們JRE和JDK之間有什么關(guān)系,而JVM又是什么東西,很多人都不知所云。
本篇主要是幫理清以上三者之間的關(guān)系和區(qū)別,并搞清Java文件是被誰編譯,又是被誰執(zhí)行。
首先,我們分別對(duì)這三者進(jìn)行簡(jiǎn)單的闡述。
JVM:英文全拼是 Java Virtual Machine,翻譯過來就是Java虛擬機(jī)。它只認(rèn)識(shí)class類型的文件,也就是Java文件被編譯后生成的文件,它能夠?qū)lass文件中的字節(jié)碼指令進(jìn)行識(shí)別并調(diào)用操作系統(tǒng)上的API完成作業(yè)。也是Java能夠?qū)崿F(xiàn)跨平臺(tái),一次編譯,到處運(yùn)行的核心。
JRE:英文全拼是Java Runtime Environment,翻譯過來也就是Java運(yùn)行時(shí)環(huán)境,它主要包含兩個(gè)部分,JVM和運(yùn)行時(shí)所需要的核心類庫,負(fù)責(zé)提供Java運(yùn)行環(huán)境和Java文件的編譯工作。
在JDK的安裝目錄下有一個(gè)名為jre的目錄,里面有兩個(gè)文件夾bin和lib,在這里可以認(rèn)為bin里的就是jvm,lib中則是jvm工作所需要的類庫,而jvm和lib和起來就稱為jre。
JDK:英文全拼是Java Development Kit,翻譯過來就是Java開發(fā)工具包。是Java開發(fā)的核心,它集成了JRE和一些好用的工具命令。例如:java、javac、jar等常用命令。
通過以上的簡(jiǎn)單介紹,不難看出,這三者之間的關(guān)系類似俄羅斯套娃。
下面先看下面的JDK的安裝目錄,這里以jdk1.8版本為例。
細(xì)心的同學(xué)不難發(fā)現(xiàn),jdk安裝成功之后,在它的根目錄下會(huì)出現(xiàn)兩個(gè)目錄,一個(gè)是jdk,一個(gè)是jre,但是點(diǎn)進(jìn)jdk目錄,還存在一個(gè)jre目錄。
為什么會(huì)有兩個(gè)JRE目錄呢?這兩個(gè)目錄有什么關(guān)系呢?
其實(shí)它倆目錄是一樣的,不存在關(guān)聯(lián)關(guān)系。開發(fā)時(shí),不管選擇使用哪一個(gè)都是可以的,都可以正常提供相應(yīng)的jre功能。
外層和jdk同級(jí)目錄的jre目錄,只是在安裝jdk的時(shí)候,默認(rèn)的都安裝上了。其實(shí)不安裝也可,對(duì)于初學(xué)者來講,可能不太懂,也就安裝了。但如果僅僅是用來編譯、部署和運(yùn)行 Java 程序的,那么完全可以不用安裝 jdk,只需要安裝jre即可。
在 jdk 的 bin 目錄下,基本上都是一些可執(zhí)行文件。例如javac命令,它內(nèi)部調(diào)用的其實(shí)是JDK中l(wèi)ib目錄中的tools.jar中 com.sun.tools.javac.Main類,也就是說這些工具只是入口而已。
那JVM呢?
Java能夠跨平臺(tái)運(yùn)行的核心在于JVM 。不是Java能夠跨平臺(tái),關(guān)鍵在于JVM,它能夠跨平臺(tái)。不同的操作系統(tǒng)上的API肯定是不同的,那么如果我們想要寫一段代碼調(diào)用系統(tǒng)的聲音設(shè)備,就需要針對(duì)不同系統(tǒng)的API寫出不同的代碼來完成動(dòng)作。
而Java引入了字節(jié)碼的概念,jvm只能認(rèn)識(shí)字節(jié)碼,并將它們解釋到系統(tǒng)的 API調(diào)用。針對(duì)不同的系統(tǒng)有不同的jvm實(shí)現(xiàn),有Linux版本的jvm實(shí)現(xiàn),也有Windows版本的jvm實(shí)現(xiàn),但是同一段代碼在編譯后的字節(jié)碼是一樣的。引用上面的例子,在Java API層面,我們調(diào)用系統(tǒng)聲音設(shè)備的代碼是唯一的,和系統(tǒng)無關(guān),編譯生成的字節(jié)碼也是唯一的。但是同一段字節(jié)碼,在不同的 jvm 實(shí)現(xiàn)上會(huì)映射到不同系統(tǒng)的API調(diào)用,從而實(shí)現(xiàn)代碼的不加修改即可跨平臺(tái)運(yùn)行。
希望對(duì)正在準(zhǔn)備學(xué)習(xí)Java的朋友們有所幫助,也歡迎補(bǔ)充交流~