JAVA編譯器(javac.exe)的做用是將java源程序編譯成中間代碼字節碼文件,是最基本的開發工具
JAVA解釋器(java.exe)(英語:Interpreter),又譯爲直譯器,是一種電腦程序,可以把高級編程語言一行一行直接轉譯運行。解釋器不會一次把整個程序轉譯出來,只像一位「中間人」,每次運行程序時都要先轉成另外一種語言再做運行,所以解釋器的程序運行速度比較緩慢。它每轉譯一行程序敘述就馬上運行,而後再轉譯下一行,再運行,如此不停地進行下去。html
如:java
public class Test {
public static void main(String[] args) {
System.out.println("hello world");
}
}編程
第一次運行代碼:編譯->解釋->生成機器碼(即生成Test.class文件)編程語言
在運行時,JIT會把翻譯過來的機器碼保存起來,以備下次使用。工具
第二次編譯:編譯->執行(JIT即時編譯,不用再生成.class文件,提升運行效率)性能
未修改源代碼的狀況下,不用再修改.class文件或生成相應的機器碼
開發工具
當程序須要迅速啓動和執行的時候,解釋器能夠首先發揮做用,省去編譯的時間,當即執行。
編譯器能夠逐漸發揮做用,把愈來愈多的代碼編譯成本地代碼,以後能夠得到更高的效率(佔內存)ui
解釋器與編譯器的交互:翻譯
HotSpot虛擬機中內置了兩個即時編譯器,分別稱爲Client Complier和Server Complier,
它會根據自身版本與宿主機器的硬件性能自動選擇運行模式,用戶也可使用"-client"或
"-server"參數去強制指定虛擬機運行在Client模式或Server模式
解釋器與編譯器搭配使用的方式:
一、默認(java -version混合模式)
二、解釋模式(java -Xint -version)僅使用解釋器方式執行
三、編譯模式(java -Xcomp -version)優先採用編譯方式執行程序,但解釋器要在編譯沒法進行的狀況下介入執行過程
C:\Users\Administrator>java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
C:\Users\Administrator>java -Xint -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, interpreted mode)server
C:\Users\Administrator>java -Xcomp -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, compiled mode)