java語(yǔ)言與平臺(tái)有什么關(guān)系-創(chuàng)新互聯(lián)

今天小編給大家分享的是java語(yǔ)言與平臺(tái)有什么關(guān)系,相信很多人都不太了解,為了讓大家更加了解java語(yǔ)言與平臺(tái)的關(guān)系,所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。一定會(huì)有所收獲的哦。

成都網(wǎng)站制作,成都營(yíng)銷(xiāo)型網(wǎng)站-成都創(chuàng)新互聯(lián)科技公司專(zhuān)注營(yíng)銷(xiāo)型網(wǎng)站建設(shè)及定制型網(wǎng)站開(kāi)發(fā)。致力為您建設(shè)最有價(jià)值的網(wǎng)站,服務(wù)熱線:028-86922220。

java語(yǔ)言與平臺(tái)有什么關(guān)系

為什么說(shuō)java語(yǔ)言與平臺(tái)無(wú)關(guān)?

一、平臺(tái)與機(jī)器指令

無(wú)論哪種編程語(yǔ)言編寫(xiě)的應(yīng)用程序都需要經(jīng)過(guò)操作系統(tǒng)和處理器來(lái)完成程序的運(yùn)行,因此這里的平臺(tái)是由OS和CPU所構(gòu)成的,所謂的平臺(tái)無(wú)關(guān)就是指軟件的運(yùn)行不會(huì)因操作系統(tǒng)、處理器的變化而無(wú)法運(yùn)行或出現(xiàn)運(yùn)行錯(cuò)誤。

每個(gè)平臺(tái)都有自己獨(dú)特的機(jī)器指令,所謂平臺(tái)的機(jī)器指令就是可以被該平臺(tái)直接識(shí)別、執(zhí)行的一種由0和1組成的序列代碼。相同的CPU和不同的OS所形成的平臺(tái)的機(jī)器指令可能是不同的

二、何為與平臺(tái)相關(guān)?

C/C++程序是依賴(lài)平臺(tái)的:C/C++源程序所在的特定平臺(tái)對(duì)其源文件進(jìn)行編譯、鏈接,生成機(jī)器指令,即根據(jù)當(dāng)前平臺(tái)的機(jī)器指令生成可執(zhí)行文件,所以其可以在任何與當(dāng)前平臺(tái)相同的平臺(tái)上運(yùn)行這個(gè)可執(zhí)行文件。但是,不能保證C/C++源程序所產(chǎn)生的可執(zhí)行文件在所有平臺(tái)上都能正確的運(yùn)行,其原因是不同平臺(tái)可能具有不同的機(jī)器指令。所以,一旦更換了平臺(tái),就可能需要修改源程序,并針對(duì)新的平臺(tái)重新編譯源程序,也就是與平臺(tái)相關(guān)。

C/C++程序無(wú)法跨平臺(tái)的根本原因是C/C++源程序的編譯器針對(duì)平臺(tái)進(jìn)行編譯,而不同的平臺(tái)有不同的機(jī)器指令,所以無(wú)法跨平臺(tái)。

三、Java為何可以跨平臺(tái)

C/C++之所以不能跨平臺(tái),就是因?yàn)镃/C++源程序是對(duì)平臺(tái)編譯的,所以與平臺(tái)密切相關(guān)。如果有這樣的一個(gè)環(huán)境:它既可以向下兼容(對(duì)平臺(tái)兼容),又可以向上兼容(程序可以運(yùn)行),那么不就可以跨平臺(tái)了嗎?;谶@樣的原理,Java在計(jì)算機(jī)的操作系統(tǒng)上又提供了一個(gè)Java運(yùn)行環(huán)境——JRE(安裝JDK)。

JRE由Java虛擬機(jī),類(lèi)庫(kù)和一些核心文件組成,也就是說(shuō),只要平臺(tái)提供了Java運(yùn)行環(huán)境,Java編寫(xiě)的軟件就可以在其上運(yùn)行。

和C/C++不同的是,Java語(yǔ)言提供的編譯器不針對(duì)特定的操作系統(tǒng)和CPU芯片進(jìn)行編程,而是針對(duì)Java虛擬機(jī)把Java源程序編譯成稱(chēng)為字節(jié)碼的“中間代碼”,然后Java虛擬機(jī)負(fù)責(zé)將字節(jié)碼翻譯成虛擬機(jī)所在平臺(tái)的機(jī)器碼,并讓當(dāng)前平臺(tái)運(yùn)行該機(jī)器碼。

Java語(yǔ)言的運(yùn)行原理:

在一個(gè)計(jì)算機(jī)上編譯得到的字節(jié)碼文件(就是.class文件),可以復(fù)制到任何一個(gè)安裝了Java運(yùn)行環(huán)境的計(jì)算機(jī)上直接運(yùn)行。然后字節(jié)碼文件由虛擬機(jī)負(fù)責(zé)解釋執(zhí)行,即Java虛擬機(jī)將字節(jié)碼翻譯成本地計(jì)算機(jī)的機(jī)器碼,然后將機(jī)器碼交給本地的操作系統(tǒng)運(yùn)行。

由于在一個(gè)計(jì)算機(jī)上編譯得到的字節(jié)碼文件可以復(fù)制到任何一個(gè)安裝了Java運(yùn)行環(huán)境的計(jì)算機(jī)上直接使用,所以字節(jié)碼其實(shí)是一種“中間代碼”,這也就是為什么“Java語(yǔ)言能夠一次編譯,處處運(yùn)行,也就是Java跨平臺(tái)的原因?!彼苑Q(chēng)Java是一種“半編譯,半解釋的語(yǔ)言”,即源程序——>編譯——>字節(jié)碼——>字節(jié)碼解釋程序——>對(duì)應(yīng)平臺(tái)的機(jī)器語(yǔ)言?!?/p>

以上就是java語(yǔ)言與平臺(tái)有什么關(guān)系的詳細(xì)內(nèi)容了,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容,歡迎來(lái)創(chuàng)新互聯(lián)行業(yè)資訊!

網(wǎng)站名稱(chēng):java語(yǔ)言與平臺(tái)有什么關(guān)系-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://www.muchs.cn/article4/epsoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、全網(wǎng)營(yíng)銷(xiāo)推廣、定制開(kāi)發(fā)網(wǎng)站導(dǎo)航、App設(shè)計(jì)、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)