在Java 8 Nashorn JavaScript引擎中同时加载脚本是否有意义

Does it make sense to load scripts concurrently in Java 8 Nashorn JavaScript engine

本文关键字:加载 脚本 是否 有意义 Java Nashorn JavaScript 引擎      更新时间:2023-09-26

Java 8 Nashorn JavaScript引擎中同时加载脚本以加快启动速度是否有意义?即使脚本不修改全局变量,它也会解决任何问题吗?我在javax.script.ScriptEngine javadocs中没有找到任何信息。

此外,当同时从多个线程调用脚本时,Nashorn 本身是否可以并行加载脚本engine.eval(...)?这样做安全吗?如果没有,那么在脚本加载过程中添加并行性的整个想法就注定要失败。

脚本文件(懒惰或急切地)编译为 CompiledScript 然后评估它们可能是一个很好的做法。

以下是示例代码: https://github.com/xqbase/util/tree/master/src/main/java/com/xqbase/util/script

Nashorn 不是线程安全的,以及许多 JS 引擎(如 v8)。但是,如果全局变量是线程安全的,则同时调用 CompiledScript.eval() 似乎没有问题。

参见另一个问题 Java Scripting with Nashorn (JSR 223) & Pre-compilation