背景
在項目中需要使用java調用javascript腳本,有兩種方案,一種是faas,使用開源的openwhisk。另一種本地運行的方式,使用jdk的nashorn調用javascript,jdk版本為1.8。
但是在編寫js腳本的時候使用了ECMAScript6中的新特性const和let。在執行的過程中報錯了。
解決方法
原來jdk1.8中的nashorn默認支持的是ECMAScript5.1,而對於ECMAScript6相關特性的支持還不是很完善。但是可以通過jvm參數來開啟jdk1.8對部分ECMAScript6新特性的支持。參數格式如下:
-Dnashorn.args=--language=es6
看了jdk的文檔,從jdk9開始nashorn較好的支持了ECMAScript6。
如果有頻繁的java調用javascript,並且javascript的腳本較復雜,建議還是上faas吧。更可控,而且更安全。性能也沒有問題。