Graal — 新的 JVM 即时编译器
Graal 是一个用 Java 编写的新的 JVM 即时编译器,侧重性能和语言互操作性。Graal 为 Java 代码提供性能优势,这得益于方法内联、流转对象分配和推理执行等新技术,从而可以实现高性能的脚本语言引擎。
与传统的 HotSpot 编译器不同,脚本语言解释器可以使用 Graal 包含的 Truffle API 发出原生代码,这样无需提前编译,即可让编程语言获得 Java 的性能。
语言解释器可以使用 HotSpot 所用技术提高 Java 代码的速度 — 包括发出优化的原生代码(含
去优化 的条件)— 该技术令即时编译的代码在性能方面优于提前编译的代码。
提供了一个
技术预览版下载,Graal 很快就可用作 JDK 9 的附加组件。当前版本是一个独立的 JDK,包含 Graal。
语言支持
下载包括以下语言引擎:
- JavaScript — Graal.js 是一个 JavaScript 解释器/编译器,能够在 JVM 上运行 Node.js 应用
- FastR — R 语言解释器/编译器
- RubyTruffle — 支持 Ruby 且性能优于 Ruby
- SimpleLanguage — 一个有关如何使用 Graal API 的示例
好处
- 性能 — Graal 结合了我们对编译器技术的研究,在一些负载上提供比传统 JVM 更好的峰值性能
- 语言互操作性 — 用 Graal 执行的语言可以互相调用,可以使用来自其他语言的库
用法
只需下载 OTN 预览版并将其用作 JDK。它经过预先配置,使用 Graal 作为默认的 Java 编译器,包括命令行程序 node、jrb 和 R,可用于取代 NodeJS、Ruby 和 R。