为了账号安全,请及时绑定邮箱和手机立即绑定

IDEA字节码学习查看神器介绍

标签:
Java

一、背景

很多人想学习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.1 为什么?

有 javap指令还需要这个干啥哩?

如果你真觉得 javap 非常好用,非常顺手,可以不需要这个软件。

但是很多人不喜欢总是敲命令,如果总是敲命令就会降低自己看字节码的频率。

此时可以尝试使用该插件。

2.3 安装和使用

2.3.1 安装

建议直接通过idea的插件库搜索安装然后重启即可,下面我已经安装过了。

https://img1.sycdn.imooc.com//5dd7fa42000133fd12480751.jpg

点击  Install安装,安装后点击  Restart IDE 重启 IDEA

https://img1.sycdn.imooc.com//5dd7fa6800019f3708690344.jpg

2.3.2使用

使用时直接选择 View --> Show Bytecode With jclasslib

https://img1.sycdn.imooc.com//5dd7fb820001e9da11910688.jpg

注意:如果是自己项目的源码需要先编译

https://img1.sycdn.imooc.com//5dd7fc320001b32409910716.jpg

jclasslib窗口

https://img1.sycdn.imooc.com//5dd7fca40001214a16260780.jpg

可以查看基本信息、常量池、接口、属性、函数等信息。

主要优点:

1 不需要使用javap指令,使用简单

2 点击字节码指令可以跳转到 java虚拟机规范对应的章节。

比如我们想了解 putstatic 的含义,可以点击该指令

https://img1.sycdn.imooc.com//5dd7fd8a0001680708790462.jpg

自动通过浏览器打开虚拟机规范并定位到该指令位置,非常方便。

https://img1.sycdn.imooc.com//5dd7fd5e0001deb914860996.jpg


三、看法

可能有一些人觉得学习字节码没有必要,并不影响自己的学习,也不影响平时开发。

但是人总是根据自己已经掌握的内容来解决问题。

有一个很有意思的现象,有时候你认为的“用不到”,只不过是不想学的理由,只不过是因为没掌握真正需要的场景你想不到用而已。

举一个现实的例子:

比如你是一个文科生,你对计算机不是很了解,老师发给你一张图片有几千个文字,让你打成文字。

如果你不了解很多知识,手工打字,可能耗时3小时。

此时如果你了解过语音输入,你可以自己读然后语音自动转成文字,然后稍微修改一些小错误即可,比如用时1小时,大大节省了时间。

此时如果你了解OCR文字识别软件,你可以找免费的或者收费的OCR软件,5分钟以内解决问题。

其实学习技术也是这样,你如果是突击出来的专业基础不扎实,你就很难从专业底层的角度思考问题的本质。

如果你不学习字节码,你就难从字节码层面去分析和理解问题。

比如 Java 语言的很多语法糖,通过反汇编可以快速轻松掌握。

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

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

四、总结

本文主要介绍了 IDEA 字节码查看插件:jclasslib bytecode viewer。讲到了该插件的安装和使用,非常简单。

如果对字节码感兴趣,想深入学习,平时开发中搭配这个插件来学习效果极佳。


------------------------------------------------------------

想了解更多《手册》详解的更多内容,想学习开发中比较有帮助的插件,更多开发和避坑技巧,少走弯路,请关注《阿里巴巴Java 开发手册》详解专栏

大家购买前有啥疑问或者想和其他读者交流可以用base64算法解密以下内容: 5re75Yqg5b6u5L+hICBmZW5neWVsaWFvemhhaSAg5bm255WZ6KiA77ya5Yqg5YWl44CK5omL5YaM44CL6K+m6Kej5LiT5qCP6K+76ICF5Lqk5rWB576k44CC


如果本文或者专栏对你有帮助,欢迎介绍给身边的同学、朋友,你的支持是我持续创作的最大动力。






点击查看更多内容
8人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
3858
获赞与收藏
1465

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消