JAVA語言為什么能跨平臺(tái)?
因?yàn)?/span>Java程序編譯之后的代碼不是能被硬件系統(tǒng)直接運(yùn)行的代碼,而是一種“中間碼”——字節(jié)碼。然后不同的硬件平臺(tái)上安裝有不同的Java虛擬機(jī)(JVM),由JVM來把字節(jié)碼再“翻譯”成所對(duì)應(yīng)的硬件平臺(tái)能夠執(zhí)行的代碼。因此對(duì)于Java編程者來說,不需要考慮硬件平臺(tái)是什么。所以Java可以跨平臺(tái)。
因?yàn)樗刑摂M機(jī)(JVM),JAVA程序不是直接在電腦上運(yùn)行的,是在虛擬機(jī)上進(jìn)行的,每個(gè)系統(tǒng)平臺(tái)都是有自己的虛擬機(jī)(JVM),所以JAVA語言能跨平臺(tái)。
java代碼不是直接運(yùn)行在CPU上,而是運(yùn)行在java虛機(jī)(簡稱JVM)上的。
java是先把java文件編譯成二進(jìn)制字節(jié)碼的class文件,jvm就解釋執(zhí)行class文件。
就是因?yàn)?/span>java是運(yùn)行在jvm上的,所以它的代碼就能不經(jīng)修改,就能在不同平臺(tái)的jvm上運(yùn)行(在UNIX用UNIX的jvm,在linux上用linux的jvm,在windows上用windows的jvm)
假如用windows移植到UNIX,只需把java文件是UNIX的jvm上編譯成class文件,然后用jvm運(yùn)行就可以了.
Java虛擬機(jī)(Java Virtual Machine) 簡稱JVM
Java為什么能跨平臺(tái),.NET為什么能跨語言?
Java之所以能跨平臺(tái),是因?yàn)閖ava虛擬機(jī)能跨平臺(tái)。
.NET之所以能跨語言,就簡單的說吧 任何代碼在最終要變成機(jī)器語言,所以 對(duì)于機(jī)器來說無論你用才C# 還是VB.NET 最后的意思表達(dá)都是一樣的, 只不過機(jī)器在中做了翻譯的過程; 中間有N 多專有名詞 反正都是通過.net Framework 所謂的虛擬機(jī)。JAVA 也是這套機(jī)制 只不過。NET 有MSIL 好象就是微軟的公共語言什么的
聯(lián)系客服