深入理解Java虛擬機器 – 閱讀class檔案的三種姿勢(連載2)

北冥有熊發表於2021-01-01


對於熟悉Java程式語言的人來說,JVM(Java Virtual Machine)是實現語言無關性的基石,被JVM所識別的.class檔案是實現平臺無關性的基石。這一點的具體資訊可參考

https://www.datapro.cool/2364.html

.class檔案中包含了被虛擬機器所識別的位元組碼指令,看懂位元組碼指令是邁向高階架構師的一小步(不積跬步無以至千里)。本文將介紹幾種如何檢視class檔案位元組碼指令的方法。

.class檔案中存的是被JVM識別的16進位制數,這些16進位制數與位元組碼指令的關係如下(附Java虛擬機器規範官方文件)

 

閱讀class檔案的三種姿勢(乾貨)

.class中的每一個16進位制數都在Java虛擬機器規範中能找到對應的位元組碼指令資訊。

附Java虛擬機器規範官方文件:https://docs.oracle.com/javase/specs/


Notepad++(HEX-Editor外掛)法

 

首先官網下載Notepad++: https://notepad-plus.en.softonic.com/

【新增notepad++到滑鼠右鍵快捷選單方法】: 

直接開啟class檔案是這樣的(亂碼)

 

閱讀class檔案的三種姿勢(乾貨)

 

依次點選 Plugins — Plugins Admin…

 

閱讀class檔案的三種姿勢(乾貨)

 

搜尋 HEX-Editor, 勾選並安裝外掛

 

閱讀class檔案的三種姿勢(乾貨)

 

外掛安裝完畢後,介面頂部右側會出現 H 標誌,表明安裝成功,此時點選H 即可以16進位制的方式轉換.class檔案

 

閱讀class檔案的三種姿勢(乾貨)


IDE(idea、eclipse)外掛法(牆裂推薦)

 

對於整合在開發環境中的外掛來說更容易的閱讀位元組碼,並且擴充套件內容更豐富

 

IntelliJ IDEA (jclasslib)

 

首先安裝外掛jclasslib

 

閱讀class檔案的三種姿勢(乾貨)

 

安裝完畢後,任意開啟一個.java檔案,然後依次點選 View — Show Bytecode With Jclasslib

 

閱讀class檔案的三種姿勢(乾貨)

 

找到如下位置,即可看到當前java檔案的位元組碼指令(如同javap反編譯一樣)

 

閱讀class檔案的三種姿勢(乾貨)


Eclipse( JBC)

 

開啟eclipse  依次點選Help — Eclipse Marketplace…, 出現如下彈框,搜尋JBC:

 

閱讀class檔案的三種姿勢(乾貨)

 

安裝完成後重啟Eclipse,找到任以java檔案,右擊以 Open JBC方式開啟

 

閱讀class檔案的三種姿勢(乾貨)

 

開啟後即可看到對應java檔案的位元組碼指令資訊

 

閱讀class檔案的三種姿勢(乾貨)


Binary Viewer

 

這是一款檢視二進位制的軟體工具,對於自身是16進位制的也會識別,並且檔案的資訊量比Notepad++開啟的class檔案資訊量更豐富

官網下載地址:https://binary-viewer.en.softonic.com/

 

閱讀class檔案的三種姿勢(乾貨)


以上就是三種常見檢視位元組碼指令的方法,平時最常用的是結合IED一起使用的方法

 

更多精彩內容請關注公眾號 資料與程式設計之美

 

閱讀class檔案的三種姿勢(乾貨)

相關文章