2016-12-31 139 views

回答

2

使Java代碼平臺獨立。

更新
如果C-程序在特定平臺上編譯,那麼它會產生編譯的代碼,其能夠僅在其上對其進行編譯的平臺上運行的。在Windows機器上編譯的C程序不能在Linux/Unix/MacOS機器上運行。

Java的主要設計目標之一是使代碼與平臺無關。 這是通過在代碼編譯和代碼執行之間添加額外的步驟來實現的。這是生成「字節碼」的步驟。

將Java程序編譯成所謂的「字節碼」文件,其擴展名爲.class。字節碼實際上包含可由Java虛擬機解釋的指令。也就是說'javac'將Java程序轉換爲JVM可以理解的一組指令。

JVM - Java虛擬機,運行在操作系統之上,分別針對每個平臺(操作系統和底層硬件)實現。

通過這種設計,可以在Windows機器上編譯Java程序並在Linux機器上運行生成的.class文件,從而實現平臺獨立性。

+2

雖然這涉及到* a *的好處,但它遠非完整答案。請詳細說明這一點。 – Carcigenicate

+0

闡述了這一點。希望它有好處。 –

0

因爲這種方式可以爲具有定義的架構和指令集的JVM實現Java。不同的機器可以有自己的JVM,在這些JVM上可以執行Java程序,而不必擔心運行JVM的機器。此外,JVM中還添加了許多優化。

2

因爲任何具有JVM實現的機器都可以運行已編譯爲Java字節代碼的任何程序(理論上)。 Java字節碼也可以作爲不同語言可編譯的高級語言。當然,不同的語言可以被編譯成相同的機器代碼,但是將編譯的代碼綁定到一種類型的機器上,而不是非機器特定的字節代碼。

JVM實現還處理機器特定的細節,而不是應用程序員。這允許Java代碼取消通常使用c/C++中的預處理器解析的32/64位代碼變體。

相關問題