我如何在Java中使用JavaScript?

Dun*_*ter 39 javascript java apache object

我想构建一个小产品,我希望在其中提供一种功能,用户可以在其中编写脚本语言类JavaScript.

而且还能从JavaScript中构建对象并调用它们的方法.

这有什么框架吗?

kda*_*bir 37

犀牛正是你要找的.

Rhino是一个完全用Java编写的JavaScript的开源实现.它通常嵌入到Java应用程序中,以便为最终用户提供脚本.

更新:现在Nashorn可以使用jdk8,它是性能更高的JavaScript Engine for Java.


mae*_*ics 15

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.
  }
}
Run Code Online (Sandbox Code Playgroud)

  • +1另请参见这个小的[ScriptEngine示例](http://stackoverflow.com/questions/7441625/how-to-find-a-button-source-in-awt-calculator-homework/7441804#7441804). (2认同)

Ede*_*der 11

您可以使用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());
        }
    }
}


par*_*085 6

Oracle Nashorn提供Java和JavaScript世界之间的互操作性.这意味着您的Java代码可以调用JavaScript代码,反之亦然. 有关如何使用Oracle Nashorn编写程序的基本教程.