Accueil Nos publications Blog Devoxx Belgique 2015

Devoxx Belgique 2015

devoxx_belgique

La conférence Devoxx Belgique, qui a lieu tous les ans à Anvers, a encore proposé cette année un ensemble de conférences qui mettent en lumière les évolutions, jour après jours, de notre industrie.

Des conférences de plus en plus nombreuses, à l’image de l’ouverture de Devoxx hors de l’Europe (ainsi que de la franchise Voxxed), ainsi qu’un nombre croissant de développeurs présents à ces rendez-vous, qui en font désormais des événements incontournables.

Java 9

 

Un des grands sujets de cette édition portait sur les nouveautés de la prochaine version de Java. Java 8 étant maintenant bien en place, Oracle est venu à Devoxx Belgique présenter les nouvelles fonctionnalités qui seront offertes par Java 9, en insistant sur le projet “Jigsaw” : le système de module qui sera offert par la nouvelle version.

Ce système de module va permettre de restreindre la visibilité de certaines APIs. De plus, la résolution entre APIs se fera au démarrage de l’application. Il vous sera garanti, lorsque votre application démarre, qu’elle a bien accès à tous ces composants et éviter les erreurs type “NoClassDefNotFoundError” en cours d’exécution de votre application. Ce système risque toutefois de poser problème aux différents systèmes de build, tels que Groovy ou Maven. Or, c’est via ces outils que ce système de module permettra une meilleure adoption possible.

 

 

Oracle profite de cette modularisation pour limiter l’accès à ces APIs internes ou dépréciées, mais cela sera fait par petites touches. Oracle supprimera l’accès aux APIs qui ne sont pas utilisées par des projets tiers, en prenant comme référentiel maven centra, et une solution alternative sera proposée pour d’autres APIs. Enfin, Oracle laissera, pour l’instant, l’accès à certaines APIs qui, bien qu’indiquées comme à ne pas utiliser, sont référencées dans encore trop de projet. On pense notamment à sun.misc.Unsafe.

Ce rafraîchissement d’APIs ne devrait pas avoir d’impact sur la majorité des projets informatique, mais il est réconfortant de voir qu’Oracle prend soin de nettoyer son existant.

 

 

 

“Jigsaw” va donner la possibilité de connaître ce qui est nécessaire, et ce qui ne l’est pas, pour l’exécution d’un programme, que ce soit dans les dépendances, mais également au niveau du JRE. Via l’outil “jlink”, il sera possible de produire une JRE spécifique pour votre application, avec les dépendances minimales. Oracle essaie de rentrer dans le monde de l’IoT (Internet Of Things) avec la version ARM de Java 8, et confirme son ambition avec la création d’un JRE minimal, parfaitement adapté pour ce type de “device”. En effet, un JRE plus petit implique moins de puissance de calcul nécessaire pour le démarrage de son application, ressource qui est limitée sur un équipement IoT.

Ce JRE réduit et spécifique ne profitera-t-il qu’au domaine de l’IoT ? Nous ne le pensons pas. En effet, même si les applications démarrent de plus en plus vite grâce à un JRE plus performant et des serveurs d’applications plus rapides, du code qui ne sera jamais utilisé est tout de même chargé. Cet allègement supprimera cet effet indésirable et sera donc aussi bénéfique pour des applications standards.

 

 

 

Microservices : résilience et outillage

 

Un autre sujet fréquemment abordé par les speakers présents concernait les architectures microservices. Au-delà de la présentation des principes par San Newman, il est souvent question de la mise en place d’une architecture résiliente et des outils qui peuvent permettre de répondre à ce besoin.

 

Présentation de Kubernetes, permettant l’orchestration de ces microservices :

 

Netflix était aussi venu pour présenter son utilisation des microservices ainsi que ses principes d’Ingénierie du Chaos.

 

Containeurisation : Docker s’outille (docker-tools)

 

Docker Inc. a présenté des nouveautés de Docker. Tout n’a pas été passé en revue, un focus ayant été fait sur l’orchestration puisque la majorité avait été annoncée à la Dockercon Barcelone, la semaine suivante. L’entreprise propose maintenant docker-machine : un outil pour créer un container, sur sa machine ou à distance, sur différents fournisseurs de service Cloud, que ce soit Amazon EC2, Microsoft Azure, Google Cloud Platform… Docker propose ainsi des outils pour faciliter son usage et son adoption. Les raisons pour ne pas adopter docker disparaissent de plus en plus.

 

Docker compose permet de créer un ensemble de containers, qui seront reliés entre eux. Une application présente dans un container peut ainsi dialoguer avec un autre container, sans avoir à connaître celui-ci. Cette fonctionnalité (“link” dans docker-compose) fonctionne avec des containers tournant localement sur la même machine. Ceci limite le déploiement d’un cluster en production via docker-compose : il ne peut pas lier des containers présents sur différentes machines entre eux. Docker swarm propose de lever cette contrainte en décrivant un cluster de containers. Ces derniers pourront être déployés sur des machines distantes, tout en pouvant être liés entre eux. La même configuration pourra être utilisée pour déployer sur votre machine ou en production, où la topologie physique sera différente.

L’autre annonce ne vient pas de Docker mais de Microsoft. En effet, le géant de Redmond a implémenté les APIs Docker en primitive sur Windows en utilisant le système d’isolation de l’OS. Il va être possible de faire tourner des applications Windows dans des containers Windows. De nouveaux scénarios vont être envisageables : démarrer un cluster hybride de container Windows/Linux.  Cette année, il faut s’attendre à voir du Docker partout : sur les postes de développeurs, dans le cloud, sous Linux et maintenant sous Windows.

 

Modèle de programmation asynchrone

 

Les applications modernes ne suivent plus le modèle d’architecture monolithique. Elles ne communiquent plus avec un seul serveur SQL, mais un ensemble de serveurs représentant notre base de données, généralement de type NoSQL. Ces applications doivent communiquer avec d’autres services qu’ils soient externes ou internes à l’entreprise. Cette tendance se confirme avec la migration vers des architectures microservices.

Mais comment réaliser une communication performante avec un ensemble de serveurs externes ? La programmation synchrone impose un couplage temporel fort avec ces services distants. C’est pourquoi on préférera la programmation asynchrone pour répondre à ce type de problème : notre application pourra continuer à traiter de la donnée en attendant la réponse d’un service externe.

Différentes sessions portaient ce thème de programmation asynchrone, confirmant notre vision : nos projets auront à écrire du code asynchrone, mais il reste à définir comment.

 

Ainsi, lors de Devoxx Belgique 2015, Couchbase a animé un atelier pratique sur RxJava, tandis que RedHat a présenté Vert.X et son mécanisme d’asynchronisme à base d’eventBus. TypeSafe est revenu lors de différentes sessions sur les problématiques de l’asynchrone, les différents modèles de programmation asynchrones et une présentation d’Akka-Stream.

Il est difficile de définir quel sera le modèle de référence dans les mois qui viennent (Event Bus via Vert.X ? Fiber via Quasar ? Observable via RxJava ou encore Actors via Akka ?). L’initiative Reactive Streams permettra de choisir son implémentation sans forcément en impacter l’utilisation qui en est faîte dans son application.

 

Communication et concrétisation

Lors de ces différentes présentations, Oracle a fortement communiqué sur Jigsaw, projet mainte fois repoussé devenant enfin une réalité. Cette évolution permettra à Java une plus grande souplesse et pourra contrer la lourdeur qu’on lui reproche parfois (à tort ou à raison). Oracle, avec Java 9, se tourne aussi désormais vers les appareils à faible empreinte mémoire et l’IoT.

On peut aussi remarquer, au cours de cette édition de Devoxx Belgique 2015, que l’utilisation de Docker et la mise en place d’architectures microservices s’inscrivent dans une démarche de plus en plus concrète. Ces outils et techniques s’installent dans le quotidien du développeur. Cela se placera-t-il comme outils de base des nouveaux projets de développement dans l’année qui vient ?