首頁 >Java >java教程 >java的編譯運行方式有什麼好處

java的編譯運行方式有什麼好處

(*-*)浩
(*-*)浩原創
2019-05-27 10:20:392295瀏覽

Java的程式碼編譯運行在JVM中,那麼這種運作方式有什麼好處呢?

java的編譯運行方式有什麼好處

有不同於C/C 語言編譯後可以直接產生CPU所能理解的程式碼格式,俗稱機器碼,Java則將程式碼編譯成虛擬機器可執行的字節碼。 Java虛擬機可以由硬體實現,也可以根據不同平台(Windows,Linux,Mac等)由軟體來實現。這麼做的好處在於,一旦Java程式碼被編譯成字節碼,它變可以在不同的虛擬機器平台上運行,這就是我們經常說的「一次編譯,到處運行」。除此之外,虛擬機器還提供了諸如託管環境、陣列越界、動態類型、安全權限等動態偵測,使我們能夠更加專注於業務邏輯的開發。

Java虛擬機器

從虛擬機器的角度來看,執行Java程式碼首先需要將它編譯而成的class檔案載入到Java虛擬機器中。載入後的Java類別會被存放於方法區。 Java虛擬機器將執行時間記憶體區域分割為五個部分,分別為方法區、堆疊、PC暫存器、Java方法堆疊和本機方法堆疊。

Java執行過程

在執行過程中,每當呼叫進入一個Java 方法,Java虛擬機會在目前執行緒的Java方法堆疊中產生一個堆疊幀,泳衣保存局部變數及字節碼的操作數。這個幀的大小是事先計算好的,而且Java虛擬機器不要求堆疊的記憶體是連續的。當退出方法時,不管是正常還是異常返回,Java虛擬機都會彈出當前幀並拋棄。從硬體的角度來看,Java字節碼無法直接執行,因而Java虛擬器需要將字節碼翻譯成CPU能夠辨識的機器碼。
上述翻譯過程有兩種情況:第一種是解釋執行,即逐條將字節碼翻譯成機器碼並執行;第二種是即時編譯(Just-In-Time compilation, JIT),將一條方法中的所有字節碼翻譯成機器碼後再執行。

前者的優點在於無需等待編譯,後者的優勢在於實際運行速度更快。 Java虛擬機為了實現更快的運行速度,通常兩種方式都會採用,即混合模式,綜合兩者的優點。即時編譯技術建立在二八定律的理論基礎上的,即百分之二十的程式碼佔用了百分之八十的計算資源。針對大部分的不常用程式碼採用解釋執行,對於少數常用的程式碼採用即時編譯,已達到理性的運行速度。

在運算資源充足的情況下,字節碼的解釋執行和即時編譯和同時運行。一旦編譯完成之後,下次可替換解釋執行,直接執行機器碼。總的來說Java程式碼的執行效率,跟虛擬機器的配置和運作方式有很大關係,針對Java虛擬機器的最佳化可以有效的提高程式碼的運作效率。

以上是java的編譯運行方式有什麼好處的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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