說說如何在 Java 中執行 JavaScript 指令碼
阿新 • • 發佈:2019-02-06
Java 是強型別的靜態語言,即所有的程式碼在執行之前都必須先進行嚴格的型別檢查並編譯為 JVM 位元組碼。這樣做雖然保證了安全與效能,但卻犧牲了靈活性。而那些動態語言(JavaScript 、Python 等)卻可以在程式執行時改變程式的結構以及變數型別,因此更具靈活性。
JSR-223 規範定義了 Java 虛擬機器中執行的指令碼與 Java 程式之間的互動方式,在 Java 6.0+ 的版本現已全面支援該規範啦O(∩_∩)O~
Java 6.0+ 內建了 JavaScript 解析引擎 Rhino,所以可以很方便地呼叫 JavaScript 編寫的動態指令碼,實現更靈活的業務邏輯。
我們使用 Rhino 實現了一個 JavaScript 乘法函式,作為示例:
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
String scriptContent = "function multiply(a,b) {return a*b;}";
//註冊指令碼
engine.eval(scriptContent);
Invocable invocable = (Invocable) engine;
//呼叫註冊函式
System.out.println(invocable.invokeFunction ("multiply", 2, 3));
invokeFunction()
第一個引數是呼叫函式的名稱,其它引數是該函式需要傳入的引數列表。
輸出結果:
6.0
是不是很簡單呀 O(∩_∩)O哈哈~