1. 程式人生 > >學習筆記 --- JVM JIT與JVM,編譯器與直譯器

學習筆記 --- JVM JIT與JVM,編譯器與直譯器

JVM---包括直譯器
JVM:是java的核心和基礎,在java編譯器和os平臺之間的虛擬處理器。它是一種利用軟體方法實現的抽象的計算機基於下層的作業系統和硬體平臺,可以在上面執行java的位元組碼程式。 java編譯器只要面向JVM,生成JVM能理解的程式碼或位元組碼檔案。Java原始檔經編譯成位元組碼程式,通過JVM將每一條指令翻譯成不同平臺機器碼,通過特定平臺執行。 

編譯器

Java語言寫的源程式通過Java編譯器,編譯成與平臺無關的‘位元組碼程式’(.class檔案,也就是0,1二進位制程式),然後在OS之上的Java直譯器中解釋執行。 

直譯器

JVM(java虛擬機器)包括直譯器,不同的JDK虛擬機器是相同的,直譯器不同

 

Java 跨平臺的原因  解釋型語言

  • .class檔案不是機器可以識別的語言,而是位元組碼,最終還是需要 jvm(直譯器)的解釋
  • 不同的作業系統有不同的JVM, Java實現了真正意義上的跨平臺

C、C++ 他們經過一次編譯之後直接可以編譯成作業系統瞭解的型別,可以直接執行的 所以他們是編譯型的語言。

Java不一樣他首先由編譯器編譯成.class型別的檔案,這個是java自己型別的檔案,然後在通過虛擬機器(JVM)從.class檔案中讀一行解釋執行一行,所以他是解釋型的語言,

現在的JVM為了效率,都有一些JIT優化。它又會把.class的二進位制程式碼編譯為本地的程式碼直接執行,所以,又是編譯的。

 

JIT與JVM

 Java JIT(just in time)即時編譯器 : 它其實是將位元組碼編譯為硬體可執行的機器碼

JIT與JVM的三種執行模式:解釋模式、編譯模式、混合模式
參考:https://www.cnblogs.com/lyhero11/p/5080306.html

 

附:

定義: 
編譯型語言:把做好的源程式全部編譯成二進位制程式碼的可執行程式。然後,可直接執行這個程式。 
解釋型語言:把做好的源程式翻譯一句,然後執行一句,直至結束!
區別: 
編譯型語言,執行速度快、效率高;依靠編譯器、跨平臺性差些。 
解釋型語言,執行速度慢、效率低;依靠直譯器、跨平臺性好。 

 

參考:
https://blog.csdn.net/qzc70919700/article/details/72515022
https://blog.csdn.net/u014647208/article/details/78329187  有圖有真相