爲什麼Java可以跨平臺c/c++不可以嗎

Java是解釋型語言,在不同操作系統上運行Java時,由與該操作系統上對應的Java虛擬機(JVM)對其對其翻譯,逐條代碼解釋爲該操作系統識別的東東。所以Java跨平臺的前提是它所要跨的平臺上事先裝有對應的Java虛擬機。在滿足這個前提的基礎上Java編譯出的.class文件才能實現所謂的跨平臺。(注意:Java虛擬機並不是跨平臺的,不同的操作系統有不同的Java虛擬機)

其實微軟的C#也是類似於Java的解釋性語言,同樣也可以跨Linux和Unix等操作系統,只不過微軟並沒有針對除windows外的操作系統開發C#虛擬機(個人猜測,可能是更多地推廣windows操作系統),不過Novell開發的Mono可以讓你在Linux下使用C#………………(知識有限,具體爲什麼C#在跨平臺方面的名聲不如Java這裏不做分析)。

c/c++是編譯型語言,編譯型語言的代碼在某平臺編譯後的文件可以在該平臺下直接運行,不依賴於虛擬機,因此運行速度要高於解釋型語言。事實上,只要在不同的操作系統裝有支持c/c++的編譯器,c/c++同樣可以在該操作系統上運行。

總結:Java編譯生成的文件通過JVM執行,支持Java的操作系統都是裝有相應的JVM的。c/c++編譯成的文件可以直接在操作系統上運行,是針對不同的操作系統的。所以說,Java的執行文件依賴於JVM,不同的操作系統可以有不同的JVM來爲同一個Java服務,而c/c++的執行文件依賴於操作系統,面對不同的操作系統只好再次編譯才能運行。

  總之,Java是編譯文件級的跨平臺,c/c++是源代碼級的跨平臺。

感悟:尼瑪,表達能力不好真是不行,還得好好練練。

QQ:871632302


免責聲明:知識有限,有理解不到位的地方請諒解並及時幫忙糾正。歡迎一起討論,謝謝!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章