java - 将 GraalVM 引擎和 graalpython 与 Java 应用程序捆绑在一起
问题描述
有一种方法可以运行 Python 脚本,该脚本使用来自 Java 的包,使用 GraalVM 及其 Python 模块graalpython
。这是示例https://github.com/paulvi/graalpython-java-template
我想知道是否可以将 GraalVM 引擎捆绑graalpython
到我的 Java 应用程序中并生成 jar 或本机映像(例如,使用 GraalVM 项目中的本机映像编译器)?
解决方案
我认为您可以将整个 GraalVM 发行版与您的应用程序捆绑在一起,就像其他一些应用程序与普通 JDK 一样(例如,我认为 IntelliJ 将 JDK 与它捆绑在一起)。那将是最简单的选择。
您至少需要 GraalPython 主目录,其中包含 Python 标准库和 GraalPython 运行任何有意义的程序所需的其他文件。
而且,如果你想在JVM模式下运行,那么你需要在GraalVM上运行,其他的JDK不支持。从理论上讲,您也许可以以某种方式破解它以使用 JVMCI 在股票 JDK 上运行 GraalPython,就像使用 JavaScript [0] 一样,但使用 GraalPython 会复杂得多。
理论上,您可以通过提供自定义文件系统实现 [1] 将 GraalPython 主目录捆绑到您的应用程序中。
[0] https://www.graalvm.org/reference-manual/js/RunOnJDK/
[1] https://www.graalvm.org/truffle/javadoc/org/graalvm/polyglot/io/FileSystem.html
推荐阅读
- prometheus - 在 alertmanager 中提醒许多主机缺少指标
- actions-on-google - 是否支持刷新令牌轮换?
- reactjs - 等待 useLazyQuery 响应
- html - 媒体查询不起作用。我该如何解决这个问题
- firebase - Firebase:注销后登录卡在加载中
- c++ - 我怎样才能输入数组的元素,每次我们得到新元素时,我们把它放在数组的中间?
- dart - 无法暂停 Dart 隔离
- spring-boot - 如何在过期事件中访问 Spring Data Redis 存储对象?
- c# - 如何使用同一方法多次刷新父组件中的子组件?
- c++ - 如何指定#include
升压?