我想构建一个小产品,我想在其中提供一种功能,用户可以在其中编写脚本语言类型的 JavaScript。
并且还可以从 JavaScript 构建对象并在其上调用方法。
有没有这方面的框架?
我想构建一个小产品,我想在其中提供一种功能,用户可以在其中编写脚本语言类型的 JavaScript。
并且还可以从 JavaScript 构建对象并在其上调用方法。
有没有这方面的框架?
Java 包含一个从版本 6 开始的脚本语言扩展包。
有关在 Java 中嵌入 JavaScript 解释器的信息,请参阅Rhino 项目文档。
[编辑]
下面是一个关于如何将 Java 对象公开给解释脚本的小示例:
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.
}
}
您可以使用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());
}
}
}
我只是想为这个问题回答一些新的东西 - J2V8
。
作者 Ian Bull 说:“Rhino 和 Nashorn 是两种常见的 JavaScript 运行时,但它们在许多方面都不符合我们的要求:
都不支持“原语”。与这些平台的所有交互都需要包装类,例如 Integer、Double 或 Boolean。Android 不支持 Nashorn。Android 不支持 Rhino 编译器优化。这两个引擎都不支持在 Android 上进行远程调试。""