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


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

定義

回答這個問題,我們首先來看下概念:

開發人員編寫代碼,語言是人類可理解的方式,是具有語義的,然而計算機無法理解和執行,因此需要做一層轉換。

解釋型語言:

  • 運行時,由專門的解釋器將代碼解釋成機器可運行的機器語言。這種方式副作用就是執行效率會差一些。但是只要解釋器支持不同平台,代碼是不需要變動的,可移植性好。
  • 編譯型語言:將源碼一次性編譯成計算機可識別的機器語言,結果往往以可執行文件的形式存在,例如C、C++等。由於事前編譯,具有運行速度快的特點,但是面對不同的操作系統,可移植性較差。

分析

回過頭來看Java,我們知道,Java代碼執行前需要先編譯成class文件,再交由JVM執行。因此從這一過程來看,Java可以稱之為編譯型語言。

然而,class文件的內容屬於一種中間語言,計算機無法直接識別,仍然需要由JVM解釋成機器語言執行,因此這個角度來說,可以稱之為解釋型語言。

 拓展

那么Java為什么要這么設計呢?

個人理解:

  1. Java能這么強勢的列於開發語言之林這么多年,不光是因為開源和豐富的第三方庫,還因為其平台無關性。而平台無關性正是因為JVM的存在,所以設計之初就是解釋型的。
  2. 源文件需要進行的解釋步驟前,還需要進行語法檢查、語義分析等復雜過程,影響解釋效率。而先將源文件編譯成class,省去了這個步驟;同時因為編譯成class(字節碼),文件大小也會小很多,有利於移植和跨平台

綜上,我認為Java設計之初就考慮到了:可移植型和效率的兼顧。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM