0

我计划将 GraalVM合并两个(一个使用 Node 的服务和另一个基于 Java 的服务),其中 Node 作为调用 Java 中的类/结构的主要入口点语言。我正在阅读有关 GraalVM 的信息,但无法清楚地找到以下信息。如果有人可以帮助我,那就太好了(或者指出我是否遗漏/忽略了某些东西)

  1. 上述用例所需的最低 GraalVM 组件是什么?我知道 Graal VM 有核心和可选组件。我们是否需要整个 GraalVM,包括此用例的热点 VM,或者仅以下组件就足够了?(请添加/更正我缺少一些组件)我更喜欢使用 OpenJDK8 作为我的 JVM

    • GraalJS
    • GraalSDK
    • 松露

    纠正我如果我错了——我对提出上述组件的理解是——GraalJS 包含通过松露实现的节点/js 运行时并支持多语言,并且具有包含多语言 api 的节点模块。GraalSDK - 包含 Java 的多语言 API。Truffle 具有将 JS 转换为在 JVM 上运行的字节码的逻辑

  2. 是否有关于每个模块如何协同工作的明确文档? 我正在寻找一个小/抽象图/流程图,它告诉 GraalJS 、 GraalSDK 和 Truffle 以及底层 JVM 如何协同工作以实现多语言。这有助于进一步了解和确定我的用例需要哪些组件

谢谢

4

1 回答 1

0

关于第一个问题:如果您只使用“纯”JavaScript(ECMAScript 2020),您的假设将是正确的。然后,GraalVM Compiler您的列表中只缺少 。如果你忽略它,你可以在技术上执行 JavaScript 解释器,但它会很慢。为了让Truffle组件发挥其加速应用程序的魔力,您将需要 GraalVM 编译器。请参阅我们的博文https://medium.com/graalvm/graalvms-javascript-engine-on-jdk11-with-high-performance-3e79f968a819如何使用 Maven 在股票 JDK(如 OpenJDK)上进行设置。

在您的情况下,您想使用 Node.js。为此,您需要一个完整的 Node.js 发行版,包括 Graal.js - 只有完整的 GraalVM 才能提供。

对于您的第二个问题:我不知道描述 GraalVM SDK 的好图形。对于一般的 Truffle 和语言实现,https://docs.oracle.com/en/graalvm/enterprise/19/guide/overview/jvm-runtime-model.html可能是一个很好的起点。在 GraalVM+Truffle 上的 YouTube 上也有几个很好的教程。

最好的,克里斯蒂安

于 2020-07-27T15:01:43.210 回答