日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

跨平台理论杂记

發(fā)布時(shí)間:2025/3/18 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 跨平台理论杂记 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

跨平臺(tái)理論雜記

1,
JVM也是一個(gè)軟件,不同的平臺(tái)有不同的版本。我們編寫(xiě)的Java源碼,編譯后會(huì)生成一種 .class 文件,稱(chēng)為字節(jié)碼文件。Java虛擬機(jī)就是負(fù)責(zé)將字節(jié)碼文件翻譯成特定平臺(tái)下的機(jī)器碼然后運(yùn)行。也就是說(shuō),只要在不同平臺(tái)上安裝對(duì)應(yīng)的JVM,就可以運(yùn)行字節(jié)碼文件,運(yùn)行我們編寫(xiě)的Java程序。

而這個(gè)過(guò)程中,我們編寫(xiě)的Java程序沒(méi)有做任何改變,僅僅是通過(guò)JVM這一”中間層“,就能在不同平臺(tái)上運(yùn)行,真正實(shí)現(xiàn)了”一次編譯,到處運(yùn)行“的目的。

JVM是一個(gè)”橋梁“,是一個(gè)”中間件“,是實(shí)現(xiàn)跨平臺(tái)的關(guān)鍵,Java代碼首先被編譯成字節(jié)碼文件,再由JVM將字節(jié)碼文件翻譯成機(jī)器語(yǔ)言,從而達(dá)到運(yùn)行Java程序的目的。

注意:編譯的結(jié)果不是生成機(jī)器碼,而是生成字節(jié)碼,字節(jié)碼不能直接運(yùn)行,必須通過(guò)JVM翻譯成機(jī)器碼才能運(yùn)行。不同平臺(tái)下編譯生成的字節(jié)碼是一樣的,但是由JVM翻譯成的機(jī)器碼卻不一樣。

所以,運(yùn)行Java程序必須有JVM的支持,因?yàn)榫幾g的結(jié)果不是機(jī)器碼,必須要經(jīng)過(guò)JVM的再次翻譯才能執(zhí)行。即使你將Java程序打包成可執(zhí)行文件(例如 .exe),仍然需要JVM的支持。

注意:跨平臺(tái)的是Java程序,不是JVM。JVM是用C/C++開(kāi)發(fā)的,是編譯后的機(jī)器碼,不能跨平臺(tái),不同平臺(tái)下需要安裝不同版本的JVM。

來(lái)自 <http://blog.csdn.net/u014683605/article/details/46620055>
2,
所謂跨平臺(tái),就是理論上你寫(xiě)了一份代碼,在任何平臺(tái)上執(zhí)行都會(huì)得到相同的結(jié)果。java和C#這些能跨平臺(tái)的語(yǔ)言其實(shí)并沒(méi)有編譯成本地代碼,而是編譯成中間語(yǔ)言,然后通過(guò)不同平臺(tái)的JVM或.net framework實(shí)現(xiàn)在不同平臺(tái)上運(yùn)行。C語(yǔ)言為什么可以在window和Linux上都能執(zhí)行?因?yàn)橄到y(tǒng)開(kāi)發(fā)者在開(kāi)發(fā)系統(tǒng)的時(shí)候均遵循了C語(yǔ)言規(guī)范,所以可以做到,但是你在Windows下編譯C生成的.exe文件,你是沒(méi)有可能在Linux下運(yùn)行的,反之亦然。

來(lái)自 <http://tieba.baidu.com/p/2989247025>
3,動(dòng)態(tài)與靜態(tài)語(yǔ)言
動(dòng)態(tài)類(lèi)型語(yǔ)言:在運(yùn)行期間檢查數(shù)據(jù)的類(lèi)型的語(yǔ)言。用這類(lèi)語(yǔ)言編程,不會(huì)給變量指定類(lèi)型,而是在附值時(shí)得到數(shù)據(jù)類(lèi)型。如:Python和ruby就是典型動(dòng) 態(tài)類(lèi)型語(yǔ)言。很多腳本語(yǔ)言vbscrīpt,javascrīpt也是這類(lèi)語(yǔ)言。看下面javascrīpt代碼:
function add(a,b){
return a+b;
}
add(1,2);
add('1',2);


靜態(tài)類(lèi)型語(yǔ)言:相反靜態(tài)類(lèi)型語(yǔ)言是在運(yùn)行前編譯時(shí)檢查類(lèi)型。在寫(xiě)代碼時(shí),沒(méi)聲明一個(gè)變量必須指定類(lèi)型。如:java,c#,c,c++等等。
public int add(int a,int b){
return a+b;
}
而Dynamic Programming Language (動(dòng)態(tài)編程語(yǔ)言)指在程序運(yùn)行過(guò)程中可以改變數(shù)據(jù)類(lèi)型的結(jié)構(gòu),對(duì)象的函數(shù),變量可以被修改刪除
網(wǎng)上有人說(shuō) 類(lèi)型檢查和改變結(jié)構(gòu) 是靜態(tài)語(yǔ)言和動(dòng)態(tài)語(yǔ)言?xún)蓚€(gè)區(qū)別點(diǎn)

posted on 2016-10-01 18:59 時(shí)空觀察者9號(hào) 閱讀(...) 評(píng)論(...) 編輯 收藏

總結(jié)

以上是生活随笔為你收集整理的跨平台理论杂记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。