Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

7年前关闭。



Improve this question




我知道BCEL,但是这个项目似乎已经死了,因为它两年没有发布了。 Java世界在继续发展。例如,JDK 1.6具有新的类文件格式。

因此,可以使用什么库为JVM创建字节码。如果没有库,那么如果我可以详细操作生成的代码(例如字节码汇编器),则程序也可以。

您可以推荐哪种软件?容易使用吗?有好的例子/教程?

编辑:对于所有询问:是的,javac很好。但是对于在运行时生成某些类,直接访问字节码的路径会更干净。

最佳答案

ASM

http://asm.objectweb.org/

它比BCEL快得多,并且支持泛型和注释。
关于其体系结构的一点是:为了确保高性能,ASM是围绕引发事件的解析器构建的(与BCEL解析器构建数据结构的方式相反)。这有点类似于SAX和DOM解析器之间的区别。需要一些练习才能习惯这种思维。

编辑(遵循McDowell的评论):确实,访问者在ASM中使用率很高,但它比普通访问者更多:访问器数据结构由解析器延迟构建,因此,如果您对类文件的某些部分不感兴趣(例如,如果您想知道方法的名称,但不必关心它们的主体),则可以从visitMethod()方法返回null。这将使解析器跳过方法主体部分,从而防止完全描述该方法的对象网的(昂贵)构造。

关于java - 哪个库/程序可用于生成Java字节码? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/291492/

10-13 00:00