Java 9 : quelles nouveautés ?

De Adrien Orsier dans Technique

7 avr 2017

Plusieurs fois reportée, la sortie de JAVA 9 se rapproche enfin : un rapide tour d’horizon s’impose !

 

Quelle date de release prévue ?

Java 9 est déjà prévu depuis un bon moment, et a été plusieurs fois retardé.

La première fois que Java 9 et sa liste de fonctionnalités ont été annoncés, c’était le 11 Août 2014, soit il y a bientôt 3 ans.

Depuis cette date, la sortie de Java 9 a été plusieurs fois repoussée, la faute principalement au projet Jigsaw, qui a été intégré à Java 9 et met en œuvre la modularisation de la plateforme Java.

Normalement, à l’heure où j’écris ces lignes, Java 9 devrait sortir le 27 Juillet 2017.

 

Nouveautés

Les nouveautés de cette version sont naturellement assez nombreuses, donc je ne vais pas faire une présentation exhaustive, mais une sélection de ce qui m’a semblé le plus intéressant.

Jigsaw (JSR376 et JEP 200, 201, 220, 260, 261, 282)

J’en ai parlé un peu dans l’introduction. C’est donc une notion de module qui apparait en Java 9.
On va donc pouvoir déclarer des Modules et les utiliser.
Une petite explication s’impose.

Dans Java 9, un module est défini par 3 concept :

  • Son nom – module name
  • Ce qu’il exporte – exports
  • Ce qu’il requiert (pour fonctionner) – requires

Ainsi, on peut voir le module suivant :

1
2
3
4
5
module com.foo.bar {
requires com.other_foo ;
exports com.foo.bar.api ;
exports com.foo.bar.engine ;
}

 

On a donc un module com.foo.bar qui utilise le module com.other_foo (on dit qu’il le read), et qui export le package com.foo.bar.api ainsi que com.foo.bar.engine.

Ceci est un exemple très simple, mais on imagine du coup que ce nouveau concept permettra une meilleur modularité des applications (et notamment de toutes les parties métiers).

Comme les choses ne sont pas faites à moitié, Java 9 est lui-même modularisé, c’est à dire que dorénavant, on peut installer une JDK “de son choix”, en ne prenant que les briques nécessaires au fonctionnement de son application.

 

HTTP 2 (JEP 110)

Fini la vielle library HttpURLConnection et bienvenue à l’API http 2 Client donc !

Cette API peut être utilisée dorénavant en asynchrone (alors que l’ancienne n’utilisait qu’un thread pour la request la réponse), ainsi que toute une panoplie de fonctionnalités.

Voila un exemple qui effectue un appel asynchrone :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
HttpRequest req = HttpRequest
.create(new URI(http://www.google.com))
.body(noBody())
.GET();
CompletableFuture<HttpResponse> aResp = req.sendAsync();
Thread.sleep(10);
If (!aResp.isDone()) {
aResp.cancel(true);
System.out.println("Failed to reply in 10 seconds…");
return;
}

The Java Shell (JEP 222)

Cette fonctionnalité est un petit Shell qui permet d’évaluer des instructions Java. Il propose également une API qui permet donc d’évaluer des instructions dans du code Java.

Exemple :

1
2
3
4
5
6
7
JShell shell = JShell.create();
List<SnippetEvent> events = shell.eval("int i = 10;");
for(SnippetEvent event : events) {
System.out.println(event);
}

Concrètement, qu’est ce qui va changer

 

Concrètement, le passage de Java 8 à 9 sera moins ardu que de Java 7 à 8, où de nombreux nouveaux concepts de programmation avaient été introduits.

Le principal changement, de mon point de vue de développeur, intervient au niveau de l’introduction des modules et donc de JigSaw, qui va permettre de mieux compartimenter notre code.

L’hébergement des applis Java 9 va demander un peu d’adaptation au sysadmin, puisque la JDK étant modulaire, on va pouvoir la rendre plus légère en n’intégrant que ce dont une application a besoin. Il est à noter que de gros efforts ont été également été fait sur la performance de la JVM, ce qui est évidemment un gros plus.

 

Pour aller plus loin

Évidemment, les changements présentés ici sont loin d’être exhaustifs.

Un peu en vrac, voilà des articles intéressants sur le sujet :

 

Un article très intéressant qui liste un peu plus exhaustivement les changements apportés par Java 9.

Un site qui présente l’avancement des développements sur Java 9 (et donc sa date de release), et qui concentre un certain nombre d’articles sur le sujet.

Commentaire

2 + deux =

iMDEO recrute !

REJOIGNEZ-NOUS

A la recherche de nouveaux talents (développeurs web et mobile, chefs de projet,...)

Voir les annonces