首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

使用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

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/c8MIcZAOhekS61b161x0
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券