Java究竟是編譯型語言仍是解釋型語言?

轉載自網絡javascript

Java這個語言很神奇:java

  • 你能夠說它是編譯型的。由於全部的Java代碼都是要編譯的,.java不通過編譯就什麼用都沒有。
  • 你能夠說它是解釋型的。由於java代碼編譯後不能直接運行,它是解釋運行在JVM上的,因此它是解釋運行的,那也就算是解釋的了。
  • 可是,如今的JVM爲了效率,都有一些JIT優化。它又會把.class的二進制代碼編譯爲本地的代碼直接運行,因此,又是編譯的。

像C、C++ 他們通過一次編譯以後直接能夠編譯成操做系統瞭解的類型,能夠直接執行的 因此他們是編譯型的語言。沒有通過第二次的處理 而Java不同他首先由編譯器編譯成.class類型的文件,這個是java本身類型的文件 而後在經過虛擬機(JVM)從.class文件中讀一行解釋執行一行,因此他是解釋型的語言,而因爲java對於多種不一樣的操做系統有不一樣的JVM因此 Java實現了真正意義上的跨平臺! 網絡

請觀看下面兩張圖 瞭解一下Java的虛擬機機制:jvm

Java的編譯-->解釋-->執行過程優化

Java的虛擬機 spa

今天聽到同事在討論java是哪一種類型的語言(編譯型、解釋型),之前稍微有些接觸,可是概念比較模糊,爲了避免至於讓別人的思想左右本身,因此查了些資料,找到了不少熱心網友給出的答案,終於有些明白。這裏先給出編譯型語言和解釋型語言的定義和區別。操作系統

  • 編譯型語言:把作好的源程序所有編譯成二進制代碼的可運行程序。而後,可直接運行這個程序。
  • 解釋型語言:把作好的源程序翻譯一句,而後執行一句,直至結束!
  • 編譯型語言,執行速度快、效率高;依靠編譯器、跨平臺性差些。
  • 解釋型語言,執行速度慢、效率低;依靠解釋器、跨平臺性好。

我的認爲,java是解釋型的語言,由於雖然java也須要編譯,編譯成.class文件,可是並非機器能夠識別的語言,而是字節碼,最終仍是須要 jvm的解釋,才能在各個平臺執行,這同時也是java跨平臺的緣由。因此但是說java便是編譯型的,也是解釋型,可是假如非要歸類的話,從概念上的定義,恐怕java應該歸到解釋型的語言中。翻譯

  • 編譯型的語言包括:C、C++、Delphi、Pascal、Fortran
  • 解釋型的語言包括:Java、Basic、javascript
相關文章
相關標籤/搜索