目前我在我的应用程序中使用Rhino。我需要评估一些 JavaScript ant 从中获取值(我不需要通过 JavaScript 使用 Java 类)。但速度太慢了。也许有什么方法可以将 V8 与 Java 应用程序一起使用?
更新:
我有大量不同类型的对象。我需要一个灵活的机制来验证和转换这些对象到所需的形式(用户应该能够更改验证和转换的规则(在运行时),即在Java中硬编码这些规则不合适)。 现在,Rhino 上一切正常,但性能很差。我想过使用 NodeJS,但似乎与它通信、通过进程进行对象序列化等等 - 这些都会花费很大。
最佳答案
您绝对确定您确实需要
eval
吗?实际上需要eval
的地方非常非常少。您可以使用
ProcessBuilder
外壳到底层系统可用的任何进程。我想说它比 Rhinoeval
更快的可能性很低。您可以保留
NodeJS
与您的应用程序一起运行的进程,您通过套接字与之通信。这可能会赢得与Rhino中的eval
的速度竞赛。
如果您举例说明您实际想要实现的目标,人们可能会为您提出更好的方法。
关于Java 的 JavaScript 引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4719055/