Java Nashorn

2025年4月21日 | 阅读3分钟

Nashorn 是一个 JavaScript 引擎。它用于在 JVM(Java 虚拟机)上动态执行 JavaScript 代码。Java 提供了一个命令行工具 jjs,用于执行 JavaScript 代码。

您可以使用 jjs 命令行工具并通过嵌入到 Java 源代码中来执行 JavaScript 代码。


示例:使用终端执行

以下是在 JVM 上执行 JavaScript 代码的逐步过程。

1) 创建一个文件 hello.js。

2) 将以下代码写入并保存到文件中。

3) 打开终端

4) 写入命令 jjs hello.js 并按 Enter 键。

执行命令后,您将看到以下输出。

输出

Hello Nashorn

示例:在 Java 代码中执行 JavaScript 文件

您可以直接从 Java 文件执行 JavaScript 文件。在以下代码中,我们借助 FileReader 类读取 hello.js 文件。

输出

Hello Nashorn

示例:在 Java 源文件中嵌入 JavaScript 代码

您可以在 Java 源文件中嵌入 JavaScript 代码。 Java 编译器不会抱怨,但当您有大型源代码时,这不是一个好的做法。在以下示例中,我们正在评估 JavaScript 代码。

输出

Hello Nashorn

示例:嵌入 JavaScript 表达式

您可以在 JavaScript 代码中嵌入 JavaScript 表达式和变量。在以下代码中,我们将一个变量嵌入到字符串中。要执行此程序,您需要在命令行中传递标志 -scripting。

文件:hello.js

命令: jjs -scripting hello.js

输出

Hello Nashorn

Heredocs

在 Nashorn 中,heredocs 只是多行字符串。您可以使用 << 后跟一个特殊的终止标记(即 EOF)来创建它。您还可以在 ${...} 表达式中嵌入 JavaScript 表达式。


示例:JavaScript 文件中的 Heredocs

文件:hello.js

命令: jjs -scripting hello.js

输出

This is a java script file
it contains multiple lines
of code.
let's execute.

示例:在 Java 文件中设置 JavaScript 变量

您可以在 Java 文件中将值传递给 JavaScript 变量。在接下来的示例中,我们正在绑定并将变量传递给 JavaScript 文件。

文件:hello.js

文件:NashornExample.java

输出

Hello Nashorn

在 JavaScript 文件中导入 Java 包

Java 提供了在 JavaScript 代码中导入 Java 包的功能。在这里,我们使用两种方法来导入 Java 包。


示例 1:在 JavaScript 文件中导入 Java 包

文件:hello.js

输出

2

示例 2:在 JavaScript 文件中导入 Java 包

文件:hello.js

输出

[12, 20]
class java.util.ArrayList

示例 3:在 JavaScript 文件中导入 Java 包

您可以同时导入多个包。

文件:hello.js

输出

[abc, hello.js, INDIA]

在 Java 代码中调用 JavaScript 函数

您可以在 Java 文件中调用 JavaScript 函数。在接下来的示例中,我们正在调用 JavaScript 函数。


示例:在 Java 代码中调用函数

文件:hello.js

文件:NashornExample.java

输出

This is JavaScript function
Hello Nashorn