轉載來自:https://blog.csdn.net/w605283073/article/details/103209221
一、背景
很多人想學習Java反匯編后的字節碼,但是一方面缺乏好的資料,另外一方面缺乏好的工具。
關於資料大家可以看 《Java虛擬機規范》、《深入理解Java虛擬機》,還可以購買 JVM字節碼相關的專欄。
雖然大家可以使用 JDK 自帶的 javap 命令行工具,但是總是有些不方便。
那么有啥好的工具嗎?
有。
叫啥?
jclasslib bytecode viewer
接下來詳細介紹下這款神器。
二、詳解
2.1 是什么?
github 地址:https://github.com/ingokegel/jclasslib
jclasslib bytecode viewer is a tool that visualizes all aspects of compiled Java class files and the contained bytecode.
jclasslib bytecode viewer 是一個可以可視化已編譯Java類文件和所包含的字節碼的工具。 另外,它還提供一個庫,可以讓開發人員讀寫Java類文件和字節碼。
2.2 為什么?
有 javap指令還需要這個干啥哩?
如果你真覺得 javap 非常好用,非常順手,可以不需要這個軟件。
但是很多人不喜歡總是敲命令,如果總是敲命令就會降低自己看字節碼的頻率。
此時可以嘗試使用該插件。
2.3 安裝和使用
2.3.1 安裝
建議直接通過idea的插件庫搜索安裝然后重啟即可,下面我已經安裝過了。

點擊 Install安裝,安裝后點擊 Restart IDE 重啟 IDEA

2.3.2使用
使用時直接選擇 View --> Show Bytecode With jclasslib

注意:如果是自己項目的源碼需要先編譯

jclasslib窗口

可以查看基本信息、常量池、接口、屬性、函數等信息。
主要優點:
1 不需要使用javap指令,使用簡單
2 點擊字節碼指令可以跳轉到 java虛擬機規范對應的章節。
比如我們想了解 putstatic 的含義,可以點擊該指令

自動通過瀏覽器打開虛擬機規范並定位到該指令位置,非常方便。

三、看法
可能有一些人覺得學習字節碼沒有必要,並不影響自己的學習,也不影響平時開發。
但是人總是根據自己已經掌握的內容來解決問題。
有一個很有意思的現象,有時候你認為的“用不到”,只不過是不想學的理由,只不過是因為沒掌握真正需要的場景你想不到用而已。
舉一個現實的例子:
比如你是一個文科生,你對計算機不是很了解,老師發給你一張圖片有幾千個文字,讓你打成文字。
如果你不了解很多知識,手工打字,可能耗時3小時。
此時如果你了解過語音輸入,你可以自己讀然后語音自動轉成文字,然后稍微修改一些小錯誤即可,比如用時1小時,大大節省了時間。
此時如果你了解OCR文字識別軟件,你可以找免費的或者收費的OCR軟件,5分鍾以內解決問題。
其實學習技術也是這樣,你如果是突擊出來的專業基礎不扎實,你就很難從專業底層的角度思考問題的本質。
如果你不學習字節碼,你就難從字節碼層面去分析和理解問題。
比如 Java 語言的很多語法糖,通過反匯編可以快速輕松掌握。
但是很多人喜歡速成,喜歡看別人介紹的內容而不是自己能過自主學習和研究,其實這也恰恰是很多學不好的根本原因之一。
不是每個人都一定要學反匯編,但是如果你想自主學習,想深入學習,建議可以主動研究。
四、總結
本文主要介紹了 IDEA 字節碼查看插件:jclasslib bytecode viewer。講到了該插件的安裝和使用,非常簡單。
如果對字節碼感興趣,想深入學習,平時開發中搭配這個插件來學習效果極佳。
