转载来自: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 是一个可以可视化已编译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 的含义,可以点击该指令
自动通过浏览器打开虚拟机规范并定位到该指令位置,非常方便。
三、看法
可能有一些人觉得学习字节码没有必要,并不影响自己的学习,也不影响平时开发。
但是人总是根据自己已经掌握的内容来解决问题。
有一个很有意思的现象,有时候你认为的“用不到”,只不过是不想学的理由,只不过是因为没掌握真正需要的场景你想不到用而已。
举一个现实的例子:
其实学习技术也是这样,你如果是突击出来的专业基础不扎实,你就很难从专业底层的角度思考问题的本质。
如果你不学习字节码,你就难从字节码层面去分析和理解问题。
比如 Java 语言的很多语法糖,通过反汇编可以快速轻松掌握。
但是很多人喜欢速成,喜欢看别人介绍的内容而不是自己能过自主学习和研究,其实这也恰恰是很多学不好的根本原因之一。
不是每个人都一定要学反汇编,但是如果你想自主学习,想深入学习,建议可以主动研究。
四、总结
本文主要介绍了 IDEA 字节码查看插件:jclasslib bytecode viewer。讲到了该插件的安装和使用,非常简单。
如果对字节码感兴趣,想深入学习,平时开发中搭配这个插件来学习效果极佳。