1. 程式人生 > >說說如何在 Java 中執行 JavaScript 指令碼

說說如何在 Java 中執行 JavaScript 指令碼

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哈哈~