首頁  >  文章  >  Java  >  java程式碼是如何被機器辨識的

java程式碼是如何被機器辨識的

王林
王林原創
2020-02-01 20:09:582966瀏覽

java程式碼是如何被機器辨識的

java程式碼是如何被機器辨識的?

首先,Java作為一門高階程式語言,其語法非常複雜,直接將 Java 程式碼丟給機器,而機器是無法辨識 Java 程式碼的。所以,對於Java語言來說,首先是使用編譯器將我們的Java 原始碼(.java檔案)編譯成字節碼檔案(.class檔案),之後再使用虛擬機器(JVM)將字節碼翻譯成機器碼,最後機器碼才能被機器辨識並執行。

請看下圖:

java程式碼是如何被機器辨識的

(免費學習影片教學推薦:java影片教學

#解釋如下:

其實JVM 是無法直接執行字節碼檔案的,JVM 需要將字節碼翻譯成機器碼才可以執行對應的程式碼邏輯。在HotSpot 虛擬機器中,有兩種​​翻譯形式:第一種是解釋執行,即逐條將字節碼翻譯成機器碼並執行;第二種是即時編譯(Just-In-Time compilation,JIT),即將一個方法中包含的所有字節碼編譯成機器碼後再執行。這兩種方式各有優劣。

解釋執行的優點是無須等待編譯,立刻可以執行。而即時編譯的優點在於實際運行速度更快。在 HotSpot 虛擬機器中預設採用混合模式,綜合了解釋執行和即時編譯兩者的優點。它會先解釋執行字節碼,而後將其中反覆執行的熱點程式碼,以方法為單位進行即時編譯。 

Java 虛擬機器執行 Java 位元組碼的時候,首先會將字節碼檔案載入到記憶體中,之後將載入後的 Java 類別存放到方法區(Method Area)中。實際運行時,虛擬機會執行方法區中的程式碼。

在運行過程中,每次進入一個 Java 方法,Java 虛擬機會在目前執行緒的 Java 方法堆疊中產生一個堆疊幀,以存放局部變數以及字節碼操作數。當退出目前執行方法時,無論正常返回或異常返回,Java 虛擬機器都會彈出目前執行緒的目前堆疊幀,並將其丟棄。

相關文章教學推薦:java入門教學

#

以上是java程式碼是如何被機器辨識的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn