【问题标题】:What is the difference between AspectJ And ASM?AspectJ 和 ASM 有什么区别?
【发布时间】:2016-12-27 03:13:04
【问题描述】:

据我了解,这两个框架都是静态的,将监控代码注入到类代码中。那么,有什么区别呢?

【问题讨论】:

    标签: hook aspectj inject java-bytecode-asm


    【解决方案1】:

    ASM 是一个框架/库,它为您提供 API 来操作现有字节码和/或轻松生成新字节码。

    另一方面,AspectJ 是 Java 语言之上的一种语言扩展,具有自己的语法,专门设计用于使用面向方面的编程概念扩展 Java 运行时的功能。它包括一个编译器/编织器,可以在编译时或运行时运行。

    它们在某种意义上是相似的,都通过对现有字节码的字节码操作和/或生成新字节码来实现其目标。

    ASM 更通用,因为它对如何修改现有字节码没有意见,它只是给你一个 API,你可以用它做任何你想做的事情。另一方面,AspectJ 更具体,范围更窄,它只支持一些预定义的 AOP 构造,但它为您提供了一个接口(aspectj 语言),如果您可以适应这些构造,它会更容易使用为您提供。

    对于我见过的大多数用例,AspectJ 绰绰有余,但在极少数情况下,ASM 可能是一个不错的选择,但您需要更多的编程工作才能获得类似的结果。

    【讨论】:

      猜你喜欢
      • 2011-03-20
      • 1970-01-01
      • 2013-01-05
      • 2021-08-30
      • 2010-10-02
      • 2011-12-12
      • 2010-09-16
      • 2012-03-14
      • 2012-02-06
      相关资源
      最近更新 更多