2015-04-21 115 views
-2

Java說「寫一次,到處跑」。甚至像C,C++等其他語言也只寫了一次,但每次平臺變化時都只重新編譯一次。因此,它不應該成爲「編譯一次,到處運行」,對於Java編程的新手來說更加清晰和精確?Java平臺獨立性

+0

我懷疑模棱兩可的措辭是新手Java程序員的最大障礙。 – Kayaman

+0

在學習java近一年後,我明白了這個概念。 –

+0

你今天而不是一年前瞭解它是否重要?學習Java更難嗎?如果你從一開始就知道你會更高級一些嗎? – Kayaman

回答

1

當您編譯.java文件時,它會生成一個.class文件,這個文件被稱爲Byte Code,當我們談論C/C++時,情況並非如此。

現在生成的字節碼可以在任何地方運行(不論平臺),只要機器上有JVM。

當我們說寫一次就意味着要產生一段可用的代碼,現在你可以不執行,你得在執行前編譯一個.java文件,所以沒有必要提一次編譯明確。

最後,所有重要的是你應該理解的概念,而不是單詞。

1

C++使用單個編譯器將C++代碼編譯爲基於Unix/Linux操作系統的.exe(用於Windows的可執行文件格式)和.out或ELF文件格式。所以它會生成一個物理的可執行文件(位代碼格式),它專門針對它遵循的操作系統。

現在在Java的情況下,我們的源代碼(.java)文件將被編譯爲.class文件(字節代碼格式),然後每個操作系統將擁有自己的JRE版本(Java Run-time Environment)這是一個解釋器,幫助運行/執行生成的.class文件到OS內存(將其轉換爲位代碼格式)。所以在這種情況下,我們只需要編譯器來編譯我們的類,解釋器將幫助在相應的操作系統中執行那個類。換句話說,對於Java來說,編譯一次就可以執行。

如果我們想在一個平臺上編寫一次並運行到C++的不同平臺方法,我們可能會遵循以下兩個步驟中的任何一個。

  1. 我們可以在一個特定的操作系統中編寫一次,並採用相同的源代碼到不同的操作系統,然後在不同的平臺上重新編譯和執行相同的代碼。另一種方法是,一旦我們在windows中生成我們的.exe文件,然後轉到Linux並使用像'Wine'這樣的移植工具/軟件,它將能夠在Linux上通過windows模擬和類似的方式實際運行windows .exe文件應該有工具通過仿真在Windows上運行Linux .out文件。

仍然沒有一種方法可以被認爲是用於C++的WORA概念。 更多相關Java不是唯一的跨平臺語言存在,還有其他語言如C#等也都遵循相同的概念在編譯時不生成位代碼格式,因爲位代碼只是機器/平臺或操作系統特定的。

我希望你現在清楚瞭解它。