Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
KnowledgePlanet
doc
提交
df657fcd
doc
项目概览
KnowledgePlanet
/
doc
通知
1173
Star
792
Fork
102
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
41
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
2
Wiki
分析
仓库
DevOps
项目成员
Pages
doc
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
41
Issue
41
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
2
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
df657fcd
编写于
7月 02, 2021
作者:
小傅哥
⛹
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update README.md
上级
3946698a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
21 addition
and
0 deletion
+21
-0
notes/README.md
notes/README.md
+21
-0
未找到文件。
notes/README.md
浏览文件 @
df657fcd
想深入学习一个字节码框架,听说了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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录