240 jours se sont écoulés depuis la sortie de JEP 3: JDK Release Process , et la machine infernale pour la production de nouvelles versions ne veut pas s'arrêter. Le moment est donc venu pour la prochaine version candidate . C'est la période où tous les ponts sont brûlés, les bogues avec des priorités P2-P5 ne signifient déjà rien et les jours avant la sortie sont numérotés.

Bugs
Tous les bogues avec la priorité P1 ne sont pas fermés. Vous pouvez voir la liste complète des problèmes dans le bugtracker . Et ici, la chose la plus étrange nous attend: ils se réfèrent tous strictement à Swing lors de l'utilisation de GTKLookAndFeel.
Déjà dit mentalement: "Mais qu'est-ce qui ne va pas avec ces gars de Swing?" Cette fois, ils ne sont pas «à blâmer». Si quelqu'un ne le sait pas, Gtk est une boîte à outils gratuite pour développer des interfaces graphiques, en particulier sur le système d'exploitation GNU / Linux pour X11 et Wayland.
Depuis Gtk 3.20, leur façon de travailler avec de nombreux styles et widgets a changé . Au lieu des classes de style et des noms de type, les noms d'élément sont désormais utilisés. Gtk 3.20 a été publié le 21 mars 2016 , et c'était une version à très grande échelle - 28933 commits et Wayland par défaut. En général, l'ensemble du Gnome a commencé à avoir l'air un peu différent.

Pas étonnant que Swing puisse oublier quelque chose et ne pas le tester. Une partie des bogues a été déplacée en priorité vers P2 et transférée vers JDK 13. Par exemple, ce bogue sur le fait que Motif sur MacOS, pour ainsi dire, n'est plus un environnement graphique aussi pertinent:

Ce sera drôle si quelqu'un utilise encore Motif et AWT sur Habré. J'espère que le douzième JDK ne sera pas annulé à cause de cela, sinon ce sera le fichier le plus épique de Java dans toute sa nouvelle histoire de nouvelle version.
CARACTÉRISTIQUES
Les JEP de cette liste ne seront pas répertoriés par importance, mais exclusivement par numéro de série. C'est ainsi que vous ne pensez pas soudainement que Shenanda et JMH se sont levés à cause de sympathies personnelles.
189: Shenandoah: un ramasse-miettes à faible pause (expérimental)
Ce serait bien si cela s'était produit il y a un an, et Shenanda est entrée dans le LTS. D'accord, attendez - merci pour cela. Shenandoah est un collecteur à fosse basse qui atteint sa fosse basse en raison de la phase d'évacuation à plusieurs fils. De plus, les pauses ne dépendent pas de la taille de la hanche, vous pouvez donc tourner en toute sécurité les tas de téraoctets sur l'aiguille.
230: Microbenchmark Suite
Une suite de tests basée sur JMH est ajoutée au JDK, et JMH lui-même aussi. Réside dans jdk/jdk/test/micro/org/openjdk/bench
. JMH est un cadre pour créer, assembler, exécuter et analyser des microbenchmarks pour Java et d'autres langages JVM, écrit par vous-même, vous savez par qui . JMH est désormais la norme de facto pour les micro-benchmarks, et l'apparition de tels JEP est une question de temps.
325: Changer d'expressions (préversion)
Au lieu de mille descriptions:
int numLetters = switch (day) { case MONDAY, FRIDAY, SUNDAY -> 6; case TUESDAY -> 7; case THURSDAY, SATURDAY -> 8; case WEDNESDAY -> 9; };
334: API des constantes JVM
L'objectif est de fournir un ensemble de types pour les descriptions de modélisation formelles des classes, méthodes et autres entités dans le runtime et le fichier de classe et de les tirer sur les classes principales comme String
ou Class
. Ils vivent dans des packages comme java.lang.invoke.constant
et ne le demandent pas, mais vous pouvez jeter un œil au patch ici .
340: un port AArch64, pas deux
L'ancien port arm64 est jeté dans le froid, mais l'ARM 32 bits et aarch64 sont activement sciés. Merci à RedHat et BellSoft pour l'existence de ces ports (soit dit en passant, le bureau de BellSoft est situé à Saint-Pétersbourg, à côté de l'ancien bureau Oracle). À la sortie de JDK 12, nous essaierons d'obtenir des commentaires plus détaillés des représentants de l'entreprise.
341: Archives CDS par défaut
En tant que fonctionnalité, CDS était disponible pour nous depuis longtemps, mais il n'était pas clair pourquoi chaque fois que vous écrivez -Xshare:dump
, si le résultat par défaut de cette commande est légèrement prévisible même au stade de la création de la distribution JDK. Cette erreur ennuyeuse sera corrigée dans JDK 12, l'archive CDS sera générée par les créateurs de la distribution, même pour les builds de nuit (à condition qu'ils soient 64 bits et natifs, pas pour la compilation croisée).
344: Collections mixtes avortables pour G1
Cette fonctionnalité est requise par les mécanismes internes du garbage collector G1, de sorte qu'elle s'adapte plus souvent aux exigences pour la durée de la pause. Il se trouve que vous pouvez déterminer quand G1 évalue encore et encore incorrectement la complexité de l'assemblage, en particulier pour les anciennes régions. À ce stade, vous pouvez avoir peur et commencer à collecter progressivement, étape par étape, et après chaque étape, être en mesure d'interrompre l'assemblage. On fait valoir que cela permettra un meilleur ajustement dans le temps d'assemblage prévu.
346: renvoyer rapidement la mémoire validée inutilisée de G1
Maintenant, G1 donne la mémoire validée au système d'exploitation soit avec GC complet, soit avec assemblage parallèle. Cela et un autre G1 essaient de toutes les manières possibles d'éviter, ce qu'il remercie. Mais cela signifie également que la mémoire est dévorée comme si elle n'était pas en elle-même, et G1 peut être forcé d'effacer la mémoire uniquement de manière externe. C'est particulièrement triste pour tous les dockers et autres hipsters sans téraoctets de RAM sur le serveur. Au lieu de cela, il est proposé de faire de la même manière que Shenanda ou GenCon d'OpenJ9 sait déjà comment identifier une utilisation insuffisante du tas et en conséquence réduire son utilisation. Sur certains tests sur Tomcat, cela a permis de réduire de près de moitié la consommation de mémoire.
Et ensuite
Il s'agissait d'une revue descendante, et nous essaierons de faire une analyse détaillée des fonctionnalités plus près de la version sous forme d'articles séparés - traductions de JEP, screencasts avec des benchmarks, ou autre chose. Nous devons maintenant attendre la sortie, qui est prévue pour le 19 mars.
Minute de publicité. Très prochainement, du 5 au 6 avril, se tiendra la conférence JPoint, qui réunira un grand nombre de personnes qui connaissent bien JDK et toutes sortes de nouvelles fonctionnalités. Par exemple, il y aura sûrement Simon Ritter d'Azul avec une conférence sur «JDK 12: pièges pour les imprudents» . L'endroit le plus approprié pour discuter de la dernière version! Vous pouvez en savoir plus sur JPoint sur le site officiel .