13

我正在寻找一个维护良好且具有直观 API 的 Java 字节码操作库。那里似乎有很多。关于尝试哪些建议?

4

3 回答 3

6

您的问题的最佳答案将取决于您的具体需求和目标;如果您可以扩展您要完成的工作,我也许可以提供更量身定制的回应。

然而,根据我的经验,作为替代,ASM提供了成熟度、灵活性和易用性的最佳组合:

  • 它处于相对活跃的开发阶段:尽管最新版本是 2009 年 6 月发布的,但开发人员仍会定期对他们的 VCS 进行提交。
  • 它已经在许多著名的 Java 产品中得到广泛使用,例如 AspectJ、Groovy、Cobertura 和许多其他产品,这保证了广泛的用户基础和广泛的支持社区。
  • 它的文档相当完整,并且有许多教程、用户指南和参考文档可从OW2 联盟和整个社区获得。

注意下面留下的@Yuri 评论描述了我个人尚未遇到的情况,但这可能会构成重大障碍。在评估各种字节码操作库时,请牢记他的观察/经验。

于 2010-03-28T08:05:21.530 回答
4

这实际上取决于您如何定义直观;-) 我两周前开始使用ASM来完成我当前项目中的某项任务,它就像一个魅力。我只花了几个小时来理解它并能够使用它,但我不会准确地调用 API 直观。但是如果你对 Java 字节码有一点了解,并且熟悉访问者模式,那么学习曲线并不是很高,IMO。

ASM 的另一个优点是它至少在 Sun JDK 中显然与标准 API 捆绑在一起,尽管在不同的包中(com.sun.xml.internal.ws.org.objectweb.asm 和子包)。

于 2010-03-28T08:08:02.857 回答
3

看看这篇文章: http: //www.pabrantes.net/blog/space/start/2008-03-24/1

有点旧但仍然相关。

ASM 和 Javassist 是现在最常用的。Bcel快死了。

于 2010-03-28T08:55:42.107 回答