- GraalVM JavaScript 是一个快速且符合标准的 JS 引擎,可在 JVM 上运行。
- Java 应用将其嵌入,以便用户可以编写调用宿主程序 JavaScript 代码。
- 脚本可以热重载,因此您可以更改行为而无需重新编译 Java 代码。
- 宿主决定脚本可以访问的确切对象和类.
GraalVM JavaScript 是一种快速、符合标准的 JavaScript 引擎,可在 JVM 上运行,它是 GraalVM 项目的一部分。Java 应用程序可以嵌入它,以便用户可以编写调用宿主程序并即时重新加载的 JavaScript 代码。在 Java 应用程序中,这意味着可以在不重新编译 Java 代码的情况下,通过 JavaScript 添加或更改行为.
Opal 的集成方式
Opal 的脚本引擎基于 GraalVM JavaScript。 要开始编写脚本,请参阅 脚本编写指南。
GraalVM 和 GraalVM JavaScript
GraalVM 是一种高性能运行时,可以在 JVM 上运行多种语言。 它的 JavaScript 引擎足够现代,可以支持最新的 ECMAScript 特性。一个应用程序会打包引擎,将一组对象交给脚本处理,然后运行它们。
为什么应用程序会嵌入它
- 热重载: 更改脚本并无需重启或重建即可看到效果。
- 安全的表面: 主机决定脚本可以接触哪些对象和 Java 类。
- Java 互操作: 脚本可以通过它暴露的对象调用应用程序自身的代码。
它在客户端中如何呈现
通常,嵌入引擎的程序会为脚本提供一个入口点以注册自身,然后提供一小套“代理”对象,这些对象连接 JavaScript 与程序的内部组件。用户编写一个脚本,将其放入脚本文件夹中,然后引擎加载它。 这样客户端就可以让用户用 JavaScript 添加功能,而不是编译 mod。
常见问题解答
不相同。两者都运行 JavaScript,但 GraalVM 的引擎旨在嵌入到 JVM 应用程序中,而 Node.js 是基于 V8 构建的独立运行时环境。
通常不需要。您编写的 JavaScript 是针对宿主应用暴露的对象。了解这些对象对应的概念有助于高级使用。
迭代速度。脚本可以立即重新加载,而编译后的模组需要重建和重新启动。