標籤:重新編譯 編譯 nbsp 相同 style isp com size 軟體
Java出現之前,C和C++是當時廣泛使用的程式設計語言。但是C和C++都有一個共同的缺點,那就是只能在特定的平台進行編譯。這裡指的平台是由作業系統(OS)和處理器(CPU)構成的。C和C++來源程式所在的特定平台對其源檔案進行編譯、串連,產生當前平台的機器指令(平台的機器指令可以被該平台直接識別和執行),根據當前平台的機器指令產生可執行檔。那麼,在任何與當前平台相同的平台上都可以運行這個可執行檔。但每個平台都會形成自己獨特的機器指令,相同的CPU和不同的作業系統所形成的平台的機器指令可能是不同的。假如電器的裝置更換了,平台就不能保證程式能正確運行。這個時候可能需要修改來源程式,並針對新的平台重新編譯來源程式。而Java最大的優勢就是編寫的軟體能在所有的電腦上運行。之所以能做到這一點,是因為Java可以在電腦的作業系統之上再提供一個Java運行環境(Java Runtime Environment--JRE),該運行環境是由Java虛擬機器(Java Virtual Machine--JVM)、類庫以及一些核心檔案組成。Java虛擬機器的核心是位元組碼指令(位元組碼指令可以被Java虛擬機器直接識別和執行),位元組碼指令不是機器指令,因此它不與特定的平台相關。而Java針對不同平台提供的Java虛擬機器的位元組碼指令是相同的,先看看Java程式的運行過程:
Java語言提供的編譯器不針對特定的平台進行編譯,而是針對Java虛擬機器編譯成位元組碼(稱為“中間代碼”),位元組碼被Java虛擬機器(Java解譯器是Java虛擬機器的一部分)解釋、運行。Java虛擬機器將位元組碼翻譯成本機電腦的機器指令,並將機器指令交給平台運行。
是本篇部落格的整理。為了更方便清晰的理解,我們可以腦補一個劇場:維奇多去了英國留學,憑藉流利的英語和英俊的外表,他認識了很多英國朋友。有一天,他遇到了一個充滿羅曼蒂克風情的法國美女。但很可惜,他不會法語,她不會英語,所以他們無法交流。橙汁是一個富二代,雖然他只會中文,但是他有錢,僱傭了一個萬能翻譯官,一起環遊世界美滋滋呀無壓力呀。
腦補完劇情,有沒有更好的協助你理解呢?總之,只要平台提供了Java運行環境,用Java編寫的軟體就能在其上運行。
本劇終。
Java的特點之一——跨平台