java腳本引擎介紹:
- 使得java應(yīng)用程序可以通過(guò)一定的接口與各種腳本引擎交互,從而達(dá)到在java平臺(tái)上調(diào)用各種腳本語(yǔ)言的目的窥翩。
- java腳本API是連通java平臺(tái)和腳本語(yǔ)言的橋梁。
- 可以把一些復(fù)雜的易變的業(yè)務(wù)邏輯交給腳本語(yǔ)言處理撒遣,提高開發(fā)效率载城。
java腳本引擎有很多,這里以javascript為例讯赏。javascript是解釋性語(yǔ)言垮兑,動(dòng)態(tài)性比較好。
package com.test.script;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
/**
* java腳本引擎執(zhí)行javascript代碼
* @author zhb
*
*/
public class JavaScript {
public static void main(String[] args) throws ScriptException, NoSuchMethodException {
// 獲取執(zhí)行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"));
// 定義一個(gè)變量 a
engine.put("a", 3);
// 定義一個(gè)有變量a的公式
String str = "a*2+3";
// 執(zhí)行
Object result = engine.eval(str);
System.out.println(result);
// 定義函數(shù)
String Strfun = "function add(a, b){ var sum = a+b; return sum;}";
engine.eval(Strfun);
// 執(zhí)行js代碼
Invocable invocable = (Invocable)engine;
Object jsresult = invocable.invokeFunction("add", 4, 7);
System.out.println(jsresult);
}
}