標籤:處理 auth nbsp style ace return get 作用 mod
指令碼語言的3大特徵:
1、靈活:指令碼語言一般是動態類型,可以不聲明變數類型直接使用,也可以在運行期改變類型;
2、便捷:指令碼語言是解釋性語言,在運行期變更非常方便,而不用重啟服務
3、簡單:指令碼語言文法比較簡單,易學
另外:java6以上預設支援JavaScript
例子:
package com.test;import java.io.FileNotFoundException;import java.io.FileReader;import javax.script.Bindings;import javax.script.Invocable;import javax.script.ScriptContext;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;import javax.script.ScriptException;/** * java執行指令碼語言 * @author jd * */public class javascript { public static void main(String[] args){ //擷取一個JavaScript執行引擎 ScriptEngine se = new ScriptEngineManager().getEngineByName("javascript"); //聲明上下文 變數 Bindings bind = se.createBindings(); bind.put("variable","結果:"); //變數的範圍,當前引擎範圍內 se.setBindings(bind,ScriptContext.ENGINE_SCOPE); try { //執行js代碼 se.eval(new FileReader("E:/model.js")); //是否可調用方法 if(se instanceof Invocable){ Invocable in = (Invocable) se; //執行js的方法 String result = (String) in.invokeFunction("formula",2,10); System.out.println(result); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (ScriptException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } }}
情景1:
function formula(a,b){
return variable+ (a*b);
}
結果:
結果:20
情景2:
function formula(a,b){
return variable+ (a+b);
}
結果:12
情景...
所以在變更業務時,不需要重啟 java伺服器,就可順利變更業務,對於變更頻繁的業務,這就是很好的解決方案。
PS:Java 6 不僅僅提供代碼級的指令碼內建,還提供了jrunscript命令工具,它可以在批處理中發揮巨大的效能,而且不需要通過JVM解釋指令碼語言,可直接通過該工具運行指令碼;
提高java編程品質 - (一)易變業務使用指令碼語言編寫