一、背景

很多人想学习Java反汇编后的字节码,但是一方面缺乏好的资料,另外一方面缺乏好的工具。

关于资料大家可以看 《Java虚拟机规范》、《深入理解Java虚拟机》,还可以购买 JVM字节码相关的专栏。

虽然大家可以使用 JDK 自带的 javap 命令行工具,但是总是有些不方便。

那么有啥好的工具吗?

有。

叫啥?

jclasslib bytecode viewer

接下来详细介绍下这款神器。

二、详解

2.1 是什么?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的插件库搜索安装然后重启即可,下面我已经安装过了。

点击  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。讲到了该插件的安装和使用,非常简单。

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

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

想了解更多《手册》详解的更多内容,想学习开发中比较有帮助的插件,更多开发和避坑技巧,少走弯路,请关注《阿里巴巴Java 开发手册》详解专栏。大家购买前有啥疑问或者想和其他读者交流可以用base64算法解密以下内容: 5re75Yqg5b6u5L+hICBmZW5neWVsaWFvemhhaSAg5bm255WZ6KiA77ya5Yqg5YWl44CK5omL5YaM44CL6K+m6Kej5LiT5qCP6K+76ICF5Lqk5rWB576k44CC

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

idea 如何看bytecode_IDEA字节码学习查看神器介绍相关推荐

  1. Java 基础巩固:内部类的字节码学习和实战使用场景

    文章出自:安卓进阶学习指南 主要贡献者: Cloud9527 Alex_赵 Struggle shixinzhang 读完本文你将了解: 背景介绍 四种内部类介绍 成员内部类 静态内部类 局部内部类 ...

  2. Java字节码学习笔记(一):Java字节码是什么?

    文章目录 1.字节码来源 2.字节码结构 2.1.生成字节码 2.2.字节码结构 2.2.1.魔数(Magic Number 2.2.2.版本号(Version) 2.2.3.常量池(Constant ...

  3. JVM字节码指令集大全及其介绍

    Java是怎么跨平台的 我们上计算机课的时候老师讲过:"计算机只能识别0和1,所以我们写的程序要经过编译器翻译成0和1组成的二进制格式计算机才能执行".我们编译后产生的.class ...

  4. 【Calcite源码学习】ImmutableBitSet介绍

    Calcite中实现了一个ImmutableBitSet类,用于保存bit集合.在很多优化规则和物化视图相关的类中都使用了ImmutableBitSet来保存group by字段或者聚合函数参数字段对 ...

  5. 字节码学院之map介绍

    Java集合框架中的 map 其实就是大家常说的数据结构中的图,或者就是python 语言中的字典,就是由键值对组成的数据结构: java中的map的键(key)是不可以重复,而value是可以重复的 ...

  6. 为什么要推荐大家学习字节码?

    配套视频: 为什么推荐大家学习Java字节码 https://www.bilibili.com/video/av77600176/ 一.背景 本文主要探讨:为什么要学习 JVM 字节码? 可能很多人会 ...

  7. 一款Java字节码神器-jclasslib bytecode viewer

    一.前言 相信很多学习Java的小伙伴都很好奇编译后的class文件里面的内容到底长什么样?我们都知道class文件里面存储的是字节码,直接打开文件是一堆乱码,所以我们需要一些工具来帮助我们去查看字节 ...

  8. JVM学习笔记(Ⅰ):Class类文件结构解析(带你读懂Java字节码,这一篇就够了)

    JVM学习笔记(Ⅰ):Class类文件结构解析,带你读懂Java字节码 前言:本文属于博主个人的学习笔记,博主也是小白.如果有不对的地方希望各位帮忙指出.本文主要还是我的学习总结,因为网上的一些知识分 ...

  9. 【JVM学习笔记】-字节码-第一章(多图,多表,实操)

    一 什么是字节码 java中通过编译, 会将我们程序员编写的文件转换成为一种 .class结尾的文件,我们称之为字节码文件.它是一种二进制文件(很明显是给计算机看的文件),是Java虚拟机中运行的文件 ...

最新文章

  1. Flink学习笔记:Operators之CoGroup及Join操作
  2. 【RecyclerView】 四、RecyclerView 布局 ( 网格局管理器 GridLayoutManager )
  3. WPF 窗口居中 变更触发机制
  4. 如何学习oracle
  5. Hadoop学习之MapReduce(四)
  6. linux系统如何从字母切换为拼音,linux shell字母转换写法
  7. pat1014. Waiting in Line (30)
  8. python settings模块导入不了_无法导入设置“myproject.settings”(是否在sys.path上?):没有名为pinax的模块...
  9. MySQL 在指定位置新增字段
  10. 【Silverlight】Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps...
  11. 一分钟教你在博客园中制作自己的动态云球形标签页
  12. 运用ffmpeg生成MP4文件
  13. 小米手机怎么复制加密门禁卡_使用小米手机复制加密门禁卡的方法
  14. html embed自动播放,HTML-embed标签
  15. 单片机应用系统设计技术——基于51单片机的火灾温度烟雾报警器设计
  16. 解析android多语言与自定义字体
  17. ubuntu上使用certbot安装ssl证书到nginx
  18. HEVC中打印CU划分
  19. OPPO A57在哪里打开usb调试模式的详细流程
  20. 【概率论】4-7:条件期望(Conditional Expectation)

热门文章

  1. (未完)httpd进程数查询,prefork模式修改apache最大连接数
  2. Javascript模块化编程(一):模块的写法
  3. Android命令行工具logcat详细用法!
  4. springmvc json 406
  5. Android底层开发之旅—蓝牙系统分析
  6. 打开FTP时,让文件以文件夹的形式显现
  7. mysql 必须安装php_非root模式下安装mysql php小记
  8. URLEncoder和URLDecoder中特殊字符的处理方案 URL传值问题
  9. mysql中鼠标光标消失了_为什么我这里没有显示鼠标的悬停可改变页面颜色,以为什么我加载了mysql的jar文件还是不能显示报表的内容呢?...
  10. oracle中间件微信公众号,对TP5.1中间件融合微信公众号代码的优化