解决方法@H_301_4@
使用Rhino上的
JavaScript API,您只需使用Compilable接口编译脚本即可.例如:
public class CompileScript {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager engineManager = new ScriptEngineManager();
ScriptEngine scriptEngine = engineManager.getEngineByName("js");
//cast to Compilable engine,this is safe for Rhino
Compilable c = (Compilable) scriptEngine;
CompiledScript script = c.compile("print('Hello World')"); //compile
script.eval();
}
}
但是,当运行几次脚本时,这会带来好处.基本上它减少了每次重新解释的开销.从CompiledScript javadoc:
Extended by classes that store results of compilations. State might be stored in the form of Java classes,Java class files or scripting language opcodes. The script may be executed repeatedly without reparsing.
无论如何,我认为你应该看一下Rhino JavaScript Compiler.它“将JavaScript源代码转换为Java类文件”.
还有一个V8 Java实现.检查jav8.
public class CompileScript { public static void main(String[] args) throws ScriptException { ScriptEngineManager engineManager = new ScriptEngineManager(); ScriptEngine scriptEngine = engineManager.getEngineByName("js"); //cast to Compilable engine,this is safe for Rhino Compilable c = (Compilable) scriptEngine; CompiledScript script = c.compile("print('Hello World')"); //compile script.eval(); } }
但是,当运行几次脚本时,这会带来好处.基本上它减少了每次重新解释的开销.从CompiledScript javadoc:
Extended by classes that store results of compilations. State might be stored in the form of Java classes,Java class files or scripting language opcodes. The script may be executed repeatedly without reparsing.
无论如何,我认为你应该看一下Rhino JavaScript Compiler.它“将JavaScript源代码转换为Java类文件”.
还有一个V8 Java实现.检查jav8.