一個操做所須要的代碼越多,越不免出現bug,也越南發現它們
C、C++,編譯器->本地機器代碼java
javaScript/shell/python,經過解釋器執行python
java經過JVM執行,有點兼顧,或者叫虛擬機語言吧
shell
python | java | java(JIT) |
---|---|---|
python解釋器 | java編譯器 | java編譯器 |
- | JVM | JVM |
- | 解釋器 | - |
C | C++ | - |
C編譯器 | C++編譯器 | JIT編譯器 |
-----------彙編語言-------------
------------彙編器--------------
-----------機器語言-------------
-------------硬件--------------
編程
JIT:just in time compiler,即時編譯,JIT試運行時環境的一部分,它把解釋型語言的可執行文件程序集轉換到原生可執行代碼.jvm
源代碼
詞法分析器
Token流
語法分析器
語法樹(抽象)
語義分析器
註解抽象語法樹
字節碼生成器
JVM字節碼(class文件)
編程語言
JVM字節碼(class文件)
JIT編譯器
字節碼解釋器
優化
機器無關優化
中間代碼
機器相關優化
中間代碼
寄存器分配器
中間代碼
目標代碼生成器
目標代碼
加密