华南俳烁实业有限公司

java

當(dāng)前位置:中華考試網(wǎng) >> java >> java基礎(chǔ) >> 文章內(nèi)容

Java虛擬機(jī)(JVM)以及跨平臺(tái)原理

來(lái)源:中華考試網(wǎng)  [2020年12月7日]  【

  Java具有跨平臺(tái)的特性,可以“一次編譯,到處運(yùn)行”,在Windows下編寫的程序,無(wú)需任何修改就可以在Linux下運(yùn)行,這是C和C++很難做到的。

  那么,跨平臺(tái)是怎樣實(shí)現(xiàn)的呢?這就要談及Java虛擬機(jī)(Java Virtual Machine,簡(jiǎn)稱 JVM)。

java課程免費(fèi)學(xué)習(xí),高薪觸手可得

  • 地區(qū):
  • 姓名:
  • 手機(jī):

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

  而這個(gè)過(guò)程中,我們編寫的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。

責(zé)編:yangliu1997

上一篇:Java語(yǔ)言概述

下一篇: 沒(méi)有了

  • 會(huì)計(jì)考試
  • 建筑工程
  • 職業(yè)資格
  • 醫(yī)藥考試
  • 外語(yǔ)考試
  • 學(xué)歷考試
江油市| 城市| 威远县| 台东县| 遂昌县| 沭阳县| 吉木萨尔县| 定南县| 永和县| 开远市| 罗田县| 宣化县| 江源县| 徐汇区| 武陟县| 潮州市| 霍州市| 城步| 拜泉县| 南澳县| 甘孜县| 定陶县| 扶绥县| 囊谦县| 聂拉木县| 兴业县| 长沙县| 循化| 宁安市| 定远县| 保德县| 太谷县| 遵义市| 沈丘县| 房产| 临沭县| 秦皇岛市| 双桥区| 垣曲县| 商丘市| 治县。|