計算機高級語言按照程序的執行方式能夠分爲編譯型和解釋型兩種java
編譯型語言是指使用專門的編譯器,針對特定的平臺(操做系統)將某種高級語言源代碼一次性「翻譯」成可被該平臺硬件執行的機器碼(包括機器指令和操做數)。幷包裝成該平臺所能識別的可執行性程序的格式,這個轉換的過程成爲編譯,編譯生成的可執行程序能夠脫離開發環境,在特定的平臺上獨立運行。jvm
有些程序編譯結束後,還可能須要對其餘編譯好的目標代碼進行連接,即組裝兩個以上的額的目標代碼模塊生成最終的可執行程序,經過,這種方式實現低層次的代碼複用。操作系統
由於編譯型語言是一次性地編譯成機器碼,因此能夠脫離開發環境獨立運行,並且一般運行的效率較高,但由於編譯型語言的程序被編譯成特定平臺上的機器碼,所以編譯生成的可執行性程序一般沒法移植到其餘平臺上,若是須要移植,則必須將源代碼複製到特定的平臺上,針對特定的平臺進行修改,至少也須要採用特定平臺上的編譯器從新編譯。翻譯
現有的C 、C++/Pascal等高級語言都屬於編譯型語言。開發
解釋型語言是指使用專門的解釋器對源程序逐行進行解釋成特定平臺的機器碼並當即執行的語言。解釋型語言一般不會進行總體型的編譯和連接處理,解釋型語言至關於把編譯型語言中的編譯和解釋的過程混合到一塊兒去完成。編譯器
能夠認爲:每次執行解釋性語言的程序都須要進行一次編譯,所以解釋型語言的程序運行效率一般較低,並且不能脫離解釋器獨立運行,但解釋型語言有一個優點:跨平臺比較容易,只須要提供特定的平臺的解釋器便可,每一個特定平臺上的解釋器負責將源程序解釋成特定平臺的機器指令便可,解釋型語言能夠方便地實現源程序級的移植,但這也是以犧牲程序執行效率爲代價的,編譯
現有的Ruby、Python等語言都屬於解釋型語言。class
Java語言比較特殊,因爲Java語言的編寫的程序須要通過編譯的步驟,但這個編譯的步驟並不會生成特定的平臺的機器碼,而是生成一種與平臺無關的字節碼(也就是.class文件)。固然,這種字節碼是不可執行性的。必須使用Java解釋器來解釋執行。所以,能夠認爲:Java語言既是編譯型語言,也是解釋型語言。要通過這兩步驟。效率
java運行兩個步驟:jdk
jdk負責把java翻譯成和平臺無關的字節碼文件(class文件);
jvm負責字節碼在不一樣平臺執行;
JVM統一標準:
a,指令集
b,寄存器
c,類文件的格式
d,棧,
e,垃圾回收堆;
f,存儲區
其中1(abc),2(def)