整體流程
1.首先由源程序文件編譯成class文件。注意這里的源程序并不僅限于java程序,其他語言如果能夠編譯成class文件,并且符合jvm規范也能夠在jvm上運行。
2.jvm將class文件拷貝到內存,解釋成相應的機器語言運行。我們常用的hotspot虛擬機在運行時會挑選出一些熱點代碼(以函數為單位),將這些熱點代碼直接編譯成機器碼存儲起來,下次執行的時候,就不需要jvm解釋,而是直接運行機器碼。
總結:由于java語言先編譯成字節碼,在運行時又會對代碼解釋成相關平臺的機器語言。所以java常被成為半編譯半解釋的混合型語言。
編譯型語言:在程序運行之前,有一個單獨的編譯過程,將程序翻譯成機器語言,以后執行這個程序時,就不用再進行翻譯了。
解釋型語言:是在運行的時候將程序翻譯成機器語言,所以運行速度相對于編譯型語言要慢。