JAVA虛擬機(jī)(JVM)是啥?
- Java虛擬機(jī)(英語(yǔ):Java Virtual Machine萄焦,縮寫(xiě)為JVM)诵叁,一種能夠運(yùn)行Java bytecode的虛擬機(jī),以堆棧結(jié)構(gòu)機(jī)器來(lái)進(jìn)行實(shí)做。最早由太陽(yáng)微系統(tǒng)所研發(fā)并實(shí)現(xiàn)第一個(gè)實(shí)現(xiàn)版本蝌矛,是Java平臺(tái)的一部分,能夠運(yùn)行以Java語(yǔ)言寫(xiě)作的軟件程序欠拾。
Java虛擬機(jī)有自己完善的硬體架構(gòu)先紫,如處理器、堆棧暂幼、寄存器等筏勒,還具有相應(yīng)的指令系統(tǒng)。JVM屏蔽了與具體操作系統(tǒng)平臺(tái)相關(guān)的信息旺嬉,使得Java程序只需生成在Java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼)管行,就可以在多種平臺(tái)上不加修改地運(yùn)行。通過(guò)對(duì)中央處理器(CPU)所執(zhí)行的軟件實(shí)作邪媳,實(shí)現(xiàn)能執(zhí)行編譯過(guò)的Java程序碼(Applet與應(yīng)用程序)捐顷。
作為一種編程語(yǔ)言的虛擬機(jī),實(shí)際上不只是專用于Java語(yǔ)言雨效,只要生成的編譯文件匹配JVM對(duì)載入編譯文件格式要求迅涮,任何語(yǔ)言都可以由JVM編譯運(yùn)行。此外徽龟,除了甲骨文叮姑,也有其他開(kāi)源
由于JVM并不是專為Java所實(shí)現(xiàn)的運(yùn)行時(shí),實(shí)際上只要有其他編程語(yǔ)言的編譯器能生成正確Java bytecode文件据悔,則這個(gè)語(yǔ)言也能實(shí)現(xiàn)在JVM上運(yùn)行传透。
來(lái)源維基百科
- JVM是Java Virtual Machine(Java虛擬機(jī))的縮寫(xiě),JVM是一種用于計(jì)算設(shè)備的規(guī)范屠尊,它是一個(gè)虛構(gòu)出來(lái)的計(jì)算機(jī)旷祸,是通過(guò)在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來(lái)實(shí)現(xiàn)的。
Java語(yǔ)言的一個(gè)非常重要的特點(diǎn)就是與平臺(tái)的無(wú)關(guān)性讼昆。而使用Java虛擬機(jī)是實(shí)現(xiàn)這一特點(diǎn)的關(guān)鍵托享。一般的高級(jí)語(yǔ)言如果要在不同的平臺(tái)上運(yùn)行,至少需要編譯成不同的目標(biāo)代碼浸赫。而引入Java語(yǔ)言虛擬機(jī)后闰围,Java語(yǔ)言在不同平臺(tái)上運(yùn)行時(shí)不需要重新編譯。Java語(yǔ)言使用Java虛擬機(jī)屏蔽了與具體平臺(tái)相關(guān)的信息既峡,使得Java語(yǔ)言編譯程序只需生成在Java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼)羡榴,就可以在多種平臺(tái)上不加修改地運(yùn)行。Java虛擬機(jī)在執(zhí)行字節(jié)碼時(shí)运敢,把字節(jié)碼解釋成具體平臺(tái)上的機(jī)器指令執(zhí)行校仑。這就是Java的能夠“一次編譯忠售,到處運(yùn)行”的原因。
來(lái)自百度百科
- Java虛擬機(jī)可以看作是一臺(tái)抽象的計(jì)算機(jī).如同真實(shí)的計(jì)算機(jī)那樣,他有自己的指令集以及各種運(yùn)行時(shí)內(nèi)存區(qū)域.
Java虛擬機(jī)與Java語(yǔ)言并沒(méi)有必然的聯(lián)系,他只與特定的二進(jìn)制文件格式---Class文件格式所關(guān)聯(lián),Class文件中包含了Java虛擬機(jī)指令集(或者稱為字節(jié)碼,Bytecodes)和符號(hào)表,還有一些其他輔助信息.