我如何在Java中使用JavaScript?

我想build立一个小的产品,我想给一种function,在其中用户可以写一个脚本语言的JavaScript类。

而且从JavaScript能够build立对象和调用它们的方法。

有这个框架吗?

犀牛是你在找什么。

Rhino是完全用Java编写的JavaScript的开源实现。 它通常embedded到Java应用程序中,为最终用户提供脚本。

更新:现在,用于Java的更高性能的JavaScript引擎Nashorn可以使用jdk8。

Java包含一个从版本6开始的脚本语言扩展包 。

请参阅Rhino项目文档以embeddedJava解释器 。

[编辑]

下面是如何将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()); } } }
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()); } } } 

看看犀牛: http : //www.mozilla.org/rhino/

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

包含在JDK 6中的Rhino JavaScript引擎正在被用于JDK 8的新引擎Nashorn所取代。

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