美文网首页
01 - 初识Java ASM

01 - 初识Java ASM

作者: 舍是境界 | 来源:发表于2022-01-07 06:42 被阅读0次

ASM是什么

简单来说,ASM是一个Java字节码的类库。

问题一:ASM的操作对象是什么?

ASM所操作的对象是字节码(ByteCode)数据。

一个.java文件经过Java编译器(javac)编译之后会生成一个.class文件,在.class文件中,存储的是字节码(ByteCode)数据,ASM所操作的对象是字节码,而在许多情况下,字节码的具体形式是.class文件。

java类文件编译

问题二:ASM是如何处理字节码数据的?

ASM处理字节码数据的思路是:

  1. 第一步将.class文件拆分成多部分;
  2. 对某一个部分的信息进行修改;
  3. 将多个部分重新组织成一个新的.class文件

ASM provides a simple API for decomposing, modifying, and recomposing binary java classes(i.e ByteCode).

ASM的版本发展

  • Java语言在不断发展,ASM版本也要不断发展来跟上Java的发展
  • 在选择ASM版本时,需注意它支持的Java版本,来确保兼容性

版本对应关系表:

ASM Release Release Date Java Support
2.0 2005-05-17 Java 5 language support
3.2 2009-06-11 support for the invokedynamic code
4.0 2011-10-29 Java 7 language support
5.0 2014-03-16 Java 8 language support
6.0 2017-09-23 Java 9 language support
6.1 2018-03-11 Java 10 language support
7.0 2018-10-27 Java 11 language support
7.1 2019-03-03 Java 13 language support
8.0 2020-03-03 Java 14 language support
9.0 2020-09-22 Java 16 language support
9.0 2021-02-06 Java 17 language support
9.2 2021-06-26 Java 18 language support

ASM能做什么

  • 类文件分析(Analysis)
  • 动态生成新的类文件(Generation),这是一个从“无”到“有”,从0到1生成类文件的操作。
  • 对已有的类文件进行转换,从而生成新的类文件(Transformation)
ASM能做什么

ASM使用场景

小结

  1. ASM所处理对象是字节码数据,也可以直观的理解成.class文件,不是.java文件。
  2. ASM能够对字节码数据进行哪些操作呢?回答:analyze、generate、transform。
  3. ASM可以形象的理解为“Java语言世界”的边缘上一扇大门,通过这扇大门,可以帮助我们进入到“字节码的世界”。

本文带大家了解了ASM是什么,以及ASM能做什么,学会使用ASM对将会让大家掌握一项更灵活的技术,希望对大家能有所帮助。

相关文章

  • 01 - 初识Java ASM

    ASM是什么 简单来说,ASM[https://asm.ow2.io/]是一个Java字节码的类库。 问题一:AS...

  • Java ASM 与Aop简单实现(Version:asm5.0

    准备知识:Java ASM与字节码(Version:asm5.0.3,asm-commons5.0.3) 测试类:...

  • 【性能优化】Arthas 原理浅谈

    Arthas 是基于 ASM 和 Java Agent 技术实现的 Java 诊断利器。① ASM 是指一个 Ja...

  • ASM

    一、ASM版本: 我们常用的java版本是java8和java11,针对java 8我们需要使用ASM5.0版本,...

  • Android ASM使用

    ASM ASM是一种基于java字节码层面的代码分析和修改工具,ASM的目标是生成,转换和分析已编译的java c...

  • ASM 概述

    0x00 什么是 ASM ASM is an all purpose Java bytecode manipula...

  • JAVA中ASM是什么?

    什么是 ASM ? ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可...

  • 深入开源框架底层之ASM

    什么是 ASM ? ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可...

  • 简单看看ASM框架

    什么是ASM ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接...

  • 奇门遁甲之ASM操纵字节码

    本文记录对ASM 字节码操控框架的梳理和总结,方便需要时查看。 一、什么是ASM ASM 是一个 Java 字节码...

网友评论

      本文标题:01 - 初识Java ASM

      本文链接:https://www.haomeiwen.com/subject/bgbpeltx.html