Sélectionner une page

Depuis mon dernier article sur Java9, le monde de Java a un peu bougé.

En effet, Oracle a décidé de publier une nouvelle version tous les 6 mois. Ce changement clair de vitesse dans les releases va certainement apporter un vent de fraîcheur!
Pour rappel, historiquement, les releases de nouvelles versions de Java étaient assez espacées, souvent de quelques années.

C’est donc un changement de philosophie qu’on a ici.

Il convient donc de rattraper le temps passé et faire un petit point sur ce qu’apporte, dans les grandes lignes (et avec en ligne de mire, ce qui intéresse les développeurs) ces deux versions.

Java 10

Sortie en mars 2018, cette version n’apporte, comme changement significatif, « que » l’apport d’un nouveau mot clef « var ». Ce mot clef introduit donc la notion « d’inférence de type » déjà bien connu dans de nombreux langage dans Java.

Concrètement, l’idée derrière cet ajout est de rendre le code plus lisible, bien qu’il soit possible, avec ce même mot, de le rendre particulièrement illisible. Comme à l’accoutumé, il en va de la responsabilité du développeur de rendre son code le plus lisible possible avec tout l’arsenal que son langage propose à son aide.

L’idée est de ne pas typer certaines variables (dont le typage fort sera déterminé au moment de la compilation) afin de rendre le code moins verbeux.
Ainsi, la ligne :

Peut désormais s’écrire :

Détail intéressant également, le mot « var » ne devient pas réservé à ce seul mot clef, afin notamment d’assurer la rétro compatibilité. Cela veut dire que vous pouvez toujours appeler des variables/fonctions/etc… « var ».

Java 11

Sortie en septembre 2018, il s’agit donc de la deuxième release de ce nouveau cycle des mise à jour tous les 6 mois. Cette release comporte nombre de petits changements, mais peu qui impactent réellement le développeur.

J’en noterai principalement deux.

La première, c’est la possibilité d’utiliser les « var » (la nouveauté de Java 10, donc), dans les fonctions lambda (qui étaient une nouveauté de Java 8).

La deuxième, qui n’impacte pas forcément tout le monde, est le fait que certains module sont supprimés, tel que Java EE(java.xml.ws, java.xml.bind, java.activation, java.xml.ws.annotation, java.corba, java.transaction, java.se.ee, jdk.xml.ws, jdk.xml.bind)  ou Corba.
On devra donc utiliser des third-party pour avoir tous ces outils.

Je n’ai pas listé tous les changements en essayant de me focaliser sur ce qui impacte directement le développeur, mais de nombreux changements  sont également portés par ces versions.
Voila une liste rapide non exhaustive : amélioration la rapidité du JDK, amélioration du garbage collector, optimisation sur la gestion des thread, support d’unicode 10…
Ce sont des changements que nous ne mettrons pas à proprement parler en oeuvre dans notre code, mais dont nous bénéficieront quand même.

Java 12

La prochaine version de Java, Java 12 donc, devrait sortir en Mars 2019, en suivant donc l’idée d’une release tous les 6 mois.

On connait déjà deux sujets abordés par cette version, encore en cours de développement.
D’or et déjà, on sait que le « switch » devrait connaitre des changements.
On devrait notamment pouvoir désormais l’écrire avec une syntaxe à base de flèche :

Ou encore l’utiliser en tant qu’expression (qui retourne donc une valeur) :

 

On pourra également regrouper plusieurs valeurs dans le case :

Il y a encore d’autre changement prévu sur le switch qui est donc vraiment modernisé.

Prévu également, l’introduction des « Raw String Literals ». Il s’agit de l’utilisation du caractère ‘`’ pour déclarer une String avec des sauts de ligne plus facilement :

 

Sources
https://medium.com/antelabs/what-is-new-in-java-11-442af9315f07
https://stackify.com/whats-new-in-java-10/
https://jaxenter.com/java-11-is-generally-available-149954.html
https://www.javacodegeeks.com/2018/06/expect-java-11.html
https://dzone.com/articles/jdk-12-switch-statementsexpressions-in-action
https://medium.com/antelabs/what-is-new-in-java-12-c5bc8ff9396e
Agence digitale iMDEO