01 - 初识Java ASM

2022-01-07  本文已影响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的版本发展

版本对应关系表:

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能做什么

ASM能做什么

ASM使用场景

小结

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

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

上一篇下一篇

猜你喜欢

热点阅读