Learn · concepts
GraalVM JavaScript 脚本编程是什么??
GraalVM JavaScript 是一种快速的 JS 引擎,可在 JVM 上运行。它允许 Java 应用嵌入 JavaScript,以便用户可以脚本化功能并立即重新加载它们.
GraalVM JavaScript 是什么??
GraalVM JavaScript 是一个快速且符合标准的 JavaScript 引擎,它运行在 JVM 上,是 GraalVM 项目的一部分。Java 应用程序将其嵌入,以便用户可以编写调用宿主程序并即时重新加载的 JavaScript 代码。在 Java 应用程序中,这意味着可以在 JavaScript 中添加或更改行为,而无需重新编译 Java 代码。
把它想象成一个沙盒,用于添加功能。应用程序将某些对象和方法暴露给脚本,脚本调用这些方法在应用程序内部执行工作。当您更改脚本并保存它时,引擎会立即重新加载它,无需重启
应用程序为何嵌入脚本引擎
诸如 Minecraft 客户端之类的应用程序嵌入 JavaScript 引擎的原因有几个:
- 热重载:更改脚本并立即看到效果,无需重启或重建。
- 安全环境:宿主决定脚本可以访问哪些对象和 Java 类。
- 快速迭代:在几秒钟内测试新的行为,而不是花费几分钟的编译时间。
- 用户自定义:允许玩家使用熟悉的语言编写自己的功能
客户中如何呈现
通常,嵌入 GraalVM JavaScript 的客户端会提供一个入口点,用于注册脚本,然后是一组小的代理对象,它们连接 JavaScript 与程序的内部机制。用户编写脚本,将其放入脚本文件夹中,引擎加载它。 这样,客户端就可以让用户使用 JavaScript 添加功能,而无需编译 mod.
GraalVM JavaScript 与 Node.js
| 方面 | GraalVM JavaScript | Node.js |
|---|---|---|
| 运行时 | 运行在 JVM 上 | 独立的 V8 运行时 |
| 用例 | 嵌入到 Java 应用中 | 服务器端 JavaScript 或 CLI 工具 |
| 启动 | 主进程的一部分 | 独立进程 |
| 访问 | 主进程暴露特定对象 | 完整的操作系统访问权限 |
| 性能 | JIT 编译,非常快 | 同样非常快,但有不同的权衡 |
两者都非常擅长运行 JavaScript;它们只是针对不同的场景构建的。当你想让 Java 应用允许用户使用 JavaScript 脚本时,GraalVM 是合适的选择。
常见问题解答
不,两者都运行 JavaScript,但 GraalVM 的引擎旨在嵌入到 JVM 应用程序中,而 Node.js 是基于 V8 构建的独立运行时环境.
通常不是这样。你通常是在宿主应用暴露的对象上编写 JavaScript。了解这些对象映射到什么有助于高级使用,但基本脚本只需要 JavaScript.
迭代速度。脚本可以立即重新加载,而编译模组则需要重建和重新启动。对于快速功能测试或个人自动化,脚本方式要快得多.
是的,宿主应用程序决定脚本可以访问的确切对象和类。客户端可以通过这些代理对象暴露游戏状态、玩家数据和其他内部信息.