java編譯器只需面向JVM,生成JVM能理解的代碼或字節(jié)碼文件。Java源文件經(jīng)編譯器,編譯成字節(jié)碼程序,通過(guò)JVM將每一條指令翻譯成不同平臺(tái)機(jī)器碼,通過(guò)特定平臺(tái)運(yùn)行。
JVM執(zhí)行程序的過(guò)程 :
I.加載.class文件
II.管理并分配內(nèi)存
III.執(zhí)行垃圾收集
JRE(java運(yùn)行時(shí)環(huán)境)包含JVM的java程序的運(yùn)行環(huán)境[1]
JVM是Java程序運(yùn)行的容器,但是他同時(shí)也是操作系統(tǒng)的一個(gè)進(jìn)程,因此他也有他自己的運(yùn)行的生命周期,也有自己的代碼和數(shù)據(jù)空間。
JVM在整個(gè)jdk中處于最底層,負(fù)責(zé)與操作系統(tǒng)的交互,用來(lái)屏蔽操作系統(tǒng)環(huán)境,提供一個(gè)完整的Java運(yùn)行環(huán)境,因此也就虛擬計(jì)算機(jī).操作系統(tǒng)裝入JVM是通過(guò)jdk中Java.exe來(lái)完成,通過(guò)下面4步來(lái)完成JVM環(huán)境。
1.創(chuàng)建JVM裝載環(huán)境和配置
2.裝載JVM.dll
3.初始化JVM.dll并掛接到JNIENV(JNI調(diào)用接口)實(shí)例
4.調(diào)用JNIEnv實(shí)例裝載并處理class類(lèi)