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