转载来自: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 is a tool that visualizes all aspects of compiled Java class files and the contained bytecode.

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 的含义,可以点击该指令

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

三、看法

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

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

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

举一个现实的例子:

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

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

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

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

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

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

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

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

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

四、总结

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

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

 

IDEA字节码学习查看神器jclasslib bytecode viewer介绍的更多相关文章

  1. 【Java字节码】Idea中查看Java字节码的插件jclasslib Bytecode viewer

    Idea插件搜索:jclasslib Bytecode viewer 安装完后,maven install你的项目(因为该插件会读取target下的class文件),然后选中某个java文件,按下图操 ...

  2. idea 查看字节码 bytecode插件 (jclasslib Bytecode Viewer、ASM Bytecode Viewer )

    文章目录 jclasslib Bytecode Viewer ASM Bytecode Viewer jclasslib Bytecode Viewer 然后重启idea===>重新编译(构建项 ...

  3. idea安装插件 JClassLib Bytecode viewer

    目录 idea安装插件 JClassLib Bytecode viewer 安装过程 使用 idea安装插件 JClassLib Bytecode viewer IDEA 中安装 jClassLib ...

  4. idea反编译jar包,jclasslib Bytecode Viewer

    下载 jclasslib Bytecode Viewer https://plugins.jetbrains.com/plugin/9248-jclasslib-bytecode-viewer/ver ...

  5. 【Spark2.0源码学习】-8.SparkContext与Application介绍

             在前面的内容,我们针对于RpcEndpoint启动以及RpcEndpoint消息处理机制进行了详细的介绍,在我们的大脑里,基本上可以构建Spark各节点的模样.接下来的章节将会从Sp ...

  6. 在Eclipse里查看Java字节码

    要理解 Java 字节码,比较推荐的方法是自己尝试编写源码对照字节码学习.其中阅读 Java 字节码的工具必不可少.虽然javap可以以可读的形式展示出.class 文件中字节码,但每次改动源码都需调 ...

  7. 【转】在Eclipse里查看Java字节码

    要理解 Java 字节码,比较推荐的方法是自己尝试编写源码对照字节码学习.其中阅读 Java 字节码的工具必不可少.虽然javap可以以可读的形式展示出.class 文件中字节码,但每次改动源码都需调 ...

  8. ASM字节码框架学习之动态代理

    ASM字节码操纵框架,可以直接以二进制的形式来来修改已经存在的类或者创建新的类.ASM封装了操作字节码的大部分细节,并提供了非常方便的接口来对字节码进行操作.ASM框架是全功能的,使用ASM字节码框架 ...

  9. 记一次使用修改字节码的方法解决java.lang.NoSuchMethodError

    接兔兔国际sdk ane 充值界面选择兔币充值就会闪退, 观察logcat 04-19 10:10:54.224: E/AndroidRuntime(20315): FATAL EXCEPTION: ...

随机推荐

  1. mac下xampp使用phpmyadmin搭建后台

    情景 使用xampp搭建一个后端环境,前提已经有后端和数据库配置文件 安装和启动xampp 安装xampp没什么可说的,在https://www.apachefriends.org/index.htm ...

  2. Coursera课程笔记----计算导论与C语言基础----Week 11

    C程序中的字符串(Week 11) 字符数组 所有的字符串,都是以\0结尾的 只能在数组定义并初始化的时候:char c[6] = "China"; 不能用赋值语句将一个字符串常量 ...

  3. shell 光标处理快捷键

    Ctrl+左右键 单词之间跳转Ctrl+a跳到本行的行首, Ctrl+e则跳到页尾. Ctrl+u删除当前光标前面的文字 ctrl+k-删除当前光标后面的文字 Ctrl+w和Alt+d-对于当前的单词 ...

  4. 5、打断点(bpu)

    前言 先给大家讲一则小故事,在我们很小的时候是没有手机的,那时候跟女神聊天都靠小纸条.某屌丝A男对隔壁小王的隔壁女神C倾慕已久,于是天天小纸条骚扰,无奈中间隔着一个小王,这样小王就负责传小纸条了.有一 ...

  5. 关于字符串函数size()的问题

    首先如果你是一段语句 for(int i=0;i<a.size();i++)这个时候会报错 comparison between signed and unsigned integer expr ...

  6. pt-summary pt-mysql-summary工具

    2个percona的工具还真挺好用的. pt-summary# Percona Toolkit System Summary Report ###################### Date | ...

  7. Kappa(cappa)系数只需要看这一篇就够了,算法到python实现

    1 定义 百度百科的定义: 它是通过把所有地表真实分类中的像元总数(N)乘以混淆矩阵对角线(Xkk)的和,再减去某一类地表真实像元总数与被误分成该类像元总数之积对所有类别求和的结果,再除以总像元数的平 ...

  8. scrapy框架之CrawlSpider全站自动爬取

    全站数据爬取的方式 1.通过递归的方式进行深度和广度爬取全站数据,可参考相关博文(全站图片爬取),手动借助scrapy.Request模块发起请求. 2.对于一定规则网站的全站数据爬取,可以使用Cra ...

  9. kudu_单master集群安装

    1.配置JDK1.7/1.8,免密设置,ntp时间同步配置. 2. 将下载下来的文件放到/etc/yum.repos.d/ 目录下后,进行下一步 3.使用yum管理器安装 (集群搭建) sudo yu ...

  10. 新概念英语三 新东方主讲Lesson1

    新概念二 Lesson95 词汇 ①get a shock 吓了一跳,得到一个惊喜 例:his wife got a shock get into a such mess 这么不幸搞得一片狼籍弄得这样 ...