BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités GraalVM 19.3 Apporte Le Support De JDK 11

GraalVM 19.3 Apporte Le Support De JDK 11

GraalVM , une machine virtuelle polyglotte qui fournit un runtime partagée pour exécuter des applications écrites dans plusieurs langages tels que Java, C, Python. et JavaScript, a publié la version 19.3 avec le support de JDK 11. Les versions précédentes de GraalVM étaient basées sur JDK 8.

Les nombreuses fonctionnalités linguistiques et améliorations de la plate-forme telles que compact strings, inférence de type des variables, Système de modules de la plate-forme Java (JPMS) et client HTTP, livrées entre la version Java 9 et la version de Java 11 peuvent maintenant être utilisées par les applications construites sur GraalVM.

Par exemple, l'extrait suivant montre comment une simple demande à une API REST bitcoin peut être construite et appelée à l'aide du nouveau client HTTP Java 11 :

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);
  }
}

Avec JAVA_HOME et PATH pointant vers une installation GraalVM, les classes basées sur Java 11, comme l'exemple ci-dessus, peuvent être compilées en utilisant le compilateur javac ou un outil de construction comme Maven.

L' utilitaire de génération d'images natives de GraalVM a également été mis à jour pour prendre en charge Java 11. Une image native est un bytecode Java compilé ahead-of-time, packagé en tant qu’exécutable autonome. En règle générale, l'image native accélère et réduit l'empreinte mémoire. Notez que l'image native ne prend pas en charge le système de modules de Java (Java Platform Module System) et ne propose aucune introspection dans les modules au moment de l'exécution de l'image. L'utilitaire image-native est un package facultatif qui peut être installé à l'aide du programme de mise à jour de GraalVM, gu. guest un gestionnaire de paquets qui télécharge et installe des paquets non inclus dans la distribution principale de GraalVM.

L'extrait ci-dessous montre comment installer l'utilitaire de GraalVM image-native, créer une image native basée sur l'exemple de classe mentionné ci-dessus et exécuter le fichier exécutable autonome généré :

gu install native-image

native-image -cp example.jar \
  --enable-url-protocols=https \
  my.example.BPI

GraalVM Native Image Demo Output

Pour ceux qui utilisent Maven comme outil de build, un plugin Maven est fourni pour vous aider dans le processus de génération d’images.

Notez également que, depuis que le ramasse-miette Garbage-First (G1) est le ramasse-miettes par défaut de Java 11, vous devez donc faire attention lors de la migration d'applications sensibles aux performances de GraalVM basé sur JDK 8 à GraalVM basé sur JDK 11.

Outre la prise en charge de JDK 11, cette première version long-term support (LTS) de GraalVM, apporte des améliorations à la génération d'images natives, au compilateur GraalVM, à des outils tels que la couverture de code et à GraalVM VisualVM ainsi que des mises à niveau à l'exécution des langages NodeJS, Python et R. Les notes de publication décrivent la liste complète des améliorations apportées à la version GraalVM 19.3.

Ressources

 

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT