Как я могу динамически вызывать Java-код?

Как я могу написать код Java, который выполняется так же, как код javascript, используемый вместе с функцией eval?

То, что я хотел бы достичь, было бы примерно так:

System.execute("String str = \"test\"; System.out.println(str);");

который напечатает слово «тест». (10x деманн)

Пример кода очень поможет.


person Community    schedule 25.02.2009    source источник
comment
Это может быть только я, но ваш вопрос не имеет большого смысла. JavaScript — это язык веб-скриптов, где java запускается в фреймворке java. Вы можете создавать java-апплеты, но я не думаю, что вы имеете в виду это.   -  person regex    schedule 26.02.2009
comment
Я предполагаю, что ссылка на JavaScript была просто примером того, чего он хочет достичь.   -  person Michael Myers    schedule 26.02.2009
comment
Я думаю, что он хочет что-то вроде: System.execute(String str(\test\); System.out.println(str);); который напечатает слово «тест».   -  person Frank    schedule 26.02.2009
comment
возможный дубликат Есть ли функция eval() в Java?   -  person Raedwald    schedule 10.12.2014


Ответы (4)


Посмотрите на BeanShell или Groovy. Оба дадут вам разумные решения, но эти решения основаны на моей интерпретации вашей проблемы, которая может быть ошибочной.

person Bill K    schedule 25.02.2009

Я использовал движок JavaScript, поставляемый с Java 6, и он работает достаточно хорошо. Характеристики двигателя очень достойные.

Посетите страницу http://java.sun.com/javase/6/docs/technotes/guides/scripting/programmer_guide/index.html

person Ravi Wallau    schedule 26.02.2009

Я считаю, что API-интерфейс компилятора присутствует в текущей версии Java SE 6. См. javadoc.

См. эту запись в блоге для подробностей и примера.

person Brian Agnew    schedule 26.02.2009

Для полноты картины API-интерфейс компилятора появится в следующей версии Java.

person Tim Williscroft    schedule 26.02.2009
comment
API-интерфейс компилятора находится в Java 6. Он работает, но его неудобно использовать. Однако вы можете использовать BeanShell и JCI, если у вас нет Java 6. - person Peter Lawrey; 26.02.2009