idea 如何看bytecode_IDEA字节码学习查看神器介绍
一、背景
很多人想学习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字节码学习查看神器介绍相关推荐
- Java 基础巩固:内部类的字节码学习和实战使用场景
文章出自:安卓进阶学习指南 主要贡献者: Cloud9527 Alex_赵 Struggle shixinzhang 读完本文你将了解: 背景介绍 四种内部类介绍 成员内部类 静态内部类 局部内部类 ...
- Java字节码学习笔记(一):Java字节码是什么?
文章目录 1.字节码来源 2.字节码结构 2.1.生成字节码 2.2.字节码结构 2.2.1.魔数(Magic Number 2.2.2.版本号(Version) 2.2.3.常量池(Constant ...
- JVM字节码指令集大全及其介绍
Java是怎么跨平台的 我们上计算机课的时候老师讲过:"计算机只能识别0和1,所以我们写的程序要经过编译器翻译成0和1组成的二进制格式计算机才能执行".我们编译后产生的.class ...
- 【Calcite源码学习】ImmutableBitSet介绍
Calcite中实现了一个ImmutableBitSet类,用于保存bit集合.在很多优化规则和物化视图相关的类中都使用了ImmutableBitSet来保存group by字段或者聚合函数参数字段对 ...
- 字节码学院之map介绍
Java集合框架中的 map 其实就是大家常说的数据结构中的图,或者就是python 语言中的字典,就是由键值对组成的数据结构: java中的map的键(key)是不可以重复,而value是可以重复的 ...
- 为什么要推荐大家学习字节码?
配套视频: 为什么推荐大家学习Java字节码 https://www.bilibili.com/video/av77600176/ 一.背景 本文主要探讨:为什么要学习 JVM 字节码? 可能很多人会 ...
- 一款Java字节码神器-jclasslib bytecode viewer
一.前言 相信很多学习Java的小伙伴都很好奇编译后的class文件里面的内容到底长什么样?我们都知道class文件里面存储的是字节码,直接打开文件是一堆乱码,所以我们需要一些工具来帮助我们去查看字节 ...
- JVM学习笔记(Ⅰ):Class类文件结构解析(带你读懂Java字节码,这一篇就够了)
JVM学习笔记(Ⅰ):Class类文件结构解析,带你读懂Java字节码 前言:本文属于博主个人的学习笔记,博主也是小白.如果有不对的地方希望各位帮忙指出.本文主要还是我的学习总结,因为网上的一些知识分 ...
- 【JVM学习笔记】-字节码-第一章(多图,多表,实操)
一 什么是字节码 java中通过编译, 会将我们程序员编写的文件转换成为一种 .class结尾的文件,我们称之为字节码文件.它是一种二进制文件(很明显是给计算机看的文件),是Java虚拟机中运行的文件 ...
最新文章
- Flink学习笔记:Operators之CoGroup及Join操作
- 【RecyclerView】 四、RecyclerView 布局 ( 网格局管理器 GridLayoutManager )
- WPF 窗口居中 变更触发机制
- 如何学习oracle
- Hadoop学习之MapReduce(四)
- linux系统如何从字母切换为拼音,linux shell字母转换写法
- pat1014. Waiting in Line (30)
- python settings模块导入不了_无法导入设置“myproject.settings”(是否在sys.path上?):没有名为pinax的模块...
- MySQL 在指定位置新增字段
- 【Silverlight】Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps...
- 一分钟教你在博客园中制作自己的动态云球形标签页
- 运用ffmpeg生成MP4文件
- 小米手机怎么复制加密门禁卡_使用小米手机复制加密门禁卡的方法
- html embed自动播放,HTML-embed标签
- 单片机应用系统设计技术——基于51单片机的火灾温度烟雾报警器设计
- 解析android多语言与自定义字体
- ubuntu上使用certbot安装ssl证书到nginx
- HEVC中打印CU划分
- OPPO A57在哪里打开usb调试模式的详细流程
- 【概率论】4-7:条件期望(Conditional Expectation)
热门文章
- (未完)httpd进程数查询,prefork模式修改apache最大连接数
- Javascript模块化编程(一):模块的写法
- Android命令行工具logcat详细用法!
- springmvc json 406
- Android底层开发之旅—蓝牙系统分析
- 打开FTP时,让文件以文件夹的形式显现
- mysql 必须安装php_非root模式下安装mysql php小记
- URLEncoder和URLDecoder中特殊字符的处理方案 URL传值问题
- mysql中鼠标光标消失了_为什么我这里没有显示鼠标的悬停可改变页面颜色,以为什么我加载了mysql的jar文件还是不能显示报表的内容呢?...
- oracle中间件微信公众号,对TP5.1中间件融合微信公众号代码的优化