JAVA系列的文章均來自騰訊課堂的學習,自己進行學習記錄,也希望可以幫到大家:https://ke.qq.com/webcourse/index.html#cid=375599&term_id=100447257&taid=2866267900197679
1. C不是跨平臺的,而Java是跨平臺的
C是一次編寫,到處編譯:
C 經過編譯變成彙編語言,再經過彙編變成本地字節碼(native code),native code是直接在cpu上運行的,彙編語言的規範是指令集,而不同cpu的指令集是不同的,因此最終匯編出來的native code也是不同的,所以最終的本地字節碼(目標文件)不能隨便從一個平臺拿到另一個平臺用,即不是跨平臺的。
Java是一次編譯,到處運行:
jvm是java虛擬機,它是java實現跨平臺的關鍵。java程序編譯成class文件,我們稱爲字節碼(Byte Code),Byte Code最終是運行在jvm上的,而至於jvm是怎麼做到在多平臺上運行不是我們程序員需要關心的,也就是說我們從一個平臺拿到的Byte Code,可以放到不同平臺的jvm上運行,因此是跨平臺的。
2. JVM是跨語言的
JVM除了可以幫Java實現跨平臺性,還可以幫其他運行,只要其他語言也可以編譯出Byte Code,目前有以下語言可以運行在JVM上(圖片轉自https://www.cnblogs.com/jmsjh/p/7808764.html):
3. 一些縮寫
對於Java2,
J2SE(standard)是標準版
J2EE(enterprise)是企業版
J2ME(micro)是微型版