Java字节码增强技术

文章目录

  • 字节码
  • 字节码增强
  • 字节码增强技术


字节码

字节码含义:待补充。

Java为了能让Java程序编译一次到处运行,用Java 编译器将程序对源代码编译生成固定格式的字节码(.class文件)供JVM使用。

因此理论上来说,只要符合JVM规范的字节码文件,就可以在JVM上运行,不同的JVM类语言(如Scala、Groovy、Kotlin)编译成字节码都可在JVM运行,除此之外,如果你对JVM的字节码规范非常了解的话,通过自己按照JVM规范自己写也是可以的。

字节码增强

简单理解就是通过某种手段或者技术修改编译好的字节码,让新生成的字节码能满足我们的定制需求。

这里说的需求就有很多了,比如常用的AOP底层很多就是使用字节码增强来达到切面拦截,再比如微服务中的链路追踪就使用了字节码增强(仅仅只一些Java客户端)来进行埋点标记来记录调用链关系的,所以了解字节码增强对一些框架能有更深入对理解,对问题排查有很大对帮助。

字节码增强技术

上面说的通过某种手段或者技术到底指哪些呢?我们最常用的Java Proxy也是一种增强技术,另外常用的还有 ASMAspectJJavassist等常用的技术。

  • ASM在指令层次操作字节码的,需要对JVM的指令有一定的了解,同时众多的指令也很难记住,操作比较高;
  • AspectJ扩展了Java,定义了一些专门的AOP语法,其中Spring AOP就使用了AspectJ;
  • Javassist是强调源代码层次操作字节码的框架,操作起来很容易入手。


参考文章:字节码增强技术-Javassist

你可能感兴趣的:(Java,java)