2015-04-02 74 views
0

我正在编写自己的小编程语言,编写成java字节码作为我的毕业作品,并且在最后一部分字节码生成时遇到麻烦。我已经为它搜索了一些库,甚至用ASM库编写了一些代码,但是我对这个库很不满意,因为那个事件/访问者(我不知道如何正确调用它)基于架构破坏了我的大脑。所以我需要:Java字节码生成

  • 我只需要生成Java字节码。因为我看了很多比较谈论转换,我不需要它。
  • 我需要了解字节码和JVM是如何工作的。
  • 性能没有什么大不了的。它应该是可以接受的。

那么,什么java字节码生成库更适合我的情况呢?

P.S.另外,我想说,我并不完全拒绝ASM,也许它很好,但在这种情况下,我需要一些东西来理解这种架构,因为现在我无法想象如何正确地使用它。

+0

请参阅http://docs.oracle.com/javase/specs/jvms/se8/html/index.html,特别是[第3章](http://docs.oracle.com/javase/specs/jvms/ se8/html/jvms-3.html),[第4章](http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html)和[第6章](http: //docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html) – Holger 2015-04-02 14:50:48

+0

欢迎来到SO saroff。请避免在寻找软件,链接,书籍等方面寻求帮助,因为这些问题是[关注焦点](http://stackoverflow.com/help/on-topic)。 – 2015-04-04 13:25:14

回答

1

我需要了解字节码和JVM是如何工作的。

是的。这可能是您使用ASM时遇到问题的主要原因。图书馆文档很可能假定您已经熟悉这一点。浏览Java虚拟机规范将给你一个关于字节码的工作原理的基本概念。

+0

我已经学会了一些字节码基础知识,并且在ASM中非常低级别的字节码操作不是那样的事情,我很害怕。但我从未听说过这种基于事件的模型,我不知道如何正确使用它,除了教程示例。 – saroff 2015-04-02 03:58:31

+0

@saroff嗯,我可以建议的唯一的事情是:选择看起来最接近你想要做的事情的教程示例,开始修改它,然后在遇到困难时发布更具体的问题。 – Atsby 2015-04-02 07:30:19

2

我建议你看看使用更高级别的库,如ByteBuddy然而,我所做的是生成Java代码,并在运行时编译它,例如, Java Runtime Compiler

读取调试Java代码通常比字节代码更容易。