免费下载!由 O’Reilly 出版的《NGINX 完全指南》中文版已正式上线 了解详情
写点什么

GraalVM 19.3 发布,支持 Java 11

  • 2019-12-05
  • 本文字数:1192 字

    阅读完需:约 4 分钟

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


2019-12-05 08:001920

评论

发布
暂无评论
发现更多内容
GraalVM 19.3发布,支持Java 11_编程语言_Uday Tatiraju_InfoQ精选文章