我是Java的新手,有人澄清我對平臺無關性的疑問,我知道Java是獨立於平臺的語言,JVM是平臺相關的,但是獨立於Java編譯器平臺?是Javac是獨立於平臺
回答
有涉及您的問題四大要素:
- 爲你的程序
- javac編譯
- ,當它編譯源代碼的編譯器生成的字節代碼的Java源代碼
- 執行字節碼以運行程序的Java虛擬機(JVM)。 (這是在鍵入
java MyMainClass
時運行的程序。)
項目1和3與平臺無關(除非程序使用平臺相關的外部庫)。第2項和第4項是依賴於平臺的(即每個平臺 - Windows,Linux,Mac等 - 使用它自己的javac版本和JVM)。
結果是,您可以在任何運行javac的平臺上編譯您的Java程序,然後在相同平臺或任何其他具有JVM的平臺上執行程序。
沒有javac
不是獨立於平臺,每個平臺都有的javac
自己的可執行文件的形式,即你不能在Linux的JDK複製到Windows和期望它的工作
@AnandMishra - 那麼請高舉答案。贊成評論更好。 – TheLostMind 2014-09-04 05:42:07
謝謝@Jigar Joshi爲你解答。 – Linguistic 2014-09-04 05:49:18
downvoter在這裏留下原因 – 2014-09-04 05:51:02
技術上,JVM不平臺無關,你必須下載這些工具的平臺特定版本。 java編譯器生成與平臺無關的字節代碼(.class文件)
java編譯器的(實現)不是平臺獨立的。它將源代碼編譯爲平臺相關的字節碼,由執行的平臺相關的 JVM。
在窗口javac
似乎在.exe
格式,這意味着它是平臺相關的。每個平臺都有不同的java編譯器。
- 1. 是Runtime.getRuntime()。exec()平臺獨立的嗎?
- 2. .pyc平臺是獨立的嗎?
- 3. Eclipse平臺是獨立的嗎?
- 4. C++ std庫平臺是獨立的嗎?
- 5. .winmd文件平臺是獨立的嗎?
- 6. Silverlight平臺是獨立的嗎?
- 7. 獨立於平臺的OSGi控制檯
- 8. 平臺獨立流
- 9. 什麼是獨立於平臺的訪問SBO的方式?
- 10. .NET是獨立於平臺/架構的「雙重」算法嗎?
- 11. 獨立於Java的usb輸入平臺
- 12. 獨立於平臺的屏保與Qt
- 13. 獨立於平臺的資源管理
- 14. 獨立於平臺的時間計算
- 15. #ifdef用CMake獨立於平臺的DEBUG
- 16. Python中的SFTP? (獨立於平臺)
- 17. 獨立於平臺的付費安裝
- 18. 獨立於平臺的/ dev/C++中
- 19. Java平臺獨立性
- 20. GenericPortlet - FileUpload平臺獨立
- 21. 平臺獨立的c + + DLL
- 22. 平臺獨立.proj文件
- 23. 在獨立於平臺的設計中傳遞特定於平臺的數據?
- 24. 目標文件平臺是獨立的嗎?
- 25. JavaFX的默認字體平臺是獨立的嗎?
- 26. 是否有可能使C/C++平臺獨立
- 27. sqlite3數據庫是平臺獨立的嗎?
- 28. 序列化文件平臺是獨立的嗎?
- 29. 設計「獨立於平臺」的GWT服務器的最佳方式是什麼?
- 30. 獨立於C數學庫和平臺獨立的Python數學庫?
謝謝@Ted Hopp清除解釋 – Linguistic 2014-09-04 05:51:33