编写您的第一个 GraalVM JavaScript 脚本 (2026)

编写你的第一个 GraalVM JavaScript 脚本:注册入口点,钩住事件,并在不重新编译 Java 的情况下实现热重载。附带一个可运行的示例.

Guidesby trqUpdated June 4, 2026
Key takeaways
  • 脚本的第一步是三个步骤:注册、钩住一个事件,然后将其保存到脚本文件夹中。
  • 主机捆绑了GraalVM,所以你可以编写真正的 JavaScript,而无需自行安装。
  • 脚本可以在几秒钟内热重载,无需重新构建 Java。
  • 一个脚本只能调用主机通过其主机访问白名单公开的对象.

编写第一个 GraalVM JavaScript 脚本包含三个小步骤:将其注册到宿主程序的入口点,将其附加到事件或模块,并将它保存到脚本文件夹中,以便引擎加载它。引擎运行在 GraalVM 的 Polyglot API 上,因此该脚本是真正的 JavaScript,并且无需重新编译任何 Java 代码即可重新加载.

Opal 的适配

Opal 是一个基于 Fabric 的模组,并使用 GraalVM JavaScript 脚本引擎,因此这些步骤可以直接应用。 要开始,请参阅 脚本文档

首先你需要

一个宿主程序,其中嵌入了引擎。宿主程序自带 GraalVM JavaScript,暴露了一组供脚本调用的对象,并监视一个脚本文件夹。你不需要自行安装 GraalVM;宿主程序已经将其打包。你只需要编写针对宿主程序提供对象的纯 JavaScript 代码即可。

了解这些对象所映射的内容会有所帮助,但你无需编写任何 Java 代码即可开始。

三个步骤

1

找到脚本文件夹

启动时,宿主从已知的目录加载脚本。请查阅宿主文档以获取确切路径
2

创建脚本文件

在那文件夹中创建一个新的 .js(或 .mjs)文件。主机在下次加载脚本时会自动识别它
3

注册并连接

在文件中,将脚本与宿主程序的入口点注册,然后将行为附加到事件或定义模块

一个最小的例子

大多数宿主提供一个脚本注册入口以及几个代理对象,这些对象连接 JavaScript 与程序。确切的名称取决于宿主,但结构是相同的。一个脚本通常只是宣告自身并响应一个事件:

// Register the script with the host (names vary by host).
script.register({
  name: "hello-world",
  version: "1.0.0",
});
 
// React to an event the host exposes.
script.on("enable", () => {
  client.print("Hello from my first script.");
});

请阅读宿主自身的 API 参考文档以获取真实的对象的名称和方法。重点在于模式:注册,然后钩住一个事件或定义一个模块

工作时实时刷新

保存文件并重新加载脚本(如果不支持实时重载,则重启宿主)。更改无需重建即可生效。这种快速循环是脚本化而不是编译模组的主要原因:脚本可以在几秒钟内重新加载,而编译后的模组必须重建和重新启动。

方法迭代循环语言适用时
GraalVM JavaScript 脚本编辑、保存、重新加载JavaScript快速调整、自定义行为
编译后的模组重建、重新启动Java 或 Kotlin更大的功能、更深层次的钩子

脚本能做什么,不能做什么

脚本只能调用宿主对象暴露的内容,除此之外无其他。宿主通过 GraalVM Polyglot 宿主访问白名单声明脚本可以访问哪些类和方法,默认情况下为拒绝访问。这保证了脚本的安全性和可预测性。如果所需的对象未暴露,宿主必须将其添加;脚本端无法绕过白名单。

常见问题解答