有时我会看到字母" asm
"在名称文件库jar。
例如,在包框架库中。
SpringFramework : org.springframework.asm-x.y.z.M(a).jar
Eclipse Link : org.eclipse.persistence.asm.jar
Asm
,这是什么意思?
答案 0 :(得分:6)
您提到的两个库都是ASM library的副本,它提供了低级字节码操作功能(ASM - >汇编)。
Spring和EclipseLink更改了ASM的软件包名称,并将其重新打包以供内部使用。这是为了避免在这些库的用户想要使用他们自己的ASM版本的情况下发生冲突。通过重命名的包,两个版本可以愉快地共存。 JDK也是这样做的 - 你可以看到例如jdk.internal.org.objectweb.asm.util.ASMifier是JDK的一部分。 'jdk.internal'前缀是为了避免与其他版本的ASM用户可能想要使用的冲突。
答案 1 :(得分:2)
ASM名称没有任何意义:它只是对C中
__asm__
关键字的引用,它允许某些函数以汇编语言实现。ASM库的目标是生成,转换和分析已编译的 Java类,表示为字节数组(因为它们存储在磁盘上并加载 在Java虚拟机中)。为此,ASM提供了阅读工具, 通过使用比字节更高级别的概念来编写和转换此类字节数组, 例如数字常量,字符串,Java标识符,Java类型,Java类 结构元素等。请注意,ASM库的范围是严格的 仅限于阅读,写作,转化和分析课程。特别是 类加载过程超出了范围。
答案 2 :(得分:0)
ASM仅代表 ASMifier工具
答案 3 :(得分:0)
很可能是对Assembly(语言)的引用,因为如果我们认为字节码是Java的机器代码,那么像这样的库有点类似于x86世界中的Asm编译器(即允许你编写机器/字节码以更简单的方式)。
答案 4 :(得分:0)
ASM是Java的字节码框架,具有最有效的性能。
cobertura使用ASM进行代码覆盖,hibernate和AOP使用ASM生成代理类。
还有许多其他API在内部使用ASM来播放Java字节码(如您的问题所述)。