使用jclasslib查看java字节码
提纲
1、概述
2、idea中jclasslib插件安装
3、idea中jclasslib插件使用方法介绍
4、总结
1、概述
很多时候想查看Java源代码编译后的字节码,会感觉到无法下手,不知道从何处开始。为什么呢?因为一方面缺乏好的资料去了解java字节码,直接看jvm虚拟机规范倒也是能达到目的,可是jvm虚拟机规范却是很难读懂的,另外一方面缺乏好的工具去将class文件中的字节码给读出来。
资料缺乏,我觉得可以看《Java虚拟机规范》、《深入理解Java虚拟机》,还可以购买讲解Java字节码的相关专栏。
工具缺乏,我觉得可以使用JDK自带的javap命令行工具去反汇编class文件得到字节码,但是javap使用起来总是有些不方便,它是命令行工具,很多同学是不喜欢命令行的(当然我觉得命令行很好)。
那么,有没有更好的替代工具呢?有。
叫啥?
jclasslib bytecode viewer
接下来详细介绍下这款神器。
是什么?
jclasslib工具的源码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 class文件和所包含的字节码的工具。 另外,它还提供一个库,可以让开发人员读写Java class文件和字节码。
为什么?
有 javap指令还需要这个干啥哩?
如果你真觉得 javap 非常好用,非常顺手,可以不需要这个软件。
但是很多人不喜欢总是敲命令,如果总是敲命令就会降低自己看字节码的频率。
此时可以尝试使用该插件。
2、idea中jclasslib插件安装
建议直接通过idea的插件库搜索安装然后重启,在插件库中找到jclasslib,点击 Install安装,安装后重启idea,就可以使用了。
3、使用
当编辑器中打开一个java源代码文件后,直接选择 View --> Show Bytecode With jclasslib,就可以打开jclasslib的tool window了,在其中可以看到当前编辑器中的源代码文件对应的字节码。
注意:如果是自己项目的源码需要先编译
jclasslib窗口
可以查看一般信息、常量池、接口、字段、方法、属性等信息。
主要优点:
1 不需要使用javap指令,使用简单
2 点击字节码指令可以跳转到 java虚拟机规范对应的章节。
比如我们想了解 putstatic 的含义,可以点击该指令
自动通过浏览器打开虚拟机规范并定位到该指令位置,非常方便。
4、总结
可能有一些人觉得学习字节码没有必要,并不影响自己的学习,也不影响平时开发。
但是人总是根据自己已经掌握的内容来解决问题。
有一个很有意思的现象,有时候你认为的“用不到”,只不过是不想学的理由,只不过是因为没掌握真正需要的场景你想不到用而已。
举一个现实的例子:
比如你是一个文科生,你对计算机不是很了解,老师发给你一张图片有几千个文字,让你打成文字。
如果你不了解很多知识,手工打字,可能耗时3小时。
此时如果你了解过语音输入,你可以自己读然后语音自动转成文字,然后稍微修改一些小错误即可,比如用时1小时,大大节省了时间。
此时如果你了解OCR文字识别软件,你可以找免费的或者收费的OCR软件,5分钟以内解决问题。
其实学习技术也是这样,你如果是突击出来的专业基础不扎实,你就很难从专业底层的角度思考问题的本质。
如果你不学习字节码,你就难从字节码层面去分析和理解问题。
比如 Java 语言的很多语法糖,通过反汇编可以快速轻松掌握。
但是很多人喜欢速成,喜欢看别人介绍的内容而不是自己能过自主学习和研究,其实这也恰恰是很多学不好的根本原因之一。
不是每个人都一定要学反汇编,但是如果你想自主学习,想深入学习,建议可以主动研究。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2015-02-08 版本控制工具的必要性、作用、分类和发展历程