Java虛擬機(jī)的本質(zhì)是實(shí)現(xiàn)Java代碼在不同操作系統(tǒng)下無差別執(zhí)行,可以實(shí)現(xiàn)“一次編寫,到處執(zhí)行”的效果。虛擬機(jī)就是一個(gè)虛擬的計(jì)算機(jī),可以編譯字節(jié)碼實(shí)現(xiàn)不同平臺(tái)的跨越。
Java虛擬機(jī)類似于一個(gè)萬能翻譯人員(JVM),他會(huì)將你說的漢語(字節(jié)碼)翻譯成不同的語言(不同的操作系統(tǒng)的不同指令),比如英語(Windows),法語(Linux),德語(Unix),日語(Mac),而這些語言可以幫助他們理解你說的話,可以讓他們聽了你的話后去干一些事情(執(zhí)行機(jī)器命令)。至于這個(gè)萬能翻譯人員是怎么翻譯的,你可以不用管。
這個(gè)萬能翻譯是怎么翻譯的?其實(shí)很簡單,首先他要聽懂你說的漢語(類裝載器接收),然后他要組織好完整的翻譯語言,不能出錯(cuò)(字節(jié)碼校驗(yàn)器校驗(yàn)),最后他要把你說的漢語翻譯成別人能聽懂的外語(解釋器解釋,或者JIT編譯器編譯)。
通過這個(gè)形象的比喻,我們可以更好的理解Java虛擬機(jī)的工作原理。