說說如何在 Java 中執(zhí)行 JavaScript 腳本

Java 是強(qiáng)類型的靜態(tài)語言,即所有的代碼在運(yùn)行之前都必須先進(jìn)行嚴(yán)格的類型檢查并編譯為 JVM 字節(jié)碼。這樣做雖然保證了安全與性能,但卻犧牲了靈活性。而那些動(dòng)態(tài)語言(JavaScript 、Python 等)卻可以在程序運(yùn)行時(shí)改變程序的結(jié)構(gòu)以及變量類型,因此更具靈活性。

JSR-223 規(guī)范定義了 Java 虛擬機(jī)中運(yùn)行的腳本與 Java 程序之間的交互方式,在 Java 6.0+ 的版本現(xiàn)已全面支持該規(guī)范啦O(∩_∩)O~

Java 6.0+ 內(nèi)置了 JavaScript 解析引擎 Rhino,所以可以很方便地調(diào)用 JavaScript 編寫的動(dòng)態(tài)腳本,實(shí)現(xiàn)更靈活的業(yè)務(wù)邏輯。

我們使用 Rhino 實(shí)現(xiàn)了一個(gè) JavaScript 乘法函數(shù),作為示例:

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;
//調(diào)用注冊函數(shù)
System.out.println(invocable.invokeFunction("multiply", 2, 3));

invokeFunction() 第一個(gè)參數(shù)是調(diào)用函數(shù)的名稱,其它參數(shù)是該函數(shù)需要傳入的參數(shù)列表。

輸出結(jié)果:

6.0

是不是很簡單呀 O(∩_∩)O哈哈~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容