L'Université Charles, Oracle Labs et plusieurs autres chercheurs universitaires ont publié Renaissance, un nouveau benchmark pour les tests de performance des machines virtuelles Java. Ce benchmark permet aux développeurs travaillant sur la JVM de mesurer les performances entre des versions afin de mieux comprendre les performances des applications avec cette JVM.
Renaissance à pour objectif d'effectuer davantage de tests sur les fonctionnalités concurrentes publiées dans Java 8 (2014) à Java 12 (2019). Ces tests s’appuient sur de nombreux tests utilisés par d’autres benchmarks, tels que DaCapo et SpecJVM2008. Globalement, il existe 21 tests comparatifs parallèles et orientés sur la concurrence couvrant à la fois le code Java et Scala. Un autre test couramment utilisé pour l'analyse comparative des machines virtuelles, le SpecJBB2015, est utilisé par IBM pour démontrer l'impact des modifications matérielles sur les performances Java.
Cinq des douze auteurs du livre blanc à propos de Renaissance travaillent sur GraalVM avec Oracle Labs. GraalVM est une nouvelle machine virtuelle polyglotte conçue pour exécuter plusieurs langages logiciels, y compris Java, sur un seul runtime. GraalVM est disponible à la fois en édition communautaire et commerciale. Chaque édition propose deux modes de fonctionnement : le mode hotspot et l'image native. Le mode HotSpot est nommé d'après l'implémentation HotSpot d'OpenJDK et est entièrement compatible avec OpenJDK, passant par le kit de tests de compatibilité Java. L'autre mode d'opération de GraalVM, l'image native, compile les applications Java en code machine natif à l'aide d'une hypothèse closed-world et ne correspond pas à la définition de compatibilité de Java SE pour un certain nombre de raisons. Cependant, il peut exécuter des applications qui correspondent à son hypothèse de closed-world.
Nikita Lipsky, ingénieur logiciel principal chez Excelsior, a soulevé la question de la compatibilité des images natives telle que définie par Sun Microsystems en 2004 : "Un exemple est qu'il existe une règle exigeant qu'un produit soit compatible avec toutes les configurations ". Il est possible d'utiliser une configuration spéciale pour réussir les tests, mais alors encourager ensuite vos clients à utiliser d'autres configurations subtilement incompatibles. Oui, quelqu'un a déjà essayé cette astuce une fois."
InfoQ a échangé avec Oracle pour vérifier que les valeurs publiées dans le test de performance Renaissance étaient générés dans le mode compatible avec HotSpot et, par conséquent, comparables aux autres JVM.
Globalement, les performances obtenues par GraalVM Community Edition étaient comparables à celles d’OpenJDK, tandis que GraalVM Enterprise Edition obtenait de meilleurs résultats. Dans le graphique ci-dessous, plus c'est élevé, mieux c'est.
La sortie de Renaissance est source de confusion avec les autres implémentations de Java, qui n'étaient pas impliquées ou consultées sur ce que le benchmark mesurerait. Contrairement à SPEC, qui gère un environnement dans lequel les fournisseurs concurrents s'accordent sur une base de référence équitable, un seul fournisseur de VM, GraalVM, a participé à Renaissance. Bien que sept des douze auteurs proviennent d'universités différentes, l'aspect concurrentiel n'était pas présent. "La crédibilité des benchmarks est un enjeu et les benchmarks des fournisseurs sont truffés de conflits d'intérêts. Les nouvelles suites de benchmarking sont concernées à doubble titre. Le nouvelles suites de benchmarking qui affichent des résultats des produits des fournisseurs (spécialement optimisés) le sont triplement.", déclare Aleksey Shipilev, un expert en performance chez Red Hat qui travaille sur le ramasse-miettes Shenandoah.
"Le moment choisi pour la création du 'nouveau benchmark' n'est probablement pas un hasard. Mais il n'y a rien de mal à cela. Le temps nous dira s'il s'agit d'un véritable benchmark pouvant être utilisé pour comparer les performances de la JVM", explique Gil Tene, CTO de Azul. "Une course n'est pas une course tant que les concurrents ne se présentent pas et ne partent pas sur la même ligne de départ. Si [Renaissance] est un vrai benchmark, il restera le même et ne s'adaptera pas et ne fera pas de zig zag, permettant ainsi à d'autres de commencer à reproduire des résultats de référence [baseline] stables, puis commencer à mesurer des résultats qui comparent réellement les choses à travers les implémentations."
Aleksey Shipilev cite la difficulté de simplement exécuter le benchmark tel quel pour définir la ligne de départ : "Dire que la suite est'open-source et peut être modifiée', 'les critères sont assez bien choisis' est fallacieux et ne résout pas le problème actuel avec lui."