Java的JavaScript引擎

目前我在我的应用程序中使用Rhino。 我需要从中评估一些JavaScript ant get值(我不需要通过JavaScript使用Java类)。 但它太慢了。 也许有任何方法可以将V8与Java应用程序一起使用?

更新:

我有大量不同类型的对象。 我需要一种灵活的机制来validation并将这些对象转换为所需的forms(用户应该能够更改validation和转换的规则(在运行时),即用Java编写这些规则的硬编码不合适)。 现在一切都适用于Rhino,但性能很糟糕。 我想过使用NodeJS,但似乎与它进行通信,通过进程对象序列化等等 – 这些都将花费很多。

  1. 确定你真的需要eval吗? 很少有地方需要进行eval

  2. 您可以使用ProcessBuilder来支持底层系统可用的任何进程。 我会说它比犀牛eval速度快的几率很低。

  3. 您可以将NodeJS进程与您通过套接字进行通信的应用程序一起运行。 这可能会赢得与犀牛eval的速度竞赛。

如果您举例说明您实际想要实现的目标,那么人们可能会为您提供更好的方法。

看看javax.script.ScriptEngine 。 它是一个标准的Java包,允许evals和数据绑定:

 ScriptEngineManager engineMgr = new ScriptEngineManager(); ScriptEngine engine = engineMgr.getEngineByName("JavaScript"); Bindings bindings = engine.createBindings(); String script = "javascript to eval goes here....."; bindings.put(varName1, value1); bindings.put(varName2, value2); Object obj = engine.eval(script, bindings)