深入浅出Java探针技术2---java字节码生成框架ASM、Javassist和byte buddy的使用

目前Java字节码生成框架大致有ASM、Javassist和byte buddy三种

ASM框架介绍及使用

1.ASM介绍

ASM是一种Java字节码操控框架,能够以二进制形式修改已有的类或是生成类,ASM可以直接生成二进制class文件也可以在类被加载入JVM之前动态改变类,只不过ASM在创建class字节码时说底层JVM的汇编指令,需要使用者对class组织结构和JVM汇编指令有一定的了解。由于Java 类存储在.class文件中,这些类文件中包含有:类名称、方法、属性及字节码,ASM从类文件中读入信息后改变类行为、分析类信息或者直接创建新的类。

著名的使用到ASM的案例便是lambda表达式、CGLIB动态代理类

2.ASM内容

ASM框架核心类包含

ClassReader:该类用来解析编译过的class字节码文件

ClassWriter:该类用来重新构建编译后的类,比如修改类名、属性、方法或者根据要求创建新的字节码文件

ClassAdapter:实现了ClassVisitor接口,将对它的方法调用委托给另一个ClassVisitor对象

3.ASM使用案例

ASM使用之前需要导入jar包asm.jar,我们来通过ASM来对一个现有的类的方法进行字节码增强,实现在方法的开头和结尾打印日志的功能

 

Javassist及使用

1.javassist介绍

Javassit相比于ASM要简单点,Javassit提供了更高级的API,当时执行效率上比ASM要差,因为ASM上直接操作的字节码。功能和JDK自带的反射功能类似,但是比反射要强大。

2.javassist内容

Javassist核心类包括

ClassPool:一个基于HashMap实现的CtClass对象容器,key上类名,value上这个类的CtClass对象

CtClass:表示一个类,可以从ClassPool中获取

CtMethods:表示一个类的方法

CtFields:表示类中的属性

3.javassist使用案例

Byte Buddy及使用

1.byte buddy介绍

byte buddy是一个提供了API用于生成任意Java类工具包,可以生成和修改字节码。

2.byte buddy使用案例

转载于:https://www.cnblogs.com/jackion5/p/10680343.html

参考资源链接:[货拉拉全链路监控体系:落地实践与技术揭秘](https://wenku.csdn.net/doc/3mm8et241q?utm_source=wenku_answer2doc_content) 在Java微服务架构中,无侵入式监控是实现全链路监控的有效方式之一。为了回答这个问题,我们可以结合《货拉拉全链路监控体系:落地实践与技术揭秘》这篇资料。文中提到,字节码增强技术允许在应用程序运行时动态地修改Class文件,从而实现无侵入式的监控埋点,这正是我们在微服务架构中所需要的。 首先,我们需要理解字节码增强技术背后的基本原理。字节码增强技术可以通过JavaAgent实现,它允许我们在不重新编译的情况下,动态地修改运行中的Java应用程序的字节码。这在微服务架构中非常重要,因为服务数量众多且经常更新,无侵入式的方法可以减少对业务代码的干扰和版本兼容问题。 接下来,我们可以探讨ASMJavassistByteBuddy这三种技术的特点及其在监控中的应用: - ASM是一个较为底层的字节码操作和分析框架。它可以提供更精细的控制,因为可以操作字节码的每一个指令。ASM适合需要高度定制化的场景,但在使用上相对复杂,需要对字节码结构有深入的理解。在监控中,使用ASM可以实现非常精确的埋点,但维护成本较高。 - Javassist是一个高级的字节码操作框架,允许开发者以Java代码的方式动态修改类定义。它比ASM更易于使用,因为它不需要编写字节码级别的指令,但是它不支持类的重定义,这意味着监控的改动可能会更难维护。 - ByteBuddy是一个较为现代的字节码操作库,它的API设计旨在易于使用,同时提供了与Javassist相似的易用性和与ASM相似的强大功能。ByteBuddy在性能和易用性之间取得了平衡,适合大多数监控需求。 在实施监控时,通常需要根据项目的具体情况选择合适的字节码增强技术。例如,如果项目需要频繁地调整监控策略且对性能要求极高,那么ByteBuddy可能是最佳选择。如果对监控策略的定制化程度要求非常高,则可能需要使用ASM。 总结来说,通过字节码增强技术可以在Java微服务架构中实现高效且低侵入的监控,这不仅提升了监控系统的可维护性,还支持快速迭代和业务的稳定运行。《货拉拉全链路监控体系:落地实践与技术揭秘》中详细介绍了监控体系架构的设计理念和实现细节,为实际应用提供了宝贵的经验和指导。 参考资源链接:[货拉拉全链路监控体系:落地实践与技术揭秘](https://wenku.csdn.net/doc/3mm8et241q?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值