Что-то интерпретировать и запустить сгенерированный байт-код в Java? - PullRequest
6 голосов
/ 25 июня 2009

Я пишу игрушечный интерпретатор с REPL на Java. Я хотел бы сгенерировать байт-код из языка и запустить его вместо интерпретации AST и его запуска.

Так как моя Java немного ржавая, возможно ли запускать сгенерированный байт-код на лету на JVM?

Ответы [ 2 ]

7 голосов
/ 25 июня 2009

Вы можете использовать java.lang.Classloader.defineClass (), который превращает байт-код в объект Class. Вы можете вызвать newInstance () для получающегося объекта Class, и все готово.

1 голос
/ 26 июня 2009

Посмотрите на Javassist, который содержит компилятор фрагментов, позволяющий вам компилировать фрагменты Java в байт-код и определять их как метод в классе, который затем можно вызывать.

...