鍍金池/ 教程/ Java/ Java8 Nashorn JavaScript引擎
Java8數(shù)據(jù)流
Java8默認(rèn)方法
Java8 Optional類
Java8 Base64
Java8期間及持續(xù)時(shí)間
Java8函數(shù)式接口
Java8 日期時(shí)間API
Java8 本地DateTime API
Java8教程
Java8 Lambda表達(dá)式
Java8環(huán)境設(shè)置
Java8向后兼容
Java8 時(shí)間調(diào)節(jié)器
Java8 ChronoUnits枚舉
Java8方法引用
Java8 Nashorn JavaScript引擎
Java8 時(shí)區(qū)DateTime API

Java8 Nashorn JavaScript引擎

使用Java8,Nashorn大大提高了JavaScript 引擎引入,以取代現(xiàn)有的Nashorn Java腳本引擎。Nashorn提供2至10倍更好的性能,因?yàn)樗苯泳幾g代碼在存儲(chǔ)器,并傳遞到字節(jié)碼JVM.Nashorn使用invokedynamics函數(shù),在Java7引入以提高性能。

jjs

對(duì)于Nashorn引擎,JAVA8引入了一個(gè)新的命令行工具,JJS到控制臺(tái)執(zhí)行Java腳本代碼。

解讀js文件

創(chuàng)建并保存sample.js在 C:> JAVA 文件夾。

sample.js
print('Hello World!');

打開控制臺(tái)并使用下面的命令。

C:\JAVA>jjs sample.js

看到結(jié)果

Hello World!

JJS在交互模式

打開控制臺(tái)并使用下面的命令

C:\JAVA>jjs 
jjs> print("Hello, World!")
Hello, World!
jjs> quit()
>>

傳遞參數(shù)

打開控制臺(tái)并使用下面的命令。

C:\JAVA> jjs -- a b c
jjs> print('letters: ' +arguments.join(", "))
letters: a, b, c
jjs>

在JAVA調(diào)用JavaScript

使用ScriptEngineManager,JavaScript代碼用Java編寫可以被調(diào)用。

示例

選擇使用任何編輯器創(chuàng)建以下java程序在 C:/> JAVA

Java8Tester.java
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;

public class Java8Tester {
   public static void main(String args[]){
      ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); 
      ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn"); 
      String name = "Mahesh"; 

      Integer result = null;
      try {
         nashorn.eval("print('" + name + "')");
         result = (Integer) nashorn.eval("10 + 2");   
      }catch(ScriptException e){
         System.out.println("Error executing script: "+ e.getMessage());
      }
      System.out.println(result.toString());
   } 
}

驗(yàn)證結(jié)果

使用javac編譯器編譯如下類

C:\JAVA>javac Java8Tester.java

現(xiàn)在運(yùn)行Java8Tester看到的結(jié)果

C:\JAVA>java Java8Tester

看到結(jié)果

Mahesh
12

從JavaScript調(diào)用Java

下面的例子將展示如何導(dǎo)入和使用Java類的Java腳本。

創(chuàng)建并保存 sample.js c: > JAVA 文件夾.

sample.js
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);

打開控制臺(tái)并使用下面的命令。

C:\JAVA>jjs sample.js

看到結(jié)果

78952000000000000003.20