提交 df657fcd 编写于 作者: 小傅哥's avatar 小傅哥

Update README.md

上级 3946698a
想深入学习一个字节码框架,听说了javassit、asm、ByteBuddy、cglib啥的,小傅哥帮忙大概介绍下,想入手ByteBuddy咋样。
框架介绍:
1. ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class 文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。
2. Javassist 是一个开源的分析、编辑和创建Java字节码的类库。是由东京工业大学的数学和计算机科学系的 Shigeru Chiba (千叶 滋)所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态"AOP"框架。
3. Byte Buddy 是一个代码生成和操作库,用于在 Java 应用程序运行时创建和修改 Java 类,而无需编译器的帮助。除了 Java 类库附带的代码生成实用程序外,Byte Buddy 还允许创建任意类,并且不限于实现用于创建运行时代理的接口。此外,Byte Buddy 提供了一种方便的 API,可以使用 Java 代理或在构建过程中手动更改类。2015年10月,Byte Buddy被 Oracle 授予了 Duke’s Choice大奖。该奖项对Byte Buddy的“ Java技术方面的巨大创新 ”表示赞赏。我们为获得此奖项感到非常荣幸,并感谢所有帮助Byte Buddy取得成功的用户以及其他所有人。我们真的很感激!
使用总结:
1. ASM 纯字节码操作,可以结合 IDEA 插件:ASM Bytecode Outline,进行使用。它能把你的普通 Java 代码转换为使用 ASM 操作时,应该做如何的处理。但 ASM 是使用上最复杂也是功能最强的框架,很多其他框架Cglib、Javassist、Byte-buddy 都是基于 ASM 开发的。
2. Javaassit 市面上很多基于 javaagent 实现的非入侵的全链路监控都是使用的此框架完成,因为它的性能稳定,操作简单,功能丰富,既可以使用提供的 API 也可以操作字节码,所以使用起来会更加方便,遇到问题也可以很快的找到解决方案。
3. Byte Buddy 我是非常喜欢这个框架,因为他可以让对字节码的操作简化为像写普通的程序代码一样,非常容易完成一些需求逻辑的实现,并且它还是一个获奖项目!
最后说明:
其实你可以把几款字节码插桩组件都了解下,完成同一个复杂场景的功能,看看各自的实现是否能满足你的需要,之后选取那个最合适你的。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册