1. 程式人生 > >編譯器和解釋器

編譯器和解釋器

兩個 情況 嚴格 解釋器 ava 機器 解釋執行 可執行 做到

先盜一張圖:

技術分享

一般來說,編譯器是運行前將代碼編譯成二進制文件,其包含的是可直接執行的機器指令;解釋器則是運行時,一條一條將代碼解釋成平臺可執行的機器指令。看上去是編譯器比解釋器快,是因為執行的是已經編譯好的機器指令,而解釋器每次運行的都會解釋執行。實質上,編譯器編譯代碼時間加上執行時間要比解釋器多。

JAVA嚴格來說是半編譯半解釋的語言。

技術分享

如上圖所示,java是先編譯成字節碼(非純二進制代碼),即由.java文件編譯成.class文件,再由JVM解釋器解釋執行。

現在解釋兩個問題:

1、為什麽JAVA執行相對比較快?

那是JVM解釋的是編譯後的字節碼,這比直接解釋源碼要快。

2、為什麽JAVA可以跨平臺?

首先,編譯器執行後的程序所有情況下都可以直接運行的,還要看平臺的系統,不同系統執行不同的編譯版本。

而JVM可以跨平臺安裝,其解釋執行的階段把.class文件中的字節碼解釋成對應平臺可執行的機器指令,所以java代碼可以做到跨平臺執行。

編譯器和解釋器