Categories
程式開發

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 1

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