天天看點

1. Java是編譯型語言還是解釋型語言?

一、了解什麼是編譯型語言和解釋型語言

首先,計算機是不能了解進階語言的、更不能直接執行進階語言,它隻能了解和執行機器語言,是以使用任何進階語言編寫的程式若想被計算機運作,都必須将其轉換成計算機語言,也就是機器碼。轉換的方式有兩種:編譯、解釋。

1. 編譯型語言

使用專門的編譯器,針對特定的平台(windows、linux、mac …),将進階語言源代碼一次性的編譯成可被該平台硬體執行的機器碼,并包裝成該平台所能識别的可執行程式的格式。

特點:

在編譯型語言寫的程式執行之前,需要一個專門的編譯過程,把源代碼編譯成機器語言的檔案,如exe格式的檔案,以後需要再運作時,直接使用編譯結果即可,如直接運作exe檔案。因為隻需要編譯一次,以後運作時不需要編譯,是以編譯型語言執行效率高。

總結:

  • 一次性編譯成平台相關的機器語言檔案,運作時脫離開發環境
  • 與特定平台相關,一般無法移植到其他平台
1. Java是編譯型語言還是解釋型語言?
2. 解釋型語言

使用專門的解釋器對源程式逐行解釋成特定平台的機器碼并立即執行。隻有代碼在執行時才被解釋器逐行動态翻譯和執行,而不是在執行之前先完成翻譯的工作。

特點:

解釋型語言不需要事先編譯,隻要某一平台提供了相應的解釋器即可執行該程式。

總結:

  • 解釋型語言每次運作都需要将源代碼解釋成機器碼再執行,效率較低
  • 隻要平台提供相應的解釋器,就可以運作源代碼,友善源程式移植
3. 二者對比

編譯型語言由于執行效率高,同等條件下對系統要求較低。因次像開發作業系統、大型應用程式、資料庫系統時采用它,如 C/C++、Pascal/Object Pascal(Delphi)等。

一些網頁腳本、伺服器腳本及輔助開發接口對速度要求不高、但對不同系統平台間的相容性有一定要求的程式則通常使用解釋型語言,如 Java、JavaScript、VBScript、Python、Ruby、MATLAB 等。

二、Java是編譯型語言還是解釋型語言?

Java語言比較特殊:

  • 可以說是編譯型的,因為所有的Java代碼都需要編譯,.java 源程式不經過編譯就什麼用都沒有
  • 可以說是解釋型的,因為 java代碼編譯後不能直接運作,它是解釋運作在JVM上的
  • 又可以說是編譯型的,因為JVM為了提高效率會有一些JIT優化,又會把 .class 的二進制代碼編譯為本地可執行的代碼運作

像 C、C++ 經過一次編譯、沒有經過第二次處理即可直接執行,固他們是編譯型語言。

Java首先由編譯器編譯成 .class 類型的檔案(并不是機器可識别的語言),然後通過虛拟機(JVM) 從 .class 檔案中讀一行解釋執行一行,所有應該算是解釋型語言。Java針對不同的平台有不同的 JVM,實作了真正意義上的跨平台。是以Java語言有一次編譯到處執行的說法。

Java 的虛拟機機制:

1. Java是編譯型語言還是解釋型語言?
1. Java是編譯型語言還是解釋型語言?

參考連結:

什麼是編譯型語言和解釋型語言?

Java到底是編譯型語言還是解釋型語言?