多语言虚拟机GraalVM为使用多种语言(如 Java、C 语言、Python 和 JavaScript)开发的应用程序提供了共享运行时。最新版本 19.3 已发布,支持 JDK 11。之前的版本基于 JDK 8。
GraalVM 限制支持大量介于 Java 9 和 Java 11 之间的语言特性和平台改进,如紧凑的字符串、变量类型推断、Java 平台模块系统(JPMS)和 HTTP 客户端。
例如,下面的代码片段演示了使用最新的 Java 11 HTTP 客户端向比特币网站发送一个简单的请求:
在将 GraalVM 的安装路径加入到 JAVA_HOME 和 PATH 中之后,就可以使用 javac 命令或 Maven 构建工具来编译基于 Java 11 的类(如上述的 Java 类)。
GraalVM 的本地镜像生成器也支持 Java 11,作为早期采用者技术特性。本地镜像是一种提前编译的 Java 字节码包,可独立执行。本地镜像具有启动速度快、占用空间小的特点。但要注意的是,本地镜像不支持 Java 平台模块系统,在运行时不具备模块自检功能。native-image 是一个可选包,可通过 GraalVM更新程序gu来安装。gu 是一个包管理器,可用于下载和安装不包含在 GraalVM 发行版中的包。
下面的代码片段演示了如何安装 native-image、基于上述的类构建一个本地镜像,并执行生成的文件:
使用 Maven 作为构建工具的用户可以使用Maven插件来生成镜像。
另外需要注意的是,因为 G1 是 Java 11 的默认垃圾回收器,所以在将对性能比较敏感的应用程序从 JDK 8 迁移到 JDK 11 时,需要特别小心。
除了支持 JDK 11,这个 GraalVM 长期支持(LTS)版本也在其他多个方面做出了改进,如本地镜像生成、GraalVM 编译器、代码覆盖、GraalVM VisualVM,升级 NodeJS、Python 和 R 语言运行时。GraalVM 19.3 的版本公告提供了全部的改进和增强信息。
相关资源
Announcing GraalVM 19.3 with JDK 11 Support by GraalVM Team (November 20, 2019)
GraalVM 19.0: the Anticipated GA Release by InfoQ (July 17, 2019)
Java Feature Spotlight: Local Variable Type Inference by Brian Goetz (November 1, 2019)
Getting to Know Graal, the New Java JIT Compiler by Ben Evans (July 16, 2018)
原文链接:
GraalVM 19.3 Brings JDK 11 Support
评论