JVM : Java Virtual Machine(Java虛擬機)奴烙。所謂“虛擬機”顧名思義就是模擬出來的東西陷嘴。就像是我們在用電腦看電視每聪,但是電腦里并沒有像電視機里面一樣的硬件支持练般,但是我們?nèi)匀豢梢詮碾娔X里接受電視臺的節(jié)目。那是因為我們編寫了一個可以模擬電視機硬件工作的軟件運行在電腦的平臺上面的原因服爷。同樣JVM就是模擬了電腦的硬件杜恰,它同樣有著像CPU一樣可以執(zhí)行代碼的功能获诈。它的實現(xiàn)具體有:指令集 寄存器組 類文件格式 棧 垃圾收集堆 內(nèi)存區(qū)⌒暮郑可以把它理解成是專門用來執(zhí)行Java程序的一臺機器舔涎。也就是說JVM提供了Java執(zhí)行的硬件平臺。JVM上執(zhí)行的代碼都存放在.CLASS文件中逗爹。JVM只執(zhí)行字節(jié)碼文件终抽。
JRE : Java Runtime Environment(Java運行環(huán)境)。就是可以運行Java程序的地方桶至。就像是我們要在電腦上運行一個視頻軟件的時候必須在Windos或者是Linux等操作系統(tǒng)上一樣。那我們就可以把它看做是一個操作系統(tǒng)匾旭。也就是說JRE提供了Java執(zhí)行的軟件平臺镣屹。在運行Java的過程中除了需要有JVM執(zhí)行Java代碼這個動作外,還需要Java API(Application Programming Interface,應(yīng)用編程接口)說簡單的就是“類庫”价涝。Java程序在運行中沒有這些API是不行的女蜈,所以JRE包含JVM。
JDK : Java Development ToolKit(Java開發(fā)工具包)色瘩。我們有了硬件和軟件兩個平臺后就可以做我們自己想做的事情了伪窖。JDK就是我們用來做事情的工具,它包括JRE還有其他工具居兆。我們所說版本的不同覆山,也就是說它里面的工具有差異。就像是你不同的工具箱里放著不同的工具一樣泥栖。舉個例子:最常用的一個就是javac,它是把.java的文件翻譯成.class文件的工具簇宽。然后讓JVM來執(zhí)行.class文件中的字節(jié)碼。(就像電腦的CPU只認識0或1的道理)
如果一臺計算機的需求只是運行Java程序吧享,而不是去編寫Java程序的時候魏割,它只需要安裝JRE就可以了。