您好,歡迎來到賦能網(wǎng)!

Java跨平臺(tái)運(yùn)行的原理

賦能網(wǎng) 2023-05-10 88


java跨平臺(tái)運(yùn)行的原理

      Java跨平臺(tái)運(yùn)行的原理,Java能進(jìn)行進(jìn)行跨平臺(tái)運(yùn)行主要是源于JVM(Java Virtual Machine,Java虛擬機(jī)),是通過JVM實(shí)現(xiàn)了特定平臺(tái)下的Java解釋器,Java字節(jié)碼就可以通過解釋器在該平臺(tái)下執(zhí)行,這就是Java跨平臺(tái)的根本。

      1、Java源文件的編譯過程

      Java跨平臺(tái)運(yùn)行的原理,Java應(yīng)用程序的開發(fā)周期包括編譯、下載、解釋和執(zhí)行幾個(gè)部分。Java編譯器將Java源程序翻譯為JVM可執(zhí)行的代碼—字節(jié)碼。這一編譯過程與C/C++的編譯有些不同,C/C++編譯器生成的代碼是針對(duì)某一硬件平臺(tái)的代碼。

      因此,在編譯過程中,編譯器通過查表將所有對(duì)符號(hào)的引用轉(zhuǎn)換為特定的內(nèi)存偏移量,以保證程序的正確運(yùn)行。

      而Java編譯器則不會(huì)把對(duì)變量和方法的引用編譯為數(shù)值引用,也不確定程序運(yùn)行過程中的內(nèi)存布局,而是將這些符號(hào)引用信息保留在字節(jié)碼中,由解釋器在運(yùn)行時(shí)去創(chuàng)建內(nèi)存布局,然后再通過查表來確定一個(gè)方法所在的地址,這樣就有效地保證了Java的可移植性和安全性。

      2、Java解釋器運(yùn)行機(jī)制

      運(yùn)行字節(jié)碼的工作是由解釋器來完成的。解釋執(zhí)行過程分為三步:代碼裝入、代碼校驗(yàn)、代碼執(zhí)行。

      代碼裝入的工作由類加載器(Class Loader)來完成。類加載器負(fù)責(zé)加載運(yùn)行程序所需要的所有代碼。當(dāng)類加載器加載一個(gè)類之后,類被放在自己的名字空間中,除了通過符號(hào)引用自己名字空間以外的類,類與類之間沒有其他辦法可以相互影響。

      當(dāng)加載了運(yùn)行程序所需要的所有類之后,解釋器便可以確定整個(gè)可執(zhí)行程序的內(nèi)存布局,并為符號(hào)引用同特定地址空間建立對(duì)應(yīng)關(guān)系查詢表。

      通過在這一階段確定代碼的內(nèi)存布局,Java很好地解決了由于基類改變而導(dǎo)致子類崩潰的問題,同時(shí)也防止了代碼對(duì)地址的非法訪問。

      當(dāng)代碼被裝入之后,字節(jié)碼校驗(yàn)器開始對(duì)字節(jié)碼進(jìn)行檢查。校驗(yàn)器可以發(fā)現(xiàn)操作數(shù)棧的溢出和非法數(shù)據(jù)類型轉(zhuǎn)換等多種錯(cuò)誤。在校驗(yàn)通過后,Java代碼便開始執(zhí)行了。

      3、Java字節(jié)碼的執(zhí)行方式

      Java在執(zhí)行字節(jié)碼時(shí)有兩種方式:即時(shí)編譯方式和解釋執(zhí)行方式。即時(shí)編譯方式(JITJust In Time)先將字節(jié)碼編譯成機(jī)器碼,再執(zhí)行機(jī)器碼。這種運(yùn)行方式的優(yōu)點(diǎn)是執(zhí)行經(jīng)過二次編譯后的機(jī)器碼可以提高程序的執(zhí)行速度。

      解釋執(zhí)行方式是解釋器通過每次解釋,并執(zhí)行一小段代碼來完成Java字節(jié)碼程序的所有操作。比如,若Java字節(jié)碼要對(duì)兩個(gè)數(shù)值進(jìn)行加法操作,則解釋器調(diào)用自身的一段代碼來完成加法操作。

  想了解更多相關(guān)資訊請(qǐng)關(guān)注java培訓(xùn)頻道-查看更多,了解相關(guān)專業(yè)課程信息您可在線咨詢也可免費(fèi)申請(qǐng)?jiān)囌n。關(guān)注賦能網(wǎng)了解更多:4008-569-579

本文鏈接:

本文章“Java跨平臺(tái)運(yùn)行的原理”已幫助 88 人

免責(zé)聲明:本信息由用戶發(fā)布,本站不承擔(dān)本信息引起的任何交易及知識(shí)產(chǎn)權(quán)侵權(quán)的法律責(zé)任!

本文由賦能網(wǎng) 整理發(fā)布。了解更多培訓(xùn)機(jī)構(gòu)》培訓(xùn)課程》學(xué)習(xí)資訊》課程優(yōu)惠》課程開班》學(xué)校地址等機(jī)構(gòu)信息,可以留下您的聯(lián)系方式,讓課程老師跟你詳細(xì)解答:
咨詢熱線:4008-569-579

如果本頁(yè)不是您要找的課程,您也可以百度查找一下: