Alors que Java s’était endormi depuis des années, au point d’être dépassé par des concurrents très agressifs, cette fois il n’en est plus de même et tous les six mois, une nouvelle version du langage nous est proposée. La prochaine sera le JDK 14.

 

Le JDK 14 devrait être disponible le 17 mars 2020 et il convient donc déjà, pour les développeurs, de se préoccuper de ce qu’il y aura dedans.

Il devrait y avoir quatre innovations importantes, qui portent sur des points de codage, sans remettre en cause les aspects importants du langage. On dira que c’est une release de consolidation.

La première est la « JFR Event Streaming », une API destinée à récolter des données JFR (JDK Flight Recorder), de diagnostic et de profilage qui portent sur les applications Java en cours d’exécution. Qu’il s’agisse d’applications in ou out-process. La différence étant que des applications in-process se partagent le même processus et donc communiquent avec des appels de méthodes locales, alors que des applications out-processus ne sont pas dans le même processus et nécessitent de passer par des appels de type RMI.

La « JFR Event Streaming » enregistre les mêmes évènements aussi bien in que out, avec un « overhead » (charge système) de moins de 1 %, ce qui est négligeable.

Son intérêt est que la JVM (Machine virtuelle Java) HotSpot génère plus de 500 données différentes de type JFR, mais que la plupart d’entre elles ne sont exploitables que via un « parser » de fichier log.

A la rigueur on pourrait s’en contenter s’il ne s’agissait que de constater le comportement d’une application, son profil, mais pas pour des interventions de monitoring en temps réel.

Grâce à la nouvelle API, on va pouvoir surveiller le comportement des applications de plus près, sans avoir à créer par exemple, une copie des données générées dans un autre fichier, pour pouvoir les exploiter. En termes de charge machine, ce sera toujours ça de gagné.

Une autre évolution très attendue est celle qui concerne la génération des exceptions NullPointerExceptions. La proposition qui a été faite est de définir explicitement les variables susceptibles de comporter des valeurs NULL, ce qui permettra aux développeurs de mieux suivre et comprendre, voire anticiper, la fin anormale et prématurée de leur code.

D’une manière générale le problème des NULL est pris en compte par tous les langages modernes, qui tentent de mettre fin à une confusion, qui n’a que trop durée.

La troisième innovation attendue est celle qui va permettre à l’API FileChannel de créer des instances « MappedByteBuffer » directement dans une mémoire dite NVM (« Non Volatil Memory »), qui commence à équiper de nombreuses machines et sont un compromis entre une mémoire d’exécution et une mémoire de stockage. Qui surtout conservent leurs contenus, même après extinction.

La nouvelle disposition est facilement compréhensible, qui va nous éviter de copier des fichiers sans arrêt pour conserver les données, ce qui ralentit le process global d’exécution et fonctionnellement ne sert à rien.

Dans un premier temps, il est seulement prévu de copier les données Java en NVM. Mais dans un deuxième temps, les concepteurs ont prévu diverses améliorations de cette disposition, de permettre par exemple à d’autres API de surveiller le comportement des buffers implémentés en NVM.

Le JDK 14, enfin, devrait non seulement améliorer l’usage des switch/case, mais surtout les confirmer, ce qui n’était encore qu’une proposition, arrivée avec le JDK 12.

On rappelle que la « switch expressions » est un concept qui étend le switch pour qu’il puisse aussi être utilisé en tant qu’expression et ne plus se contenter de n’être qu’une instruction de contrôle. Il permet désormais de retourner une valeur et n’a plus besoin d’un break pour interrompre le flot des tests.

Globalement le JDK 14 n’est pas une révolution de palais et de nombreux développeurs ne seront pas concernés par ce qu’il contient. Il nous semble cependant plus marquant que certains récents JDK, le 11 par exemple, encore que tout ceci ne soit qu’une affaire d’appréciation, chacun y trouvant ce qui l’intéresse, comme dans une auberge espagnole.

De toute façon on ne peut pas faire la révolution tous les ans. Ca deviendrait lassant…