Le projet Leyden vise à améliorer le temps de démarrage de Java

L’architecte en langage Java Mark Reinhold a proposé la création d’un nouveau projet OpenJDK Leyden: des binaires d’application statiques avec un démarrage plus rapide et une mémoire réduite. Une fois approuvé et terminé, cela permettrait aux développeurs de compiler du code Java (juste à temps) vers des applications natives (à l’avance), offrant des capacités similaires au mode natif de GraalVM.

Le projet bénéficie du soutien conceptuel d’Oracle via Reinhold, ainsi que de RedHat. Suite à la proposition de projet, Andrew Haley, le leader d’OpenJDK de RedHat, a lancé: « c’est une excellente nouvelle. Il est temps de mettre la compilation AOT statique dans le giron. Allons-y! » Un sentiment similaire est venu d’Amazon, PaulHohensee déclarant « très heureux de voir cette proposition ». RedHat est membre du comité exécutif du Java Community Process et Amazon est un membre influent de la communauté qui gère une distribution Java, Amazon Corretto. Les utilisateurs de frameworks sans serveur tels qu’AWS Lambda et Azure Functions bénéficieraient de Leyden, car les opérateurs paient au temps utilisé – les temps de démarrage et d’exécution rapides pourraient réduire le coût des démarrages à froid et ramener les frais par invocation plus ou moins au minimum seuil de coût.

Leyden et GraalVM travailleraient à travers une chaîne similaire que les développeurs suivent pour écrire et créer des applications:

  1. Les développeurs écrivent du code source personnalisé qui se connecte et s’appuie sur les API des bibliothèques sélectionnées, généralement dans des fichiers JAR.

  2. Le code personnalisé est compilé en bytecode qui est conditionné dans un ou plusieurs fichiers JAR.

  3. Leyden introduirait un nouveau chemin divisé pour le fonctionnement des applications:

    1. Les applications pourraient suivre le cours traditionnel pour exécuter le bytecode, optimisant les « points chauds » de l’application en code machine natif pendant que l’application s’exécute.

    2. Une nouvelle occasion de compiler l’application sur des bibliothèques spécifiques au système d’exploitation pour créer une application native qui s’exécute sur un seul système d’exploitation similaire à d’autres outils de compilation natifs.

Le projet s’appuierait sur et améliorerait les capacités présentes dans Java aujourd’hui, utilisées par les développeurs pour distribuer des applications.

  • javapackager est utilisé pour distribuer des applications avec un JRE intégré et personnalisé pour une seule application. Les utilisateurs finaux n’ont pas besoin d’une installation Java à l’échelle du système pour exécuter chaque application, car les points de lancement de l’application passent par son exécutable java fourni.
  • jaotc est un compilateur expérimental pour certaines plateformes qui produit un exécutable natif. Leyden peut se développer directement au-dessus de jaotc.

L’avantage des applications compilées en mode natif est déjà bien visible dans le cadre d’application RedHat Quarkus: Supersonic Subatomic Java. Quarkus exploite l’image native GraalVM pour produire des applications qui sont «supersoniques» au moment de la première demande ou démarrage en tant que fonction sans serveur et «subatomiques» où l’application compilée en mode natif est plus petite que le bytecode Java d’origine. La page d’accueil de Quarkus répertorie ces mesures dans un graphique lisible sur sa page d’accueil avec des cases pour une comparaison visuelle:

  • En mode JDK, une application CRUD utilisait 145 Mo de RAM.
  • En mode natif, une application CRUD utilise 28 Mo de RAM, soit environ 80% de moins.
  • En mode JDK, l’application CRUD a mis 2,033 secondes à la première réponse HTTP.
  • En mode natif, l’application CRUD a pris 0,042 seconde, soit une diminution d’environ 98%.

Aucun calendrier n’existe pour l’achèvement de Leyde, permettant au projet d’être axé sur les fonctionnalités plutôt que sur la date. Avec la cadence de publication de six mois de Java, les candidats à l’évaluation apparaîtront dans une version pour établir un cycle de rétroaction efficace.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *