本章小宋講一下JavaScript的引擎Nashorn
目錄
- Nashorn
- jjs
- jjs 互動式編程
- jjs傳遞引數
- Java 中呼叫 JavaScript
- JavaScript 中呼叫 Java
Nashorn
Nashorn 一個 javascript 引擎,
從JDK1.8開始,Nashorn取代Rhino(JDK 1.6, JDK1.7)成為Java的嵌入式JavaScript引擎,Nashorn完全支持ECMAScript 5.1規范以及一些擴展,它使用基于JSR292的新語言特性,其中包含在JDK 7中引入的 invokedynamic,將JavaScript編譯成Java位元組碼,
與先前的Rhino實作相比,這帶來了2到10倍的性能提升,
jjs
jjs是個基于Nashorn引擎的命令列工具,它接受一些JavaScript源代碼為引數,并且執行這些源代碼,
例如,我們創建一個具有如下內容的sample.js檔案:
print('Hello World!');
打開控制臺,輸入以下命令:
$ jjs sample.js
以上程式輸出結果為:
HelloWorld!
jjs 互動式編程
打開控制臺,輸入以下命令:
$ jjs
jjs>print("Hello, World!")
Hello,World!
jjs> quit()
>>
jjs傳遞引數
打開控制臺,輸入以下命令:
$ jjs -- a b c
jjs>print('字母: '+arguments.join(", "))
字母: a, b, c
jjs>
Java 中呼叫 JavaScript
使用ScriptEngineManager, JavaScript 代碼可以在 Java 中執行,實體如下:
public class Java8Tester {
public static void main(String args[]) {
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn");
String name = "Runoob";
Integer result = null;
try {
nashorn.eval("print('" + name + "')");
result = (Integer) nashorn.eval("10 + 2");
} catch (ScriptException e) {
System.out.println("執行腳本錯誤: " + e.getMessage());
}
System.out.println(result.toString());
}
}
輸出:
Runoob
12
JavaScript 中呼叫 Java
var BigDecimal=Java.type('java.math.BigDecimal');
function calculate(amount, percentage){
var result =new BigDecimal(amount).multiply(
new BigDecimal(percentage)).divide(new BigDecimal("100"),2,BigDecimal.ROUND_HALF_EVEN);
return result.toPlainString();
}
var result = calculate(568000000000000000023,13.9);
print(result);
我們使用jjs 命令執行以上腳本,輸出結果如下:
$ jjs sample.js
78952000000000002017.94
講到這里本章對Java8系列之Nashorn使用的講解也就結束了,如果想了解更多知識可以在對應的專欄中看系列文章,謝謝大家的觀看,希望能給各位同學帶來幫助,如果覺得博主寫的還可以的,可以點贊收藏, 😉
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/239683.html
標籤:其他
上一篇:spring+mybatis+spring-mvc詳細配置介紹
下一篇:作業268:uni--選單頁面
