【问题标题】:Which one to use cglib or javaassist使用 cglib 或 javaassist 哪一个
【发布时间】:2015-12-03 18:45:53
【问题描述】:

cglib 和 javaassist 有什么区别

  1. cglib 是否创建代理运行时?
  2. javaassist 如何创建代理?
  3. 什么是字节码检测?
  4. hibernate 如何使用这些库?

【问题讨论】:

  • 到目前为止你发现了什么?
  • @AdamMichalik 我对这些不太了解,但休眠已弃用 cglib,这两个用于字节码检测和代理生成。知道的不多。
  • 基于此How to Answer[1] 我会说java辅助[1]:stackoverflow.com/a/32417181/657745
  • 标记 wiki : "cglib 是一个运行时代码生成库,适用于在 Apache 2.0 许可下获得许可的 Java 平台。Cglib 不再处于积极开发阶段。"

标签: java hibernate bytecode javassist cglib


【解决方案1】:

最好的字节码操作库是 ASM (http://asm.ow2.org/)。它非常快速且易于理解。

【讨论】:

    【解决方案2】:

    Byte Buddy 是一个代码生成库,用于在 Java 应用程序运行期间创建 Java 类,无需编译器的帮助。除了代码生成实用程序之外,它还允许创建任意类,并且不限于实现用于创建运行时代理的接口。

    Byte Buddy 是 cglib 和 javaassist 的良好替代品。看看 Byte Buddy、cglib、javaassist 和 jdkproxy 中的Benchmarking various alternatives

    查看SE question 的相关信息。

    关于您的查询:

    字节码检测:(来自cs.helsinki

    字节码检测是通过在虚拟机加载一组类的字节码之前将新功能添加到程序中的过程:

    cglib 和 javassist 都是早期创建的,它们的 API 是围绕 Java 在当时必须提供的语言特性构建的。

    注释是这些库成立后引入的重大创新。

    Byte Buddy 使用注释和特定领域的语言来实现其目标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-12
      • 2010-09-30
      • 2023-04-07
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多