GraalVM是甲骨文(Oracle)开发的支持多语言,采用一个单一的虚拟机来对不同语言提供支持的高性能运行时。
GraalVM 底层是基于 OpenJDK 的 Java HotSpot 虚拟机,基于 JVM 编译器接口(JVM Compiler Interface)实现的即时编译器(just-in-time,JIT),用来把 Java 字节码转换成本地机器代码。 对于Java 和其他 JVM 语言(如 Groovy、Kotlin 和 Scala 等)的源代码在编译成 Java 字节代码之后,可以直接运行在 GraalVM 的 Java 虚拟机之上。
对于其他非Java 系的的语言,比如JavaScript、Ruby、Python、R、Rust和 C/C++等语言,GraalVM 中的Truffle 框架提供了对这些语言的支持,Truffle 框架是一个开放的语言实现框架。其他语言都可以通过 Truffle 框架运行在 GraalVM 上,甚至是应用本身私有的语言。 Graalvm的native-image 可将应用程序源代码提前编译为在系统上本机运行的二进制文件,目前对java 的支持最为友好,支持Java 8 和 Java 11。 GraalVM 提供了命令行工具gu用来管理可选组件,可通过gu命令行工具来下载、删除GraalVM提供组件,比如,刚下载的GraalVM是没有Ruby 语言解释器的,便可通过如下命令安装:
gu install ruby// 安装 Ruby 语言解释器
在组件安装之后,会在bin目录添加语言相关的命令行工具。还有其他一些常用的命令:
gu available // 列出所有可用的组件
gu install // 安装对应组件,如gu install ruby:安装 Ruby 语言解释器
gu list // 列出当前已安装组件
gu remove // 删除已安装的组件,如gu remove ruby:来删除 Ruby 语言解释器
目前GraalVM 最新版是20.0.0,提供了社区版和企业版,对Java 8 和 Java 11 提供了支持;社区版可通过Github免费下载,企业版则针对企业用户付费使用。GraalVM对Linux、Mac os x、Windows三个平台都提供了发行版,如有感兴趣的小伙伴可以通过官网下载体验。