it-swarm.cn

如何在Java中使用JavaScript?

我想开发一个小型产品,在其中我想提供一种功能,使用户可以编写脚本语言的JavaScript。

而且还可以通过JavaScript构建对象并在其上调用方法。

有什么框架吗?

39
Dungeon Hunter

犀牛 是您要寻找的。

Rhino是完全用Java编写的JavaScript的开源实现。它通常嵌入Java)应用程序中,以向最终用户提供脚本。

更新:现在 Nashorn ,这是性能更高的Java JavaScript引擎,可与jdk8一起使用。

37
kunal

Java从版本6开始包含 (脚本语言扩展包

请参阅 Rhino项目文档,以在Java中嵌入JavaScript解释器

[编辑]

这是一个如何将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.
  }
}
15
maerics

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

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

6
pardeep131085

JDK 6中包含的Rhino JavaScript引擎将被名为JDK 8的名为Nashorn的新引擎替换。

Oracle Nashorn博客 包含新闻以及源代码示例。

4
Richard Chambers

我只是想回答这个问题的新内容-J2V8

作者Ian Bull说:“ Rhino和Nashorn是两个常见的JavaScript运行时,但是它们在许多方面都不符合我们的要求:

都不支持“原语”。与这些平台的所有交互都需要包装器类,例如Integer,Double或Boolean。 Android不支持Nashorn。 Android不支持Rhino编译器优化。两个引擎都不支持在Android上进行远程调试。“”

高效Java&JavaScript集成

Github链接

0
Ashok M A