當前位置:首頁 » 編程軟體 » java即時編譯器的原理

java即時編譯器的原理

發布時間: 2022-12-13 23:54:43

java工作原理

Java工作原理
由四方面組成:

(1)Java編程語言
(2)Java類文件格式
(3)Java虛擬機
(4)Java應用程序介面
當編輯並運行一個Java程序時,需要同時涉及到這四種方面。使用文字編輯軟體(例如記事本、寫字板、UltraEdit等)或集成開發環境(Eclipse、MyEclipse等)在Java源文件中定義不同的類 ,通過調用類(這些類實現了Java API)中的方法來訪問資源系統,把源文件編譯生成一種二進制中間碼,存儲在class文件中,然後再通過運行與操作系統平台環境相對應的Java虛擬機來運行class文件,執行編譯產生的位元組碼,調用class文件中實現的方法來滿足程序的Java API調用 。

㈡ 簡述java語言的運行機制

簡單來說Java程序的運行機制

編寫、編譯、運行三個步驟。

運行機制 主要是指

編譯、運行的過程

1、編譯

Java編譯器對源文件進行錯誤排查的過程,編譯後將生成後綴名為.class的位元組碼文件。好讓JVM(java虛擬機)里的解釋器可以正常讀取。

2、運行

三步代碼的裝入、代碼的校驗和代碼的執行

2.1 、代碼的裝入

JVM控制解釋器中的「類裝載器」去讀取和裝載程序所需的類(class的位元組碼)。然後解釋器開始建立類與類之間的關系。

2.2、代碼的校驗

位元組碼校驗器進行檢查:校驗器可發現操作數棧溢出,非法數據類型轉化等多種錯誤。

2.3、代碼的執行

執行也分兩種情況

即時編譯方式:解釋器先將位元組碼編譯成機器碼,然後再執行該機器碼。

解釋執行方式:解釋器通過每次解釋並執行一小段代碼來完成Java位元組碼程 序的所有操作。

通常採用的是第二種方法。由於JVM規格描述具有足夠的靈活性,這使得將位元組碼翻譯為機器代碼的工作


本回答由電腦網路分類達人 化曉峰推薦

㈢ 你知道java的運行原理是什麼嗎

Java這一語言的執行過程也遵循這樣的過程:源代碼--->機器碼。 但是,從源代碼到機器碼之間,究竟經過什麼樣的過程,則是Java獨一無二的了。寬泛地講,Java源代碼(.java)經過java編譯器(javac.exe)編譯之後,並沒有直接轉化為機器碼,而是轉化成一種中間格式,成為位元組碼(.class),位元組碼再經過java虛擬機轉化成特定CPU架構的機器碼。也正是因為這一中間物,java才有所謂的跨平台。在windows平台上編譯好的位元組碼,到linux平台後,經過為linux而設計的Java虛擬機解釋後即可執行。跨平台這一特徵,是通過位元組碼和JVM來實現的。
因此,想搞清楚java程序到底是如何運行的,重點在於弄明白位元組碼是如何被轉化成跟CPU架構相關的機器碼然後被執行的。也就是要理解JVM到底是如何工作的。在了解JVM之前,我們再跳出來一下,先看看什麼是虛擬機。所謂虛擬機,我是這么理解的:用軟體的方式模擬出跟硬體類似的環境,比如說寄存器、存儲器等等。當然,所有最終的工作還是由原來的CPU來完成。比如說VirtualBox這個虛擬機產品,它其實就是一個應用程序,用某種編程語言編寫的應用程序。當運行這個應用程序時,它會要求操作系統給它獨立施展手腳的空間:給我一些內存,給我一定的CPU時間片,然後不用管我了。你可能會問,寄存器是硬體啊,它怎麼能劃分啊,難道是時間劃分?不是的,像內存這樣的硬體,可以給虛擬機一塊獨立的內存塊,但是寄存器之後的,則需要用「模擬模擬」的方式來模擬。OK,回到Java虛擬機。到底什麼是Java虛擬機,很難有一個十分明確的定義,狹窄一點說,它就是一個應用程序,大部分用C++編寫的。寬泛地說,它就是執行位元組碼的一整個環境。

㈣ java的『編譯器』與『即時編譯器』有什麼區別

你好!編譯器(在windows下,javac.exe)將源代碼(java文件)編譯為位元組碼(bytecode),存放在class文件中。

位元組碼不能直接在機器上執行,而是通過虛擬機(windows下是java.exe)執行。具體的執行方式有兩種:

1. 一般情況下解釋執行。解釋執行並不是「解釋為用c++語言寫成的程序」,而是jvm把位元組碼看成腳本,根據位元組碼中的指令,由JVM去調用實際的本地方法。

2. 在打開了JIT參數的前提下,jvm會把執行過程中發現的熱點位置,由jvm內部的即時編譯器編譯為本地機器碼直接執行。
編譯器將java文件編譯為class文件,解釋器將class文件變為機器語言

㈤ java程序運行原理

先編譯,利用java編譯器(JDK自帶的工具)把java文件轉換成位元組碼文件(.class文件)
這個時候生成的位元組碼也不是計算機能識別的,還要讓jvm也就是java虛擬機解讀,java虛擬機首先讀入位元組碼、對位元組碼進行正確性檢查,針對客戶計算機平台生成對應的機器指令,由客戶機器執行機器指令。
希望對你有幫助

㈥ 即時編譯器和JAVA解釋器的區別

即時編譯器預先把程序編譯完成,當執行時就直接調用。
而JAVA解釋器則是當需要調用該代碼時才臨時編譯解釋,而且沒執行一次就要編譯一次,而即時編譯器則是一次編譯多次執行。

㈦ JAVA是如何實現「一次寫成,處處運行」的

java是高效解釋執行的語言,高級語言程序必須轉換為機器語言程序才能在計算機上執行,
但是,不同的計算機系統使用的機器語言不同。為了實現一次編譯,處處運行的目標,java程序在編譯時並不直接編譯成特定的機器語言,而是編譯成與系統無關的"位元組碼",由java虛擬機來執行。jvm使得java程序可以一次編譯,處處運行。任何系統只有安裝了java虛擬機後,才可以執行java程序。
jvm能直接在任何機器上運行,為位元組碼提供運行環境,當jvm解釋執行java程序時,java實時編譯器會將位元組碼譯成目標平台對應的機器語言程序的指令代碼。

㈧ 簡述JAVA程序的編輯編譯和運行過程

第一步(編譯): 創建完源文件之後,程序會先被編譯為.class文件。Java編譯一個類時,如果這個類所依賴的類還沒有被編譯,編譯器就會先編譯這個被依賴的類,然後引用,否則直接引用,這個有點象make。

如果java編譯器在指定目錄下找不到該類所其依賴的類的.class文件或者.java源文件的話,編譯器話報「cant find symbol」的錯誤。

第二步(運行):java類運行的過程大概可分為兩個過程:1、類的載入 2、類的執行。需要說明的是:JVM主要在程序第一次主動使用類的時候,才會去載入該類。也就是說,JVM並不是在一開始就把一個程序就所有的類都載入到內存中,而是到不得不用的時候才把它載入進來,而且只載入一次。

特別說明:java類中所有public和protected的實例方法都採用動態綁定機制,所有私有方法、靜態方法、構造器及初始化方法<clinit>都是採用靜態綁定機制。而使用動態綁定機制的時候會用到方法表,靜態綁定時並不會用到。

(8)java即時編譯器的原理擴展閱讀:

Java整個編譯以及運行的過程相當繁瑣,本文通過一個簡單的程序來簡單的說明整個流程。

Java代碼編譯:是由Java源碼編譯器來完成;

Java位元組碼的執行:是由JVM執行引擎來完成

Java程序從源文件創建到程序運行要經過兩大步驟:

1、源文件由編譯器編譯成位元組碼(ByteCode)

2、位元組碼由java虛擬機解釋運行。因為java程序既要編譯同時也要經過JVM的解釋運行,所以說Java被稱為半解釋語言( "semi-interpreted" language)。

熱點內容
隨機啟動腳本 發布:2025-07-05 16:10:30 瀏覽:515
微博資料庫設計 發布:2025-07-05 15:30:55 瀏覽:19
linux485 發布:2025-07-05 14:38:28 瀏覽:299
php用的軟體 發布:2025-07-05 14:06:22 瀏覽:750
沒有許可權訪問計算機 發布:2025-07-05 13:29:11 瀏覽:425
javaweb開發教程視頻教程 發布:2025-07-05 13:24:41 瀏覽:684
康師傅控流腳本破解 發布:2025-07-05 13:17:27 瀏覽:233
java的開發流程 發布:2025-07-05 12:45:11 瀏覽:678
怎麼看內存卡配置 發布:2025-07-05 12:29:19 瀏覽:277
訪問學者英文個人簡歷 發布:2025-07-05 12:29:17 瀏覽:828