- 适用于 JDK 24 的 GraalVM(最新)
- 适用于 JDK 25 的 GraalVM(早期访问)
- 适用于 JDK 21 的 GraalVM
- 适用于 JDK 17 的 GraalVM
- 存档
- 开发构建
常见问题
Truffle上运行的Java是否实现了作为Truffle解释器运行的Java语言? #
不完全是:它实现的是作为Truffle解释器运行的Java虚拟机。这意味着Java程序必须先使用您喜欢的Java编译器(例如,javac
)或构建工具(Maven、Gradle等)编译成Java字节码(类、JAR文件等)才能运行。在GraalVM家族中,这类似于WebAssembly或LLVM解释器:虽然它们都可以运行C程序,但它们都必须先由C编译器编译。
Truffle上运行的Java也能在HotSpot JVM上运行吗? #
与使用Truffle框架实现的其他语言一样,它既可以作为本机可执行文件运行,也可以在HotSpot JVM上运行。目前,在HotSpot JVM上运行仅支持Linux x64和macOS x64。我们计划将此功能扩展到其他平台。
运行Espresso需要HotSpot JVM吗? #
不,不需要,它可以作为本机可执行文件正常运行。Espresso确实需要一个标准核心Java库(Java 8的rt.jar库或Java 11+的lib/modules
文件,以及相关的本机库:libjava
、libnio
等)。
在GraalVM上运行Java已经带来了最高级别的优化,Espresso还会带来哪些好处? #
- Espresso继承了Truffle框架提供的广泛工具集。这意味着您不再需要依赖外部工具来实现代码覆盖率和性能分析。
- 另一个重要方面是,Espresso改进了主机Java虚拟机与在Truffle上运行的Java程序之间的隔离。
- 此外,Espresso可以在本机可执行文件的上下文中运行,同时仍允许动态加载字节码!
- 最后,您可以享受增强的HotSwap功能带来的好处,这将有助于提高您的生产力。
Espresso的许可证是什么? #
Espresso是Java虚拟机的一个实现。它是开源的,并以GNU通用公共许可证第二版 (GPLv2) 作为免费软件提供。
我可以在生产环境中运行Espresso吗? #
是的,您可以在Linux x64上运行。对其他平台的支持仍在实验中。
执行Espresso可以期待怎样的性能? #
目前的性能比HotSpot JVM慢2-3倍。它肯定还没有达到GraalVM提供的速度,但开发团队在创建了一个完全可用的Espresso运行时后,现在正致力于使其性能与GraalVM JIT相当。
我可以在我的应用程序中嵌入Truffle上运行的Java吗? #
是的,您可以使用GraalVM的Polyglot API在与主机Java VM不同的独立上下文中运行Java字节码。您甚至可以在Java 11、17或21应用程序中嵌入一个Java 8上下文(使用选项--java.JavaHome=/path/to/jdk8
)。
当我尝试从IDE运行我的应用程序时,为什么会看到“无法识别的选项:-javaagent:…/idea_rt.jar…”? #
无法将代理附加到Espresso。目前,请将-XX:+IgnoreUnrecognizedVMOptions
添加到虚拟机选项中。