JDK 25 : Amélioration des performances de String grâce au pliage constant du code de hachage

2025-05-02

JDK 25 améliore considérablement les performances de la classe String en permettant le pliage constant de la fonction String::hashCode. Cela entraîne des gains de vitesse substantiels, notamment lorsque les Strings sont utilisées comme clés dans des Maps statiques et immuables, comme dans un scénario où des MethodHandles pour les appels natifs sont accessibles via des clés String. Les benchmarks montrent une amélioration de plus de 8x. Cette optimisation est obtenue en marquant le champ interne String.hash avec l'annotation @Stable. Cela permet à la JVM de mettre en cache et de réutiliser le code de hachage, évitant le recalcul pour les codes de hachage non nuls. Bien qu'un code de hachage nul puisse entraver cette optimisation, un correctif futur est prévu.

Lire plus
Développement

Plongeon en profondeur dans le démarrage de la JVM

2025-01-09

Billy Korando de l'équipe Java d'Oracle a publié un article détaillé le 9 janvier 2025, explorant les complexités du démarrage de la JVM. L'article offre un aperçu détaillé des mécanismes internes d'initialisation de la JVM, fournissant des informations précieuses aux développeurs Java. Il est conseillé aux lecteurs de consulter la description de la vidéo pour plus d'informations.

Lire plus
Développement Démarrage

Valhalla : La refonte épique de Java touche à sa fin

2024-12-17

Après dix ans de développement, le projet Valhalla, la refonte ambitieuse de Java, approche de son terme. Visant à combler le fossé entre les classes et les types primitifs, Valhalla introduit des classes de valeur qui offrent la commodité de codage des classes avec les performances des primitifs, résultant en une disposition mémoire plate et compacte. À la Devoxx 2024, l'architecte de langage Java Brian Goetz a fourni une mise à jour complète, soulignant des fonctionnalités clés telles que les classes de valeur, les types à restriction de nullité, l'analyse d'affectation définitive améliorée et l'initialisation stricte.

Lire plus
Développement Classes de valeur