Java 8 - Nashorn JavaScript

Với Java 8, Nashorn, một công cụ javascript cải tiến nhiều được giới thiệu, để thay thế Rhino hiện có. Nashorn cung cấp hiệu suất tốt hơn từ 2 đến 10 lần, vì nó trực tiếp biên dịch mã trong bộ nhớ và chuyển mã bytecode sang JVM. Nashorn sử dụng tính năng gọi động lực học, được giới thiệu trong Java 7 để cải thiện hiệu suất.

jjs

Đối với công cụ Nashorn, JAVA 8 giới thiệu một công cụ dòng lệnh mới, jjs, để thực thi mã javascript trên bảng điều khiển.

Thông dịch tệp js

Tạo và lưu tệp sample.js trong thư mục c: \> JAVA.

sample.js

print('Hello World!');

Mở bảng điều khiển và sử dụng lệnh sau.

C:\JAVA>jjs sample.js

Nó sẽ tạo ra kết quả sau:

Hello World!

jjs trong Chế độ tương tác

Mở bảng điều khiển và sử dụng lệnh sau.

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

Vượt qua đối số

Mở bảng điều khiển và sử dụng lệnh sau.

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

Gọi JavaScript từ Java

Sử dụng ScriptEngineManager, mã JavaScript có thể được gọi và thông dịch trong Java.

Thí dụ

Tạo chương trình Java sau bằng cách sử dụng bất kỳ trình soạn thảo nào bạn chọn trong 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());
   }
}

Xác minh kết quả

Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau -

C:\JAVA>javac Java8Tester.java

Bây giờ chạy Java8Tester như sau:

C:\JAVA>java Java8Tester

Nó sẽ tạo ra kết quả sau:

Mahesh
12

Gọi Java từ JavaScript

Ví dụ sau giải thích cách nhập và sử dụng các lớp Java trong tập lệnh java.

Tạo và lưu sample.js trong thư mục 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);

Mở bảng điều khiển và sử dụng lệnh sau.

C:\JAVA>jjs sample.js

Nó sẽ tạo ra kết quả sau:

78952000000000000003.20