JVM、JRE、JDK的區(qū)別和聯(lián)系
本文向大家描述一下JVM、JRE、JDK三者的概念和區(qū)別,JVM是指Java虛擬機(jī),所謂“虛擬機(jī)”顧名思義就是模擬出來的東西;Java運(yùn)行環(huán)境就是可以運(yùn)行Java程序的地方;JDK就是我們用來做事情的工具,它包括JRE還有其他工具。
JVM、JRE、JDK的區(qū)別和聯(lián)系
JVM:JavaVirtualMachine(Java虛擬機(jī))。所謂“虛擬機(jī)”顧名思義就是模擬出來的東西。就像是我們?cè)谟秒娔X看電視,但是電腦里并沒有像電視機(jī)里面一樣的硬件支持,但是我們?nèi)匀豢梢詮碾娔X里接受電視臺(tái)的節(jié)目。那是因?yàn)槲覀兙帉懥艘粋€(gè)可以模擬電視機(jī)硬件工作的軟件運(yùn)行在電腦的平臺(tái)上面的原因。同樣JVM就是模擬了電腦的硬件,它同樣有著像CPU一樣可以執(zhí)行代碼的功能。它的實(shí)現(xiàn)具體有:指令集寄存器組類文件格式棧垃圾收集堆內(nèi)存區(qū)。可以把它理解成是專門用來執(zhí)行Java程序的一臺(tái)機(jī)器。也就是說JVM提供了Java執(zhí)行的硬件平臺(tái)。JVM上執(zhí)行的代碼都存放在.CLASS文件中。JVM只執(zhí)行字節(jié)碼文件。
JRE:JavaRuntimeEnvironment(Java運(yùn)行環(huán)境)。就是可以運(yùn)行Java程序的地方。就像是我們要在電腦上運(yùn)行一個(gè)視頻軟件的時(shí)候必須在Windos或者是Linux等操作系統(tǒng)上一樣。那我們就可以把它看做是一個(gè)操作系統(tǒng)。也就是說JRE提供了Java執(zhí)行的軟件平臺(tái)。在運(yùn)行Java的過程中除了需要有JVM執(zhí)行Java代碼這個(gè)動(dòng)作外,還需要JavaAPI(ApplicationProgrammingInterface,應(yīng)用編程接口)說簡(jiǎn)單的就是“類庫(kù)”。Java程序在運(yùn)行中沒有這些API是不行的,所以JRE包含JVM。
JDK:JavaDevelopmentToolKit(Java開發(fā)工具包)。我們有了硬件和軟件兩個(gè)平臺(tái)后就可以做我們自己想做的事情了。JDK就是我們用來做事情的工具,它包括JRE還有其他工具。我們所說版本的不同,也就是說它里面的工具有差異。就像是你不同的工具箱里放著不同的工具一樣。舉個(gè)例子:最常用的一個(gè)就是javac,它是把.java的文件翻譯成.class文件的工具。然后讓JVM來執(zhí)行.class文件中的字節(jié)碼。(就像電腦的CPU只認(rèn)識(shí)0或1的道理)
如果一臺(tái)計(jì)算機(jī)的需求只是運(yùn)行Java程序,而不是去編寫Java程序的時(shí)候,它只需要安裝JRE就可以了。現(xiàn)在大家知道JVMJREJDK,這些東西到底是什么了吧。
【編輯推薦】
- 解答WebLogic與JVM六大疑問
- Inside JVM體系結(jié)構(gòu)詳解
- 實(shí)例解析Linux平臺(tái)的JVM性能評(píng)測(cè)
- 詳解Tomcat配置JVM參數(shù)步驟
- 深入學(xué)習(xí)JVM內(nèi)存設(shè)置原理和調(diào)優(yōu)