[Devoxx 2014] Notre regard sur le futur de Java

Avec plus de 3500 participants, plus de 200 talks, le tout sur 5 jours, Devoxx est la conférence majeure sur l’écosystème Java en Europe. Différents types de session s’enchaînent lors de ces 5 jours, allant de sessions longues, comme les University, aux sessions plus courtes, en passant par des ateliers. Les thèmes ne sont pas restreints au langage Java : on y parle de langages alternatifs, d’architecture, ou encore de l’état des spécifications futures. Cette conférence permet d’avoir une photographie des technologies actuelles, mais aussi futures. Nous vous proposons dans la suite de retrouver une compilation des sujets auxquels nous avons assistés, accompagnée de notre avis.

Java 8

Une multitude de talks à propos de Java 8 étaient présents. Cette dernière version étant disponible depuis 8 mois, le Devoxx ne pouvait pas passer à côté. Oracle a répondu présent en sponsorisant l’événement et en proposant différentes sessions sur le sujet. Les nouveautés de Java 8 ont été abordées (lambda, Date API, …), ainsi que les nouvelles possibilités offertes par ces changements. Les streams apportent ainsi la possibilité de paralléliser des traitements sur un ensemble d’éléments. Les applications sont de plus en plus réparties et nécessitent d’écrire des appels non bloquants. Java 8 permet d’écrire ce type d’application grâce aux CompletableFuture qui permettent de chaîner les appels asynchrones.

List<Repo> result = CompletableFuture.supplyAsync(() -> service.contributors("ReactiveX", "RxJava"))
   .thenApplyAsync(contributors -> service.repos(contributors.get(0).author.login))
   .get();

Le code ci-dessus illustre un appel asynchrone à un webservice suivi d’un autre appel asynchrone à un autre webservice. CompletableFuture est une avancée par rapport aux Future qui ne permettent pas d’écrire facilement cette succession d’appels asynchrones. C’est une API à regarder, si vos applications ont des besoins de tâches asynchrones.

D’autres talks ont illustré les concepts de la programmation fonctionnelle via Java 8. Cet aspect modifie les API offertes par le langage, et modifieront également vos applications. Vous pourrez, par exemple, écrire, via le type Optional, du code gérant l’absence de valeur d’une façon élégante et fonctionnelle, sans craindre de NullPointerException.

String helloWorld = Optional.<String>ofNullable(null)
       .map(str -> "hello " + str + "! ")
       .orElse("anyone here ?");

Dans l’exemple ci-dessus, la notion de valeur optionnelle est exprimée à travers le type. Si l’une de vos méthodes utilise un paramètre de type Optional, vous savez de facto que vous aurez à gérer une absence de valeur. Cela va permettre de lever les ambiguïtés dans votre code, menant à mettre en place de la programmation défensive en vérifiant systématiquement la nullité des objets.

Notre exemple montre la création d’un objet de type Optional via la méthode Optional.ofNullable(...). Elle est suivie d’une opération de transformation qui s’applique si une valeur existe (str -> "hello " + str + "! "). Si elle n’existe pas, alors une valeur par défaut est retournée. Optional permet donc de décrire plus précisément une API à travers un nouveau type.

On espère une adoption rapide dans les équipes de développement. On ne prévoit toutefois pas la même vitesse d’adoption pour les frameworks tiers qui veulent rester compatibles avec les précédentes versions de Java.

Ses nouveautés, son approche de la programmation fonctionnelle, ses gains en performances sont pour nous une preuve que Java 8 est un choix viable en production. Vous ne déploierez peut-être pas d’applications basées sur cette dernière version dans les prochains mois, vos applications pouvant être longues à migrer, mais la majeure partie des étudiants actuellement à l’université ou en école d’ingénieur vont apprendre Java avec cette version. Les paradigmes de programmation fonctionnelle leur paraîtront familiers (comme pouvait l’être les évolutions de Java 5 en leur temps).

Pour avoir plus d’information, vous pouvez également consulter notre publication : Java 8 : est-il toujours un langage actuel ?

Le futur de Java : Java 9

Les sessions sur le futur du langage affichaient complet et cela confirme l’intérêt des développeurs pour les prochaines versions.

Nous avons pu constater durant les conférences que les équipes d’Oracle ainsi que la communauté travaillaient de manière active sur la version suivante (vous trouverez une pré-version de Java 9 à cette adresse : http://openjdk.java.net/projects/jdk9).

A ce titre, le projet Jigsaw devrait (enfin) aboutir et entraîner la suppression de rt.jar et tools.jar. Pour rappel, Jigsaw doit permettre d’introduire la modularité au cœur du langage, ce qui entraînerait une amélioration des performances et une diminution de la taille de la machine virtuelle, rendant possible le déploiement avec moins de contraintes de la machine virtuelle sur des environnements limités en ressources. Java 9 ne devrait pas non plus présenter d’évolution au niveau du langage mais bien sur les API et le cœur de la plate-forme.

En aparté

Les micro-services

Une autre présence remarquée était celle des sessions sur les micro-services. Le sujet intéresse et sera certainement prédominant en 2015. Beaucoup de gens cherchent à savoir ce qu’il y a exactement derrière le mot “microservices”.

Les architectures monolithiques développées depuis des années montrant clairement leurs limites, notamment lorsqu’il est question de pouvoir faire évoluer son applicatif pour suivre les évolutions du marché. En effet, les équipes de développeurs demandent de plus en plus de souplesse dans la réalisation d’applications, afin d’ajouter de nouvelles fonctionnalités plus rapidement. La mise en place des architectures micro-services semble pouvoir répondre à cette demande. Chaque micro-service est une application “standalone” tournant dans son propre processus et communiquant avec les autres au travers de webservices de type REST. Ceci permet un faible couplage entre chaque partie et un cycle de vie indépendant.

Ce type d’infrastructure est utilisé depuis plusieurs années chez Spotify. Chaque fonctionnalité de l’application est un service avec son équipe dédiée. L’échec ou la chute d’un des services n’entraîne pas l’indisponibilité de tout le produit (graceful degradation).

La société Pivotal a bien compris la demande et propose désormais son framework Spring Boot. Typesafe et Zengularity ont, de leur côté, leur framework Play!. L’autre framework qui mérite une attention particulière est Dropwizard, qui capitalise sur les technologies déjà éprouvées et connues des développeurs (Jetty, Jersey, Jackson, Metrics, Maven).

Material Design

Material Design

Google a présenté le Material Design : un écosystème visuel comprenant des styles graphiques mais également des composants (boutons, formulaires, …). Ce nouvel aspect visuel est disponible sur Android, et forme la base du prochain système en cours de déploiement : Lollipop. Tout ceci est également sous forme de Web Component via Polymer.

Pour présenter Material Design, Google n’a pas hésité à utiliser les slots des keynotes qui lui étaient alloués montrant une réelle volonté de pousser cet écosystème. Pourtant, bien que l’on soit convaincu que Material Design va s’imposer sur Android, dû au fait que les applications essaient d’avoir une cohérence graphique avec le système, nous sommes partagés quant à son avenir sur le web. Aurez-vous envie de mettre ces composants dans vos applications? Ils sont parfaits pour dépoussiérer un ancien backoffice, à condition d’accepter la touche Material Design. Ce framework deviendra-t-il le nouveau Twitter Bootstrap?

Nouvelle concurrence

Java 8 est là et bien là. Ici, à SOAT, nous en sommes convaincus. Il va nous aider à construire les applications d’aujourd’hui et de demain. Que ce soit des applications web, des applications embarquées, des architectures micro-services, … .

Oracle prépare déjà sa suite. Elle devrait être une mise à jour mineure avant la prochaine majeure. Microsoft vient de faire le choix d’ouvrir sa plateforme .NET, elle sera disponible à priori sur les mêmes environnements que les machines virtuelles Java. Il sera intéressant de voir si le périmètre des évolutions prévues par Oracle sera revu avec ce renouveau de concurrence.

Nombre de vue : 185

COMMENTAIRES 2 commentaires

  1. […] Avant toute chose, un microservice ce n’est pas quelque chose de dédié à Service Fabric, mais un modèle d’architecture qui existe depuis un certain temps. Par ailleurs, c’est assez en vogue chez les développeurs Java. On en parlait déjà lors du Devoxx 2014. […]

  2. […] vous invitons d’ailleurs à relire l’article de David Wursteisen et Bertrand Lehurt sur Devoxx Anvers 2014 où ils détaillaient les points importants à retenir de cette dernière édition ainsi que […]

AJOUTER UN COMMENTAIRE