字节码编程,Byte-buddy篇一《基于Byte Buddy语法创建的第一个HelloWorld》 作者:小傅哥
博客: https://bugstack.cn (opens new window) 沉淀、分享、成长,让自己和他人都能有所收获! # 一、前言 相对于 小傅哥 (opens new window) 之前编写的字节码编程; ASM 、 Javassist 系列, Byte Buddy 玩法上更加高级,你可以完全不需要了解一个类和方法块是如何通过 指令码 LDC、LOAD、STORE、IRETURN... 生成出来的。就像它的官网介绍; Byte Buddy 是一个代码生成和操作库,用于在 Java 应用程序运行时创建和修改 Java 类,而无需编译器的帮助。除了 Java 类库附带的代码生成实用程序外, Byte Buddy 还允许创建任意类,并且不限于实现用于创建运行时代理的接口。此外, Byte Buddy 提供了一种方便的 API,可以使用 Java 代理或在构建过程中手动更改类。 无需理解字节码指令,即可使用简单的 API 就能很容易操作字节码,控制类和方法。 已支持Java 11,库轻量,仅取决于Java字节代码解析器库ASM的访问者API,它本身不需要任何其他依赖项。 比起JDK动态代理、cglib、Javassist,Byte Buddy在性能上具有一定的优势。 2015年10月,Byte Buddy被 Oracle 授予了 Duke's Choice大奖。该奖项对Byte Buddy的“ Java技术方面的巨大创新 ”表示赞赏。我们为获得此奖项感到非常荣幸,并感谢所有帮助Byte Buddy取得成功的用户以及其他所有人。我们真的很感激! 除了这些简单的介绍外,还可以通过官网: https://bytebuddy.net (opens new window) ,去了解更多关于 Byte Buddy 的内容。 **好!**那么接下来,我们开始从 HelloWorld 开始。深入了解一个技能前,先多多运行,这样总归能让找到学习的快乐。 # 二、开发环境 JDK 1.8.0 byte-buddy 1.10.9 byte-buddy-agent 1.10.9 本章涉及源码在: itstack-demo-bytecode-2-01 ,可以关注 公众号 : bugstack虫洞栈 (opens new window) ,回复源码下载获取。 你会获得一个下载链接列表,打开后里面的第17个「因为我有好多开源代码」 ,记得给个 Star ! # 三、案例目标 每一个程序员,都运行过 N 多个 HelloWorld ,就像很熟悉的 Java ;
public class Hi {
public static void main(String[] args) {
System.out.println("Byte-buddy Hi HelloWorld By 小傅哥(bugstack.cn)");
}
}
1 2 3 4 5 6 7