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

Java跨平臺運行的原理

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


java跨平臺運行的原理

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

      1、Java源文件的編譯過程

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

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

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

      2、Java解釋器運行機制

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

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

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

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

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

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

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

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

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

本文鏈接:

本文章“Java跨平臺運行的原理”已幫助 88 人

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

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

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