私はJavaでREPLを使っておもちゃの通訳を書いています。私は、ASTを解釈して実行するのではなく、その言語からバイトコードを生成して実行したいと思います。何かを解釈し、Javaで生成されたバイトコードを実行しますか?
私のJavaは少し錆びているので、JVMのオンザフライで生成されたバイトコードを実行することは可能ですか?
私はJavaでREPLを使っておもちゃの通訳を書いています。私は、ASTを解釈して実行するのではなく、その言語からバイトコードを生成して実行したいと思います。何かを解釈し、Javaで生成されたバイトコードを実行しますか?
私のJavaは少し錆びているので、JVMのオンザフライで生成されたバイトコードを実行することは可能ですか?
java.lang.Classloader.defineClass()を使用すると、バイトコードをClassオブジェクトに変換できます。結果のClassオブジェクトに対してnewInstance()を呼び出すことができます。
スニペットコンパイラを含むJavassistを見てください。Javaスニペットをバイトコードにコンパイルし、呼び出すことができるクラスのメソッドとして定義することができます。