javassist
javassist
javassist (Java编程助手)使Java字节码操作变得简单。
它是Java中编辑字节码的类库;它允许Java程序在运行时定义新类,并在JVM加载类文件时修改类文件。
与其他类似的字节码编辑器不同,Javassist提供了两个级别的API:源级和字节码级。
如果用户使用源代码级API,他们可以编辑类文件,而不需要了解Java字节码的规范。
整个API只使...
2018-07-23 07:11:33 |
Java
CGLIB
CGLIB
CGLIB is a powerful, high performance and quality Code Generation Library,
It is used to extend JAVA classes and implements interfaces at runtime.
cglib-missing-manual
CGLIB and Java ...
2018-07-23 00:57:50 |
Java
ASM-22-Tree 向后兼容能力
介绍
与核心API一样,ASM 4.0的树API中也引入了一种新机制,以确保在将来的ASM版本中向后兼容。
但是,这里再次不能单独通过ASM来确保此属性。
要求用户在编写自己的文章时遵循一些简单的准则
码。
本章的目的是介绍这些准则,并给出ASM树API中使用的内部机制的概念,以确保向后兼容。
指导方针
本节介绍了使用ASM树API时必须遵循的准则,以确保您的代码在以后的任何AS...
2018-07-20 05:43:31 |
Java
ASM-21-Metadata Generic Annotation Debug
元数据
本章介绍了用于已编译Java类元数据(例如注解)的树API。
之所以很短,是因为这些元数据已经在第4章中介绍过,并且因为一旦知道了相应的 core API,树API就很简单。
泛型
树API不提供对泛型类型的任何支持!
确实,它代表了带有签名的泛型类型,就像在核心API中一样,但是没有提供与SignatureVisitor对应的SignatureNode类,尽管这是可能的(...
2018-07-20 05:43:31 |
Java
ASM-19-Method 分析接口与组件
接口和组件
用于代码分析的ASM API在 org.objectweb.asm.tree.analysis 软件包中。
就像包名称所暗示的那样,它基于树API。
实际上,该程序包提供了进行正向数据流分析的框架。
为了能够使用或多或少的精确值集执行各种数据流分析,数据流分析算法分为两部分:
一个是固定的,由框架提供,另一个是可变的,由用户提供。
更确切地说:
在Analyzer和...
2018-07-20 05:43:31 |
Java
ASM-19-Method 分析介绍
方法分析
本章介绍基于树API的ASM API,用于分析方法代码。
首先介绍代码分析算法,然后提供相应的ASM API和一些示例。
介绍
代码分析是一个非常大的主题,并且存在许多用于分析代码的算法。
在这里不可能全部展示它们,这超出了本文的范围。
实际上,本部分的目的只是概述ASM中使用的算法。
在有关编译器的书中可以找到关于此主题的更好的介绍。
下一节将介绍两种重要的代码分...
2018-07-20 05:43:31 |
Java
ASM-18-Method 组件组成
成分组成
到目前为止,我们只看到了如何创建和转换MethodNode对象,但是还没有看到与类的字节数组表示形式相关的链接。
像对于类一样,此链接是通过组合核心API和树API组件来完成的,如本节所述。
介绍
除了图7.1中所示的字段外,MethodNode类还扩展了MethodVisitor类,并且还提供了两个接受方法,它们将MethodVisitor或ClassVisitor作为参...
2018-07-20 05:43:31 |
Java
ASM-17-接口与组件
方法
本章介绍如何使用ASM树API生成和转换方法。
它从仅提供树API的介绍开始,并提供一些说明性示例,然后介绍如何与核心API组合。
下一章介绍了用于泛型和注解的树形API。
Interfaces and components 说明
MethodNode
用于生成和转换方法的ASM树API基于MethodNode类(请参见图7.1)。
Figure 7.1.: The...
2018-07-20 05:43:31 |
Java