6

有幾種語言/運行時的JVM之上:如的JRubyGroovy的Jython的Clojure的犀牛斯卡拉,等等...基於JVM的語言/運行時如何生成Java字節碼?

  • 這些如何生成 Java字節碼?
  • 是否有標準化爲此?
  • 生成的字節碼如何得到執行

(或者是我的假設錯了,有的提到的語言做生成的字節碼?)

回答

9

他們中的一些生成的字節碼。一些有一個作爲解釋器執行的運行時系統。有些將兩者融爲一體。畢竟,JVM具有一定的體系結構和一系列指令,但CPU恰好不存在。您使用代碼生成器的目標與您爲任何CPU生成目標代碼的方式相同。 (現在公平地說,它的指令集非常重視Java的功能和需求,但它仍然足以支持其他模型。)

有多種方法可以生成JVM字節碼。您可以手動處理自己的.class文件生成例程(因爲格式和指令集是well-specified)。您可以使用一些庫,如ASMBCEL(這是我認爲最常用的方法)。或者您可以生成Java代碼作爲您的中間表示,然後使用通常的Java工具進行編譯。

您以執行Java編譯代碼的相同方式執行代碼:Java運行時加載生成的.class文件並開始運行。這也是specification的一部分。

相關問題