- 本周看完ASM官方API文档,并构建了最新spring6的源码
- 下周开始重温spring6.1.x源码。
简序
- 字节框架,说是所有java框架(spring,dubbo,hibernate,mybatis等)的基石一点也不为过。
- 记得7年前项目需要,前公司黄工(现Netease)为了做APM项目,开始玩起日本人发明的javaassit,那也是我第一次接触到什么叫字节操作库。
- 转眼间,字节框架出现基于jboss或asm的很多衍生版本(ASM独领风骚)。
字节框架一览
-
ASM
https://asm.ow2.io/asm4-guide.pdf
低级别的字节操作类库,
支持2套API: 基于事件的core api 和 基于对象的tree api -
Bytebuddy
https://bytebuddy.net/#/
非侵入式,基于ASM实现了使用简易的接口 -
CGLib
https://github.com/cglib/cglib
用于aop场景;
java17+后维护度不好;
可以使用bytebuddy移植,都是基于ASM;
可以预见spring6+开始有迁移cglib的影子 -
Javaassit(JBoss)
http://www.javassist.org/
基本上算老技术了
基于字符串源码来实现字节操作
性能缺陷很明显,实现起来容易出错 -
ByteMan(JBoss)
https://byteman.jboss.org/