使用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 语言的很多语法糖,通过反汇编可以快速轻松掌握。

但是很多人喜欢速成,喜欢看别人介绍的内容而不是自己能过自主学习和研究,其实这也恰恰是很多学不好的根本原因之一。

不是每个人都一定要学反汇编,但是如果你想自主学习,想深入学习,建议可以主动研究。



猜你喜欢

转载自blog.csdn.net/zhangzl4321/article/details/128931446
今日推荐