6

有几种语言/运行时的JVM之上:如的JRubyGroovy的Jython的Clojure的犀牛斯卡拉,等等...基于JVM的语言/运行时如何生成Java字节码?

  • 这些如何生成 Java字节码?
  • 是否有标准化为此?
  • 生成的字节码如何得到执行

(或者是我的假设错了,有的提到的语言做生成的字节码?)

回答

9

他们中的一些生成的字节码。一些有一个作为解释器执行的运行时系统。有些将两者融为一体。毕竟,JVM具有一定的体系结构和一系列指令,但CPU恰好不存在。您使用代码生成器的目标与您为任何CPU生成目标代码的方式相同。 (现在公平地说,它的指令集非常重视Java的功能和需求,但它仍然足以支持其他模型。)

有多种方法可以生成JVM字节码。您可以手动处理自己的.class文件生成例程(因为格式和指令集是well-specified)。您可以使用一些库,如ASMBCEL(这是我认为最常用的方法)。或者您可以生成Java代码作为您的中间表示,然后使用通常的Java工具进行编译。

您以执行Java编译代码的相同方式执行代码:Java运行时加载生成的.class文件并开始运行。这也是specification的一部分。

相关问题