您好,登錄后才能下訂單哦!
Java的字節碼如何理解,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
字節碼是一套設計用來在Java 運行時系統下執行的高度優化的指令集,該Java 運行時系統稱為Java 虛擬機(JavaVirtual Machine,JVM)。在其標準形式下,JVM是一個字節碼解釋器。這可能有點讓人吃驚,因為像C++之類語言的編譯結果是可執行的代碼。事實上,出于對性能的考慮,許多現代語言都被設計為編譯型,而不是解釋型。然而,正是通過JVM運行Java 程序才有助于解決在Internet 上下載程序的主要問題。這就是Java 輸出字節碼的原因。
將一個Java 程序翻譯成字節碼,有助于它更容易地在一個大范圍的環境下運行程序。原因非常直接:只要在各種平臺上都實現Java 虛擬機就可以了。在一個給定的系統中,只要系統運行包存在,任何Java 程序就可以在該系統上運行。記住:盡管不同平臺的Java 虛擬機的細節有所不同,但它們都解釋同樣的Java 字節碼。如果一個Java 程序被編譯為本機代碼,那么對于連接到Internet 上的每一種CPU 類型,都要有該程序的對應版本。這當然不是一個可行的解決方案。因此,對字節碼進行解釋是編寫真正可移植性程序的最容易的方法。
對Java 程序進行解釋也有助于它的安全性。因為每個Java 程序的運行都在Java 虛擬機的控制之下,Java 虛擬機可以包含這個程序并且能阻止它在系統之外產生副作用。正如你將看到的,Java 語言特有的某些限制增強了它的安全性。
被解釋的程序的運行速度通常確實會比同一個程序被編譯為可執行代碼的運行速度慢一些。但是對Java 來說,這兩者之間的差別不太大。使用字節碼能夠使Java 運行時系統的程序執行速度比你想象的快得多。
盡管Java 被設計為解釋執行的程序,但是在技術上Java 并不妨礙動態將字節碼編譯為本機代碼。SUN 公司在Java 2 發行版中提供了一個字節碼編譯器——JIT(Just In Time,即時)。JIT 是Java 虛擬機的一部分,它根據需要、一部分一部分地將字節碼實時編譯為可執行代碼。它不能將整個Java 序一次性全部編譯為可執行的代碼,因為Java 要執行各種檢查,而這些檢查只有在運行時才執行。記住這一點是很重要的,因為JIT 只編譯它運行時需要的代碼。盡管如此,這種即時編譯執行的方法仍然使性能得到較大提高。即使對字節碼進行動態編譯后,Java 程序的可移植性和安全性仍能得到保證,因為運行時系統(該系統執行編譯)仍然能夠控制Java 程序的運行環境。不管Java 程序被按照傳統方式解釋為字節碼,還是被動態編譯為可執行代碼,其功能是相同的。
看完上述內容,你們掌握Java的字節碼如何理解的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。