GraalJS 是一个在 GraalVM 之上用 Java 实现的 JavaScript 引擎。它是一个符合 ECMAScript 的运行时,用于执行 JavaScript 和 Node.js 应用程序,并包含 GraalVM 堆栈的所有优势,包括与 Java 的互操作性。 GraalJS 是一个开源项目。
GraalJS 的目标是:
从版本 23.1.0 开始,GraalJS 可作为 Maven 工件使用。我们还提供 JavaScript 和 Node.js 运行时的独立发行版。
感谢 GraalJS,您可以轻松地将 JavaScript 嵌入到 Java 应用程序中。所有必需的工件都可以直接从 Maven Central 下载。
所有与嵌入器相关的工件都可以在 Maven 依赖项组 org.graalvm.polyglot 中找到。
下面是一个最小的 Maven 依赖项设置,您可以将其复制到pom.xml中:
< dependency >
< groupId >org.graalvm.polyglot groupId >
< artifactId >polyglot artifactId >
< version >${graaljs.version} version >
dependency >
< dependency >
< groupId >org.graalvm.polyglot groupId >
< artifactId >js artifactId >
< version >${graaljs.version} version >
< type >pom type >
dependency >
这使得 GraalJS 构建于 Oracle GraalVM 之上,并根据 GraalVM 免费条款和条件 (GFTC) 获得许可。如果您想使用基于 GraalVM Community Edition 构建的 GraalJS,请使用js-community
。
要访问多语言隔离工件(仅限 GFTC),请使用-isolate
后缀(例如js-isolate
)。
有关完整的可运行示例,请参阅 GitHub 上的多语言嵌入演示。
您可以将 GraalJS 与 GraalVM JDK、Oracle JDK 或 OpenJDK 一起使用。如果您更喜欢在普通 JVM 上运行,请查看在普通 JDK 上运行 GraalJS。请注意,在此模式下,GraalVM 的许多功能和优化不可用。由于这些限制,在库存 JVM 上运行不受支持 - 请改用 GraalVM。
独立发行版发布在 GitHub 上。有两种语言运行时选项可供选择:
为了区分它们,JVM 附带的独立版本的名称中带有-jvm
中缀。此外,GraalVM Community Edition 版本的名称中包含-community
,例如graaljs-community-
。
每个组件和平台组合都有四种不同的配置:
运行时 | 执照 | 存档中缀 |
---|---|---|
本国的 | GFTC | 没有任何 |
虚拟机 | GFTC | -jvm |
本国的 | UPL | -community |
虚拟机 | UPL | -community-jvm |
要独立安装 GraalJS,请从 GitHub 发布页面下载并解压存档。安装后, bin
子目录中的js
或node
可执行文件可分别用于运行JavaScript文件或Node模块。如果命令行上未提供文件,则会生成交互式 shell (REPL)。
注意:如果您使用的是 macOS,请首先从存档中删除隔离属性:
shell sudo xattr -r -d com.apple.quarantine
.tar.gz
GraalJS 可以运行未经修改的 Node.js 应用程序。 GraalVM 的 Node.js 运行时基于最新版本的 Node.js,并运行 GraalJS 引擎而不是 Google V8。它提供了与现有 NPM 包的高度兼容性。这包括具有本机实现的 NPM 包。请注意,某些 NPM 模块可能需要使用 GraalJS 从源代码重新编译(如果它们附带已为基于 V8 的 Node.js 编译的二进制文件)。
Node.js 作为单独的独立发行版提供。了解如何开始使用 Node.js。
网站上提供了大量的用户文档。此外,此存储库中的 docs 下还有供用户和贡献者使用的文档。如需贡献,另请参阅有关如何从源代码构建 GraalJS 的指南。
GraalJS 与 ECMAScript 2024 规范兼容。计划在未来版本中发布的新功能、新 ECMAScript 提案会经常添加,并且可以在选项后面访问。请参阅 CHANGELOG.md 了解已通过的提案。
此外,还支持其他引擎的一些流行扩展。请参阅 GraalJS 兼容性。
核心 JavaScript 引擎是 Java 应用程序,因此与提供兼容 JVM 的每个操作系统兼容。请参阅在 Stock JDK 上运行 GraalJS。目前,我们提供二进制发行版,并在 Linux(x64、AArch64)、macOS(x64、AArch64)和 Windows(x64)上完全支持 GraalJS。
请参阅 graalvm.org/community 了解如何与开发社区保持联系。 graalvm.slack.com 上的graaljs频道是与 GraalJS 背后的团队取得联系的好方法。在 oracle/graaljs GitHub 存储库报告任何 GraalJS 特定问题。
GraalJS 源代码和社区发行版可根据通用许可许可证 (UPL) 版本 1.0 获取。
非社区工件根据 GraalVM 免费条款和条件 (GFTC) 提供,包括早期采用者版本的许可。