Java 8 | Nashorn
Nashorn
是一個javascript
引擎。
從JDK 1.8
開始,Nashorn
取代Rhino
(JDK 1.6
, JDK1.7
)成為Java
的嵌入式JavaScript
引擎。 Nashorn
完全支持ECMAScript 5.1
規範以及一些擴展。它使用基於JSR 292
的新語言特性,其中包含在JDK 1.7
中引入的invokedynamic
,將JavaScript
編譯成Java
字節碼。
與先前的Rhino
實現相比,這帶來了2
到10
倍的性能提升。
jjs
jjs
是個基於Nashorn
引擎的指令行工具。它接受一些JavaScript
源程式碼為參數,並且執行這些源程式碼。如果想要更了解可以看官方文件
例如,我們創建一個具有如下內容的fun.js
文件:
1 | function f() { |
打開指令提示字元,輸入以下指令:
1 | $ jjs fun.js |
輸出的結果為:
1 | 2 |
註:在安裝完
JDK8
,要設定好環境變數(PATH)中包括JDK
的bin
目錄。(不要以為打Java -v,有顯示就表示有指定好唷)
jjs 交互式編程
打開指令提示字元,輸入以下指令:
1 | $ jjs |
傳遞參數
打開指令提示字元,輸入以下指令:
1 | $ jjs -- a b c |
Java 中調用 JavaScript
使用ScriptEngineManager
,JavaScript
程式碼可以在Java
中執行,如下:
1 | Java8Tester.java 文件 |
輸出的結果為:
1 | $ java JavaTester |
JavaScript 中調用 Java
以下演示如何在JavaScript
中引用Java
類:
1 | var BigDecimal = Java.type('java.math.BigDecimal'); |
輸出的結果為:
1 | $ jjs fun.js |
註:以上參考了
【JDK8】JavaScript 引擎 Nashorn 之 jjs
Stream 與平行化
Java 8 Lambda新語法,簡化程式,增強效能
Java 8 新特性
Java 8的新特性—终极版
现代化 Java - Java8 指南