ASM能够做什么

2.0万 未经授权,禁止转载了解课程
课程介绍
讨论{{interaction.discussNum ? '(' + interaction.discussNum + ')' : ''}}
适合人群
想学习字节码技术的同学
你将会学到
使用ASM Core API来动态生成类文件,能够对已有的类文件进行转换
  • 学习Java ASM的Core API的内容,直接对字节码数据进行操作。
课程简介

本课程通过四个章节来介绍Java ASM的Core API内容。


第一章,基础。本章主要围绕着ASM和ClassFile两个概念展开,涉及一些简单的概念。

第二章,生成新的类。本章主要是使用Core API从“无”到“有”的创建一个新的类文件。

第三章,转换已有的类。本章主要是使用Core API将已有的类文件进行转换来生成一个新的类文件。

第四章,工具类和常用类。本章主要是对Core API当中的asm-util和asm-commons的内容进行介绍,这里涉及的类是我们学习和解决实际问题的好助手。


另外,课程的资料内容(包括代码仓库地址),会放到我的51CTO博客当中。


在学习Java ASM的过程中,重点是把握ClassReader、ClassVisitor和ClassWriter这三个类之间的关系,如下图所示:

asm-core-classes.png


学习Java ASM之后,我们可以使用ASM做什么事情呢?使用ASM,我们可以对类文件进行三种类型的操作:


- 类文件分析(Analysis)

- 动态生成新的类文件(Generation),这是一个从“无”到“有”,从0到1生成类文件的操作。

- 对已有的类文件进行转换,从而生成新的类文件(Transformation)


what-asm-can-do.png

展开更多
发布
头像

{{ item.user.nick_name }} {{ EROLE_NAME[item.user.identity] }}

置顶笔记
讨论图
{{ item.create_time }}回复
  • 删除

    是否确认删除?

    确认
    取消
  • {{ item.is_top == 1 ? '取消置顶' : '置顶'}}

    已有置顶的讨论,是否替换已有的置顶?

    确认
    取消
{{ tag.text}}
头像
{{ subitem.user.nick_name }}{{ EROLE_NAME[subitem.user.identity] }}
{{ subitem.create_time }}回复
删除

是否确认删除?

确认
取消
发布
{{pageType === 'video' ? '讨论区抢占沙发,可获得双倍学分' :'讨论区空空如也,你来讲两句~'}}
发布
{{tips.text}}
{{ noteHeaderTitle }} 笔记{{ hasMyNote ? '我的笔记' : '记笔记' }}
{{ hasMyNote ? '我的笔记' : '记笔记' }}
优质笔记
更新于:{{ $dayjs.formate('YYYY-MM-DD HH:mm:ss', item.last_uptime*1000) }}
头像
{{ detail.username }}

公开笔记对他人可见,有机会被管理员评为“优质笔记”

{{ noteEditor.content.length }}/2000

公开笔记
保存
提问

讲师收到你的提问会尽快为你解答。若选择公开提问,可以获得更多学员的帮助。

记录时间点
记录提问时视频播放的时间点,便于后续查看
公开提问
提交