GraalVM 19.3 发布,支持 Java 11

阅读数:984 2019 年 12 月 5 日 08:00

GraalVM 19.3发布,支持Java 11

多语言虚拟机 GraalVM 为使用多种语言(如 Java、C 语言、Python 和 JavaScript)开发的应用程序提供了共享运行时。最新版本 19.3 已发布,支持 JDK 11。之前的版本基于 JDK 8。

GraalVM 限制支持大量介于 Java 9 和 Java 11 之间的语言特性和平台改进,如紧凑的字符串、变量类型推断、Java 平台模块系统(JPMS)和 HTTP 客户端。

例如,下面的代码片段演示了使用最新的 Java 11 HTTP 客户端向比特币网站发送一个简单的请求:

复制代码
public class BPI {
  public static void main(String... args) {
    var request = HttpRequest
        .newBuilder()
        .uri(URI.create("https://api.coindesk.com/v1/bpi/currentprice.json"))
        .GET()
        .build();
    var response = HttpClient
        .newHttpClient()
        .send(request, HttpResponse.BodyHandlers.ofInputStream());
    var json = Json
        .createReader(response.body())
        .readObject()
        .getJsonObject("bpi");
    …
    System.out.printf("Current Bitcoin Price: $%s %s", price, indicator);
  }
}

在将 GraalVM 的安装路径加入到 JAVA_HOME 和 PATH 中之后,就可以使用 javac 命令或 Maven 构建工具来编译基于 Java 11 的类(如上述的 Java 类)。

GraalVM 的本地镜像生成器也支持 Java 11,作为早期采用者技术特性。本地镜像是一种提前编译的 Java 字节码包,可独立执行。本地镜像具有启动速度快、占用空间小的特点。但要注意的是,本地镜像不支持 Java 平台模块系统,在运行时不具备模块自检功能。native-image 是一个可选包,可通过 GraalVM更新程序 gu 来安装。gu 是一个包管理器,可用于下载和安装不包含在 GraalVM 发行版中的包。

下面的代码片段演示了如何安装 native-image、基于上述的类构建一个本地镜像,并执行生成的文件:

复制代码
gu install native-image
native-image -cp example.jar \
  --enable-url-protocols=https \
  my.example.BPI

GraalVM 19.3发布,支持Java 11

使用 Maven 作为构建工具的用户可以使用 Maven 插件来生成镜像。

另外需要注意的是,因为 G1 是 Java 11 的默认垃圾回收器,所以在将对性能比较敏感的应用程序从 JDK 8 迁移到 JDK 11 时,需要特别小心。

除了支持 JDK 11,这个 GraalVM 长期支持(LTS)版本也在其他多个方面做出了改进,如本地镜像生成、GraalVM 编译器、代码覆盖、GraalVM VisualVM,升级 NodeJS、Python 和 R 语言运行时。GraalVM 19.3 的版本公告提供了全部的改进和增强信息。

相关资源

原文链接

GraalVM 19.3 Brings JDK 11 Support

评论

发布