【问题标题】:Can you embed GraalVM application in a browser?你可以在浏览器中嵌入 GraalVM 应用程序吗?
【发布时间】:2018-06-12 07:14:31
【问题描述】:

GraalVM 具有许多令人惊讶的功能。但是我还没有看到但想看到的一件事是能够在浏览器中运行 GraalVM 应用程序。像 (Top 10 Things To Do With GraalVM) 这样的来源显示了与 Node.js 的互操作性,但未在浏览器中运行已编译的应用程序。

这可能吗?如果是这样,是否有这方面的文档?谢谢!

【问题讨论】:

  • 我想您可能需要重新编译浏览器以使用与通常使用不同的 JavaScript 引擎。换掉 JavaScript 引擎将是大量的工作。但你可以在graalvm/graal-core Gitter channel 上询问。
  • 虽然可能性很诱人,但我可以想象将 graalvm 包含到浏览器中会产生安全隐患。我认为浏览器执行的代码是不受信任的。因此,它必须被限制在沙箱之类的东西中,以避免它产生恶意的副作用。多种沙盒技术已成为恶意代码爆发的受害者。例如。 Java 浏览器插件。这就是为什么它基本上没有了。 GraalVM 似乎更复杂,因此对我来说更难保护。
  • 还没有,但你可以追踪github.com/oracle/graal/issues/3391

标签: browser webassembly graalvm


【解决方案1】:

如果浏览器嵌入了 GraalVM 并且可以针对语言运行其引擎,即使最初只针对 JavaScript,这将是非常有趣的。

据我所知,目前还没有这样的浏览器。也许有趣的第一步是使用Electronjs,并尝试用 GraalVM 中的 node.js 版本替换他们使用的 node 版本。这不是微不足道的,因为它们对现有的 node.js 进行了一些更改,而 GraalVM 在用自己的实现替换 JavaScript 引擎时引入了一些更改。

但是,绝对应该可以实现。

【讨论】:

    【解决方案2】:

    嗯,看起来这可能使用 Webassembly。来自 Graal VM 负责人 Thomas Wuerthinger:https://twitter.com/thomaswue/status/943592646915878912?lang=en

    Webassembly 对于静态类型语言(如 LLVM 后端)。我不知道任何 Ruby、R 或 Python 实现 成功瞄准 Webassembly。 Graal VM 将能够通过以下方式运行 浏览器中的 WebAssembly。 它还有一个“本机”模式 独立的二进制文件。

    因此,如果您正在使用 Clojure 或 Python 之类的代码进行编码,并计划通过 Graal VM 编译为 Webassembly,那么您可能会遇到与 Webassembly 相同的限制,例如浏览器沙箱并且只能访问 Web蜜蜂。看看这些边界是否可以通过错误消息或其他编译时检查来传达将会很有趣。

    【讨论】:

    • 这个公告已经过去了 3 年:是否可以在 WebAssembly 中运行 Graal VM?
    猜你喜欢
    • 1970-01-01
    • 2012-02-07
    • 2016-06-28
    • 2020-10-27
    • 2021-02-28
    • 2017-08-05
    • 2010-10-30
    • 1970-01-01
    • 2011-11-27
    相关资源
    最近更新 更多