Java - Nashorn JavaScript Engine

Xin chào các bạn nhà lập trình nhân dREAM! Tôi rất vui được làm hướng dẫn cho các bạn trong hành trình thú vị này vào thế giới Java và Nashorn JavaScript Engine. Như một người đã dạy khoa học máy tính hơn một thập kỷ, tôi cam kết rằng điều này sẽ là một trải nghiệm thú vị và sáng ngời. Hãy bắt đầu chúng ta!

Java - Nashorn JavaScript

Nashorn JavaScript Engine là gì?

Nashorn (phát âm là "nass-horn") là một công cụ JavaScript nhẹ nhàng và hiệu suất cao được giới thiệu với Java 8. Nó giống như một cầu nối giữa Java và JavaScript, cho phép bạn chạy mã JavaScript bên trong một ứng dụng Java. Có khó khăn phải không?

Một chút lịch sử

Trong những ngày đầu tiên dạy học của tôi, chúng ta phải sử dụng các môi trường riêng biệt cho Java và JavaScript. Điều đó như là cố gắng làm một bánh mì bơ đậu phộng và mật ong với hai đĩa riêng! Nashorn thay đổi tất cả, kết hợp hai ngôn ngữ mạnh mẽ này trong một sự kết hợp ngon miệng.

Thực thi JavaScript qua Công cụ Dòng Lệnh

Hãy bắt đầu với điều đơn giản. Nashorn đi kèm với một công cụ dòng lệnh có tên là jjs cho phép bạn thực thi JavaScript trực tiếp từ dòng lệnh của bạn.

Ví dụ 1: Hello, Nashorn!

Mở dấu nhắc dòng lệnh và gõ:

jjs
print("Hello, Nashorn!");

Bạn sẽ thấy "Hello, Nashorn!" in ra màn hình. Chúc mừng! Bạn vừa chạy mã JavaScript đầu tiên của mình bằng Nashorn.

Thực thi JavaScript Trực tiếp trong Dấu nhắc Dòng lệnh

Bạn cũng có thể chạy các tệp JavaScript trực tiếp từ dòng lệnh.

Ví dụ 2: Chạy một Tệp JavaScript

  1. Tạo một tệp có tên greet.js với nội dung sau:
var name = "Alice";
print("Hello, " + name + "!");
  1. Chạy nó bằng cách sử dụng jjs:
jjs greet.js

Bạn sẽ thấy "Hello, Alice!" in ra màn hình.

Truyền Tham số vào jjs

Nashorn cho phép bạn truyền tham số vào mã JavaScript của bạn, như bạn đã làm với Java.

Ví dụ 3: Truyền Tham số

Tạo một tệp có tên greet_with_args.js:

var name = $ARG[0];
print("Hello, " + name + "!");

Chạy nó với một tham số:

jjs greet_with_args.js -- Bob

Bạn sẽ thấy "Hello, Bob!" in ra.

Gọi JavaScript từ Java

Bây giờ, hãy đến phần thú vị - gọi JavaScript từ trong mã Java của bạn!

Ví dụ 4: Đánh giá JavaScript trong Java

import javax.script.*;

public class JavaScriptInJava {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");

engine.eval("print('Hello from JavaScript!');");
}
}

Khi bạn chạy chương trình Java này, nó sẽ in "Hello from JavaScript!" bằng cách sử dụng máy tính Nashorn.

Gọi Java từ JavaScript

Sức mạnh thực sự của Nashorn đến từ khả năng sử dụng các lớp và phương thức Java trong mã JavaScript.

Ví dụ 5: Sử dụng các Lớp Java trong JavaScript

import javax.script.*;

public class JavaInJavaScript {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");

engine.eval("var ArrayList = Java.type('java.util.ArrayList');" +
"var list = new ArrayList();" +
"list.add('Hello');" +
"list.add('World');" +
"print(list);");
}
}

Đoạn mã này tạo một ArrayList Java, thêm các phần tử vào đó và in ra - tất cả đều từ trong JavaScript!

Tính Năng Nâng Cao

Nashorn cung cấp nhiều tính năng nâng cao khiến nó trở thành một công cụ mạnh mẽ cho các nhà phát triển Java.

Ví dụ 6: Sử dụng Lambda Expression Java 8

import javax.script.*;

public class LambdaInNashorn {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");

engine.eval("var list = [1, 2, 3, 4, 5];" +
"list.forEach(function(num) { print(num * 2); });");
}
}

Ví dụ này minh họa cách bạn có thể sử dụng các biểu thức lambda Java 8 trong mã JavaScript chạy trên Nashorn.

Bảng Phương thức

Dưới đây là bảng một số phương thức quan trọng bạn có thể sử dụng với Nashorn:

Phương thức Mô tả
ScriptEngineManager.getEngineByName("nashorn") Lấy máy tính script Nashorn
ScriptEngine.eval(String script) Đánh giá một script JavaScript
ScriptEngine.put(String key, Object value) Đặt biến trong máy tính script
ScriptEngine.get(String key) Lấy biến từ máy tính script
Invocable.invokeFunction(String name, Object... args) Gọi một hàm JavaScript

Kết luận

Và thế là xong, các bạn! Chúng ta đã chỉ đánh dấu một phần nho nhỏ của những gì Nashorn có thể làm, nhưng tôi hy vọng một đạo khái nó đã đốt cháy lòng tò mò của các bạn. Hãy nhớ, chìa khóa để nắm vững lập trình là thực hành, vì vậy đừng sợ thử nghiệm với các ví dụ này và tạo ra của riêng bạn.

Như tôi luôn nói với các học sinh, việc lập trình như học lái xe đạp - nó có thể có vẻ khó khăn ban đầu, nhưng với thực hành, bạn sẽ chạy nhanh như một gió trong không thời. Và ai biết? Có lẽ một ngày nào đó bạn sẽ dạy người khác về những kỳ quái của Nashorn!

Hãy tiếp tục lập trình, học hỏi và quan trọng nhất, hãy thích thú nó! Chờ đợi chúng ta lần sau, đây là người dạy khoa học máy tính bạn thân thiện kính chào. Chúc các bạn lập trình vui vẻ!

Credits: Image by storyset