jav*_*top 6 java compiler-construction jvm programming-languages bytecode
JVM上有几种语言/运行时:例如JRuby,Groovy,Jython,Clojure,Rhino,Scala等等......
(或者我的假设是错误的,并且一些提到的语言不会生成字节码?)
其中一些生成字节码.有些具有作为解释器执行的运行时系统.有些人混合了两者.毕竟,JVM是一个具有特定架构和一组指令的CPU(恰好不存在).您使用代码生成器来定位它的方式与为任何CPU生成目标代码的方式相同.(现在公平地说它的指令集非常注重Java的功能和需求,但它仍然足以支持其他模型.几乎没有.)
有多种方法可以生成JVM字节码.您可以处理自己的.class文件生成例程(因为格式和指令集已明确指定).您可以使用许多库,如ASM或BCEL(我认为这是最常用的方法).或者您可以生成Java代码作为您的中间表示,然后使用通常的Java工具进行编译.
您执行代码的方式与执行Java编译代码的方式相同:Java运行时加载生成的.class文件并开始运行.这也是规范的一部分.