今天小編給大家分享的是java語言與平臺(tái)有什么關(guān)系,相信很多人都不太了解,為了讓大家更加了解java語言與平臺(tái)的關(guān)系,所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。一定會(huì)有所收獲的哦。
為什么說java語言與平臺(tái)無關(guān)?
一、平臺(tái)與機(jī)器指令
無論哪種編程語言編寫的應(yīng)用程序都需要經(jīng)過操作系統(tǒng)和處理器來完成程序的運(yùn)行,因此這里的平臺(tái)是由OS和CPU所構(gòu)成的,所謂的平臺(tái)無關(guān)就是指軟件的運(yùn)行不會(huì)因操作系統(tǒng)、處理器的變化而無法運(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++程序是依賴平臺(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++程序無法跨平臺(tái)的根本原因是C/C++源程序的編譯器針對(duì)平臺(tái)進(jìn)行編譯,而不同的平臺(tái)有不同的機(jī)器指令,所以無法跨平臺(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ī),類庫和一些核心文件組成,也就是說,只要平臺(tái)提供了Java運(yùn)行環(huán)境,Java編寫的軟件就可以在其上運(yùn)行。
和C/C++不同的是,Java語言提供的編譯器不針對(duì)特定的操作系統(tǒng)和CPU芯片進(jìn)行編程,而是針對(duì)Java虛擬機(jī)把Java源程序編譯成稱為字節(jié)碼的“中間代碼”,然后Java虛擬機(jī)負(fù)責(zé)將字節(jié)碼翻譯成虛擬機(jī)所在平臺(tái)的機(jī)器碼,并讓當(dāng)前平臺(tái)運(yùn)行該機(jī)器碼。
Java語言的運(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ùn)行,也就是Java跨平臺(tái)的原因?!彼苑QJava是一種“半編譯,半解釋的語言”,即源程序——>編譯——>字節(jié)碼——>字節(jié)碼解釋程序——>對(duì)應(yīng)平臺(tái)的機(jī)器語言?!?/p>
以上就是java語言與平臺(tái)有什么關(guān)系的詳細(xì)內(nèi)容了,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容,歡迎來創(chuàng)新互聯(lián)行業(yè)資訊!
網(wǎng)站名稱:java語言與平臺(tái)有什么關(guān)系-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://chinadenli.net/article4/epsoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、全網(wǎng)營銷推廣、定制開發(fā)、網(wǎng)站導(dǎo)航、App設(shè)計(jì)、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容