基于JVM的语言/运行时如何生成Java字节码?

6

在JVM上有几种语言/运行时,例如JRubyGroovyJythonClojureRhinoScala等。

  • 这些语言如何生成Java字节码?
  • 是否有标准化的来完成这个过程?
  • 生成的字节码如何执行

(或者我的假设是错误的,其中一些提到的语言不会生成字节码吗?)

1个回答

10
一些生成字节码,一些有运行时系统作为解释器执行,一些则混合两者。JVM实际上是一个CPU(只是不存在),具有特定的体系结构和一组指令。您可以像为任何CPU生成目标代码一样使用代码生成器来针对它进行操作。虽然它的指令集非常专注于Java的功能和需求,但它仍然足够通用以支持其他模型(勉强)。
有多种方法可以生成JVM字节码。您可以手动编写自己的.class文件生成例程(因为格式和指令集well-specified)。您可以使用许多库,例如ASMBCEL(我认为这是最常见的方法)。或者,您可以将Java代码生成为中间表示,然后使用通常的Java工具进行编译。
您可以像执行Java编译代码一样执行代码:Java运行时加载生成的.class文件并开始运行。这也是specification的一部分。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接