Java 动态特性三:脚本引擎
2018-03-02 本文已影响0人
真海ice
java脚本引擎介绍:
- 使得java应用程序可以通过一定的接口与各种脚本引擎交互,从而达到在java平台上调用各种脚本语言的目的。
- java脚本API是连通java平台和脚本语言的桥梁。
- 可以把一些复杂的易变的业务逻辑交给脚本语言处理,提高开发效率。
java脚本引擎有很多,这里以javascript为例。javascript是解释性语言,动态性比较好。
package com.test.script;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
/**
* java脚本引擎执行javascript代码
* @author zhb
*
*/
public class JavaScript {
public static void main(String[] args) throws ScriptException, NoSuchMethodException {
// 获取执行javascript代码的脚本的引擎
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine engine = sem.getEngineByName("JavaScript");
// 定义变量
engine.put("msg", "你好");
Object object = engine.get("msg");
System.out.println(object);
// 改变变量的值
engine.eval("msg = 'Hello'");
System.out.println(engine.get("msg"));
// 定义一个变量 a
engine.put("a", 3);
// 定义一个有变量a的公式
String str = "a*2+3";
// 执行
Object result = engine.eval(str);
System.out.println(result);
// 定义函数
String Strfun = "function add(a, b){ var sum = a+b; return sum;}";
engine.eval(Strfun);
// 执行js代码
Invocable invocable = (Invocable)engine;
Object jsresult = invocable.invokeFunction("add", 4, 7);
System.out.println(jsresult);
}
}