06/11/2016

Linux bénéficiera de la compilation anticipée pour JDK 9

La compilation anticipée, de son petit nom compilation AOT, sera disponible pour systèmes d’exploitation Linux 64-bit avec JDK 9.

Java 9 amènera le support de la compilation anticipée permettant la traduction en langage machine avant l’exécution du programme. Cette technologie se différencie de la compilation à la volée (JIT) qui est réalisée à l’exécution du programme. Une telle technologie permet notamment de compiler des classes Java avant même de lancer une machine virtuelle.

JIT : des problèmes de passage à l’échelle

Même si les compilateurs à la volée possèdent d’excellentes performances en terme de vitesse, ils sont parfois à la peine quand il s’agit de traiter des applications de grande taille, imposant un temps de latence important.

Vladimir Kozlov soutient dans une proposition d’amélioration pour le JDK (JEP) récemment acceptée, l’apport de la compilation AOT. Le projet OpenJDK implémentera donc cette proposition et la fonctionnalité devrait être disponible vers le mois de juillet 2017. Les objectifs de sa proposition visent à améliorer le temps de démarrage de toutes les applications, quelles que soient leurs tailles, avec un impact limité sur les performances d’exécution, le tout en tentant de ne jamais perturber le flux de travail de l’utilisateur final.

Une introduction très limitée

Seullemodule java.basedevrait être pris en charge dans un premier temps, les autres modules du JDK devraient bénéficier de cette innovation à titre expérimental. La compilation AOT serait alors prise en charge par un nouvel outil dénommé jaotc, un compilateur java statique qui produit du code natif pour les méthodes java compilées.

Cette innovation sera aussi limitée dans la version initiale aux systèmes Linux 64 bits exécutant Java 64 bits avec installation de libelf, avec une exécution sur un système équivalent à celui de la compilation. Seuls F2 et Parallel GC pourront être utilisés pour configurer l’utilisation de la compilation AOT. D’évidence, les classes générées dynamiquement ne pourront être prises à charge par cette technologie

Source : OpenJDK

Actualités