2015年10月15日 星期四

Java 學習日誌 006:Byte-Code與Java Virtual Machine


大多數的程式語言被設計為讓人類(相對)易於撰寫與閱讀。這些語言被稱為high-level landuage(高階語言);而那些能直接能被電腦所瞭解的語言,稱之為machine language(機械語言)。Machine language或是類似machine language的語言就被稱為low-level language(低階語言)。一段以high-level language撰寫的程式語言,像是Java,必須要被翻譯成machine language之後,才能被運算。這個翻譯的程式就是我們之前提到的compiler(編譯器),而這個翻譯的過程就被稱為compiling(編譯)。

大多數程式語言的共同缺點是,他們的compiler直接翻譯high-level langusge成machine language,但是由於不同的電腦需要不同的machine language,所以就需要不同的compiler去為不同的電腦翻譯,而Java則採用了一種稍微不同的方式、一種更為通用的方式。

儘管某些版本的Java可以為特定的電腦直接翻譯你的程式為machine language,但最原始的與現今大多數的Java compiler則不這麼做,而是將你的Java程式翻譯成我們之前有提到的byte-code。Byte-code並不是專給某類電腦讀取的machine language,而是給一種稱為Java Virtual Machine(JVM)的虛擬電腦所讀取。 Java Virtual Machine與典型的電腦很相似,因此,能輕易地將一個以byte-code撰寫的程式翻譯為任何特定電腦能讀取的machine language。

我們把之前圖解過的「Java程式語言的由來與邏輯」再解釋的更詳細些,就會如下圖所示

參考資料:Walter Savitch. Absolute Java. 5th ed.

沒有留言:

張貼留言