java的一次編譯多次執行機制
阿新 • • 發佈:2019-02-15
JVM是一個java虛擬機器,所謂的java虛擬機器就是和普通的虛擬機器一樣,擁有自己的CPU,RAM之類的。我們所使用的作業系統是Windows的作業系統,Windows作業系統支援的可執行檔案是EXE檔案,也就是說在Windows的作業系統上只有EXE的檔案是可以直接被作業系統解釋為底層機器語言並進行執行的。而java虛擬機器可以支援的是.class的可執行檔案,在java的虛擬機器中遇到.class的檔案就可以直接翻譯成java虛擬機器所能是別的底層機器語言並進行執行。這就是JVM的機制,正是因為java的這種機制才實現了java的跨平臺,在不同的平臺上安裝能夠在相應平臺上執行的虛擬機器,然後在java虛擬機器中執行java的源程式,“一次編譯,多次執行”就此實現了。
所以java的跨平臺是離不開虛擬機器的支援的。虛擬機器充當著java源程式和作業系統之間的中間,不同的作業系統只需要尋找相應的中介就可以實現在不同的作業系統上執行。而java的編譯只是吧.java檔案編譯為.class位元組碼檔案而已,然後把位元組碼交給虛擬機器去執行。
虛擬機器在執行的時候是讀一句位元組碼檔案人後解釋一句給作業系統聽,這就是為什麼java是解釋型的語言。
所謂的編譯型的語言是指這種語言被編譯之後生成的是可以直接供作業系統執行的010101檔案,像C,C++都是編譯型的,java因為中間有JVM這麼個東西所以是解釋型的。
PS:為什麼有一種被java欺騙的感覺呢???