6
有幾種語言/運行時的JVM之上:如的JRuby,Groovy的,Jython的,Clojure的,犀牛,斯卡拉,等等...基於JVM的語言/運行時如何生成Java字節碼?
- 這些如何生成 Java字節碼?
- 是否有標準化庫爲此?
- 生成的字節碼如何得到執行?
(或者是我的假設錯了,有的提到的語言做不生成的字節碼?)
有幾種語言/運行時的JVM之上:如的JRuby,Groovy的,Jython的,Clojure的,犀牛,斯卡拉,等等...基於JVM的語言/運行時如何生成Java字節碼?
(或者是我的假設錯了,有的提到的語言做不生成的字節碼?)
他們中的一些生成的字節碼。一些有一個作爲解釋器執行的運行時系統。有些將兩者融爲一體。畢竟,JVM具有一定的體系結構和一系列指令,但CPU恰好不存在。您使用代碼生成器的目標與您爲任何CPU生成目標代碼的方式相同。 (現在公平地說,它的指令集非常重視Java的功能和需求,但它仍然足以支持其他模型。)
有多種方法可以生成JVM字節碼。您可以手動處理自己的.class文件生成例程(因爲格式和指令集是well-specified)。您可以使用一些庫,如ASM或BCEL(這是我認爲最常用的方法)。或者您可以生成Java代碼作爲您的中間表示,然後使用通常的Java工具進行編譯。
您以執行Java編譯代碼的相同方式執行代碼:Java運行時加載生成的.class文件並開始運行。這也是specification的一部分。