2014-09-04 63 views
1

我是Java的新手,有人澄清我對平臺無關性的疑問,我知道Java是獨立於平臺的語言,JVM是平臺相關的,但是獨立於Java編譯器平臺?是Javac是獨立於平臺

回答

3

有涉及您的問題四大要素:

  1. 爲你的程序
  2. javac編譯
  3. ,當它編譯源代碼的編譯器生成的字節代碼的Java源代碼
  4. 執行字節碼以運行程序的Java虛擬機(JVM)。 (這是在鍵入java MyMainClass時運行的程序。)

項目1和3與平臺無關(除非程序使用平臺相關的外部庫)。第2項和第4項是依賴於平臺的(即每個平臺 - Windows,Linux,Mac等 - 使用它自己的javac版本和JVM)。

結果是,您可以在任何運行javac的平臺上編譯您的Java程序,然後在相同平臺或任何其他具有JVM的平臺上執行程序。

+0

謝謝@Ted Hopp清除解釋 – Linguistic 2014-09-04 05:51:33

2

沒有javac不是獨立於平臺,每個平臺都有的javac

自己的可執行文件的形式,即你不能在Linux的JDK複製到Windows和期望它的工作

+2

@AnandMishra - 那麼請高舉答案。贊成評論更好。 – TheLostMind 2014-09-04 05:42:07

+0

謝謝@Jigar Joshi爲你解答。 – Linguistic 2014-09-04 05:49:18

+0

downvoter在這裏留下原因 – 2014-09-04 05:51:02

0

技術上,JVM不平臺無關,你必須下載這些工具的平臺特定版本。 java編譯器生成與平臺無關的字節代碼(.class文件)

1

java編譯器的(實現)不是平臺獨立的。它將源代碼編譯爲平臺相關的字節碼,由執行的平臺相關的 JVM。

0

在窗口javac似乎在.exe格式,這意味着它是平臺相關的。每個平臺都有不同的java編譯器。