脚本引擎介绍
-使得Java应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在Java平台上调用各种脚本语言的目的。
-Java脚本API是连通Java平台和脚本语言的桥梁。
-可以把一些复杂异变的业务逻辑交给脚本语言处理,这又大大提高了开发效率。
脚本引擎执行javascript使用
Rhino是一种使用Java 语言编写的JavaScript 的开源实现,原先由Mozilla开发,现在被集成进JDK 6.0。
1、简单使用
public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, ScriptException { ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); //实现类是NashornScriptEngine ScriptEngine js = scriptEngineManager.getEngineByName("javascript"); String str = "function add(a,b){return a+b;}"; js.eval(str); Invocable js1 = (Invocable) js; Object add = js1.invokeFunction("add", new Object[]{1, 2}); System.out.println(add); String jsCode = "var list=java.util.Arrays.asList("a","b")"; //String jsCode = "var list=java.util.Arrays.asList(["a","b"])"; js.eval(jsCode); List<String> list = (List<String>) js.get("list"); System.out.println(list); }
2、执行js文件脚本
a.js
function test() { print("test") } test();
public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, ScriptException { InputStream resourceAsStream = Test1.class.getClassLoader().getResourceAsStream("a.js"); ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); ScriptEngine js = scriptEngineManager.getEngineByName("javascript"); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(resourceAsStream)); js.eval(bufferedReader); bufferedReader.close(); }