為什麼說java語言與平台無關?
一、平台與機器指令
無論哪種程式語言編寫的應用程式都需要經過作業系統和處理器來完成程式的運行,因此這裡的平台是由OS和CPU所構成的,所謂的平台無關就是指軟體的運作不會因為作業系統、處理器的變化而無法運作或出現運作錯誤。
每個平台都有自己獨特的機器指令,所謂平台的機器指令就是可以被該平台直接辨識、執行的一種由0和1組成的序列碼。相同的CPU和不同的OS所形成的平台的機器指令可能是不同的
推薦教程:《java學習》
二、何為與平台相關?
C/C 程式是依賴平台的:C/C 原始程式所在的特定平台對其原始檔案進行編譯、鏈接,產生機器指令,即根據當前平台的機器指令生成可執行文件,所以其可以在任何與目前平台相同的平台上運行這個可執行檔。但是,不能保證C/C 原始程式所產生的可執行檔在所有平台上都能正確的運行,原因是不同平台可能具有不同的機器指令。所以,一旦更換了平台,就可能需要修改原始程序,並針對新的平台重新編譯原始程序,也就是與平台相關。
C/C 程式無法跨平台的根本原因是C/C 原始程式的編譯器針對平台進行編譯,而不同的平台有不同的機器指令,所以無法跨平台。
三、Java為何可以跨平台
C/C 之所以不能跨平台,就是因為C/C 原始程式是對平台編譯的,所以與平台密切相關。如果有這樣的一個環境:它既可以向下相容(對平台相容),又可以向上相容(程式可以運行),那麼不就可以跨平台了嗎。基於這樣的原理,Java在電腦的作業系統上又提供了一個Java運行環境-JRE(安裝JDK)。
JRE由Java虛擬機,類別庫和一些核心檔案組成,也就是說,只要平台提供了Java運行環境,Java編寫的軟體就可以在其上運行。
和C/C 不同的是,Java語言提供的編譯器不是針對特定的作業系統和CPU晶片進行編程,而是針對Java虛擬機器把Java原始程式編譯成稱為字節碼的“中間代碼”,然後Java虛擬機負責將字節碼翻譯成虛擬機器所在平台的機器碼,並讓當前平台運行該機器碼。
Java語言的運作原理:
在一個電腦上編譯所得的字節碼檔案(就是.class檔案),可以複製到任何一個安裝了Java運作環境的電腦上直接運行。然後字節碼檔案由虛擬機器負責解釋執行,即Java虛擬機將字節碼翻譯成本地電腦的機器碼,然後將機器碼交給本地的作業系統運行。
由於在一個電腦上編譯得到的字節碼檔案可以複製到任何一個安裝了Java運行環境的電腦上直接使用,所以字節碼其實是一種“中間代碼”,這也就是為什麼“Java語言能夠一次編譯,處處運行,也就是Java跨平台的原因。”所以稱Java是一種“半編譯,半解釋的語言”,即源程序——>編譯——>字節碼——>字節碼解釋程式——>對應平台的機器語言。 ”
以上是為什麼說java語言與平台無關的詳細內容。更多資訊請關注PHP中文網其他相關文章!