Как я могу использовать Javascript в Java?
Я хотел создать небольшой продукт, в котором я хотел бы дать какую-то особенность, в которой пользователь может написать javascript типа script.
А также из javascript, способного создавать объекты и вызывающие методы на них.
Есть ли какие-либо рамки для этого?
Ответы
Ответ 1
Rhino - это то, что вы ищете.
Rhino - это реализация JavaScript с открытым исходным кодом, полностью написанная в Java. Он обычно встроен в Java-приложения для предоставления сценариев для конечных пользователей.
Обновление:
Теперь Nashorn, который является более совершенным JavaScript Engine для Java, доступен с jdk8.
Ответ 2
Java включает в себя расширительный пакет языка сценариев, начиная с версии 6.
Смотрите документацию проекта Rhino для внедрения интерпретатора JavaScript в Java.
[изменить]
Вот небольшой пример того, как вы можете подвергать объекты Java вашим интерпретируемому script:
public class JS {
public static void main(String args[]) throws Exception {
ScriptEngine js = new ScriptEngineManager().getEngineByName("javascript");
Bindings bindings = js.getBindings(ScriptContext.ENGINE_SCOPE);
bindings.put("stdout", System.out);
js.eval("stdout.println(Math.cos(Math.PI));");
// Prints "-1.0" to the standard output stream.
}
}
Ответ 3
Вы можете использовать ScriptEngine, например:
public class Main {
public static void main(String[] args) {
StringBuffer javascript = null;
ScriptEngine runtime = null;
try {
runtime = new ScriptEngineManager().getEngineByName("javascript");
javascript = new StringBuffer();
javascript.append("1 + 1");
double result = (Double) runtime.eval(javascript.toString());
System.out.println("Result: " + result);
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}
Ответ 4
Посмотрите на Rhino: http://www.mozilla.org/rhino/
Ответ 5
Oracle Nashorn обеспечивает интероперабельность между мирами Java и JavaScript. Это означает, что ваш код Java может вызвать код JavaScript, и наоборот.
Основное руководство по пониманию того, как писать программу с использованием Oracle Nashorn.
Ответ 6
JavaScript-движок Rhino, который был включен в JDK 6, заменяется новым движком Nashorn для JDK 8.
Блог Oracle для Nashorn содержит новости, а также примеры исходного кода.