慕工程0101907
2023-09-13 15:29:01
我在 Java 11 中使用 Nashorn JavaScript 引擎,它運(yùn)行良好,但很快就會(huì)被棄用。我嘗試過(guò) GraalVM,我發(fā)現(xiàn)它更糟糕,因?yàn)閳?zhí)行一個(gè)簡(jiǎn)單的表達(dá)式(例如 2+3)需要 13-14 秒。我是否可以使用其他替代方案,或者我應(yīng)該嘗試使用其他方法(如果有)使用 GraalVM?ScriptEngineManager mgr = new ScriptEngineManager();ScriptEngine engine = mgr.getEngineByName("javascript");engine.eval("2+3");
2 回答

qq_遁去的一_1
TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
更新(2022 年 6 月):
截至2022年,J2V8似乎也維護(hù)得很差。
最好把目光投向Javet
如果有人仍然認(rèn)為這個(gè)問(wèn)題相關(guān),那么 Nashorn/Rhino 腳本引擎的一個(gè)可行的、仍然積極維護(hù)的替代方案是JVM 的J2V8綁定。
通過(guò) JNI 內(nèi)置多平臺(tái)支持
盡管其機(jī)制與 API 略有不同ScriptEngine
,但性能(如預(yù)期)更好。而且您不必處理奇怪的副作用,例如由于濫用 API 導(dǎo)致的意外類加載。
我自己過(guò)去曾成功地使用過(guò)它。

倚天杖
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以使用Rhino作為替代品
Rhino 仍然作為一個(gè)開源項(xiàng)目進(jìn)行維護(hù),因此有著社區(qū)參與的歷史。對(duì)于某些用途,它顯然更優(yōu)越,因?yàn)樗膯?dòng)時(shí)間更快。
添加回答
舉報(bào)
0/150
提交
取消