En ce jour de lancement de la DEVOXX 2016 où plusieurs collaborateurs INVIVOO seront présents, nous vous proposons un débrief de l’édition 2015 à laquelle a participé notre collaborateur Aboubakar K .

Les 8, 9 et 10 avril s’est tenue la 4eme édition de la conférence Devoxx France au palais des congrès. Je décris brièvement ci-dessous les contenus des sessions auxquelles j’ai assistées.  Les descriptions sont expressément brèves, chacune des sessions pouvant faire l’objet d’articles de plusieurs pages.

Journée du 08-04-2015

Université: Comprendre enfin JavaScript

Speaker: Thierry Chatel

Durant cette université de 3 heures, le speaker a fait un tour des caractéristiques essentielles de JavaScript: déclaration des variables, typage des variables, validité d’une instruction, déclaration des fonctions, etc.

En tant que développeur Java voulant aborder la compréhension ou l’écriture  de code JavaScript, à cause de la permissivité de l’interpréteur, on peut être vite tenté de se laisser aller à pleins de raccourcis qui peuvent passer suivant les circonstances, mais qui ne sont souvent rien d’autre que des bugs en clair pour les initiés.

Certaines syntaxes du langage paraissant simples au premier abord peuvent être un peu déroutantes si on n’est pas averti. Le speaker a pu les expliquer avec clarté et signalera les écueils potentiels de JavaScript auxquels un non-averti a peu de chance d’échapper.

Hand’s On Lab: Performance applicative: gagnez du temps avec un profiler

Organisateurs: Brice Leporini et Florent Ramière

L’exercice de l’atelier consistait à apprendre l’usage de certains outils pour déceler et si possible remédier à des problèmes de temps de réponse d’une application Java. Les outils utilisés étaient: JProfiler, JMeter, JConsole et Eclipse Memory Analyser Tool. Les instructeurs ont fourni les packages d’installation de ces outils ainsi que l’exemple d’application Web sur Tomcat dont on devait étudier les soucis de performance.

Si je m’attendais à connaître tous les secrets de l’amélioration de performance à la fin de cette session, j’aurai été déçu.

En effet mis à part JMeter, j’avais déjà utilisé un outil de profiling et je savais en gros comment ils fonctionnaient. Ce que j’espérais apprendre au cours de cette session, c’était des recettes établies pour trouver la source d’un souci de perf au sein d’une application.

Mais le sentiment que j’ai gardé et que les instructeurs ont voulu nous transmettre à mon avis, c’est que la détection de problème de performance est une démarche empirique!

Ainsi un des instructeurs répètera au moins trois fois que pour une même application, il passera probablement par des chemins différents à chaque fois qu’il devra y détecter des problèmes de performance, en fonction de son ressenti. L’essentiel étant qu’il finisse par trouver toutes les sources de problème. Personnellement j’ai du mal avec  cette façon de procéder. Mais si des experts me disent que c’est la plus réaliste, je suis au moins averti qu’au-delà des bouquins, l’amélioration de performance est une activité qu’on ne peut maîtriser qu’avec les expériences acquises durant la résolution pratique de nombreux cas.

Tools-In-Action:  RxJava – From Future To Rx

Speakers: Brice Dutheil et David Wursteisen

J’ai découvert le framework RxJava durant cette session de live coding. L’application utilisée pour la démo comporte un client qui a besoin d’enchainer plusieurs requêtes dont les résultats sont utilisés éventuellement après traitement comme arguments des prochaines requêtes.

Ils commenceront par montrer le code effectuant ce traitement en utilisant l’API Concurrency de Java. Avec l’usage des lambda, le code est concis par rapport à ce qu’aurait donné une version sans. Mais il n’empêche que le long enchainement des traitements et des requêtes avec l’utilisation de nombreuses parenthèses complique un peu la lecture et la compréhension du code.

Les  speakers monteront donc la réécriture de ce même code en utilisant le framework RxJava qui est un framework de programmation réactive développé par NetFlix. La réécriture du code avec RxJava le rendait à l’évidence encore plus concis et plus simple à comprendre.

RxJava n’est en fait qu’une implémentation d’une spécification appelée ReactiveX implémentée dans d’autres langages. Parmi les gros acteurs utilisant des outils basés sur cette spécification, on retrouve en dehors de NetFlix: Microsoft, Couchbase, SoundCloud, GitHub, etc.

Je note au passage que RxJava était le sujet de nombreuses sessions à cette Devoxx, cela montre l’intérêt de la communauté envers le framework. Cela peut s’expliquer par le courant reactive qui s’est installé récemment et qui semble avoir convaincu les grands acteurs du monde du développement pour la simplification de la construction de systèmes massivement concurrents, asynchrones et scalables.

Tools-In-Action: Des applications Java #?!@ing Manageable

Speakers: Emmanuel Hugonnet et Alexis Hassler

Durant cette session les speakers ont donné un aperçu du framework WildFly Core qui peut être vu comme le cœur du serveur Wildfy ne contenant que les services de  base en étant indépendant  de l’environnement JAVA EE.

Etant développé sur la base d’un modèle de composants désignés comme des modules, certains développeurs ont eu l’idée de proposer WildFly Core comme framework de monitoring pour d’autres applications qui seront configurées comme des modules. Une fois déployées comme modules de WildFly Core, les applications peuvent bénéficier des services d’introspection et de configuration proposés par WildFly Core à travers des interfaces standard: en ligne de commande ou en Java.

Les speakers présenteront comme démo le déploiement d’une instance de la base Cassandra  comme module d’une instance d’un WildFly Core. Ils montreront comment l’instance Cassandra peut être introspectée à travers la ligne de commande de WildFly Core ou avec l’API Java.

Tools-In-Action: Elasticsearch – De l’importance du mapping

Speakers: Jérôme Mainaud

La session mettait un accent sur l’importance que peut avoir le mapping d’un type sur la performance et la précision de la recherche dans Elastic Search.

Ce rappel est important dans la mesure où contrairement aux bases relationnelles par exemple, les documents peuvent être insérés dans Elastic Search sans que l’on ait à fournir de schéma explicite, même si en réalité un schéma implicite est créé par Elastic Search dans ce cas.

Mais si le document à insérer dispose d’attributs qui peuvent être utilisés comme critères de recherche, il peut être intéressant de tenir compte de la persistance de cet attribut dans un champ spécifique, et il incombe au développeur de créer dans Elastic Search le schéma adéquat pour le stocker correctement tous les attributs du document.

Dans Elastic Search ce schéma est désigné par le terme de mapping. Un mapping intelligent permettra donc d’augmenter la précision des résultats  en tenant compte des critères sur les  attributs qu’il décrit.

Journée du 09-04-2015

Keynote: Le futur de la robotique personnelle

Speaker: Rodolphe Gelin

Le speaker qui est l’un des responsables de la société Aldebaran nous donnera un aperçu d’exemples d’interactions possibles avec les robots dans un avenir proche.

Sa vision de l’avenir avec les robots est que ces derniers doivent être amenés à prendre de plus en plus de place dans notre environnement pour nous aider dans nos tâches quotidiennes.

Selon lui la crainte émise par certains quant à la fiabilité ou la capacité de contrôle des robots est injustifiée dans la mesure où c’est l’homme qui programme le comportement du robot et non justement l’inverse. Cette prise de position pourra probablement être rediscutée à la lumière des énormes progrès que l’on constate du côté de l’intelligence artificielle, machine learning etc …

Conférence: Bluemix: l’avenir du développement dans le Cloud

Speakers: Joel Gauci

Durant cette session les speakers feront dans la première partie une présentation générale de l’offre d’IBM en matière de Cloud « Paas » dédiée au développement et à l’hébergement d’applications  appelée BlueMix.

C’est une plateforme qui est relativement récente, en tout cas comparée à AWS et Google Cloud. Bluemix est basée sur l’architecture opensource Cloud Fondry et fournit à ce titre des environnements d’exécution supportant les applications compatibles avec cette architecture.

BlueMix fournit également le support  de conteneurs dockers appelés IBM containers. Les containers dockers, comme c’est le cas dans tout environnement cloud, permettent aux développeurs de packager et déployer leurs applications avec des plateformes indépendantes de l’environnement d’exécution de base du cloud.

BlueMix met également à disposition un environnement Open Stack pour ceux qui veulent déployer leurs applications  dans cet environnement opensource.

Enfin, BlueMix supporte la fonctionnalité de cloud hybride, en permettant le déploiement d’instances BlueMix au sein des infrastructures des clients.

Après la présentation générale de BlueMix, la suite de la session a été consacrée à la démonstration de l’un des nombreux services disponibles dans la solution, il s’agissait du service appelé Internet of Things Foundation(IoTF) qui offre un ensemble d’outils permettant la conception d’applications IoT. L’architecture de la démo était constituée du serveur IoT constitué par IoTF  et recueillant les messages envoyés par les objets connectés à travers un protocole opensource appelé MQTTF qui est devenu un standard du consortium OASIS en 2014.

Conférence: Un monde où 1 ms vaut 100 M€

Speakers: Alexandre Victoor et Thierry Abaléa

Les speakers mentionnent ici les projets pour lesquels ils ont rencontré de fortes contraintes de temps de réponse et se doivent d’améliorer le temps de réponse au niveau de toutes les sources d’optimisations possibles. Mais durant cette session ils se concentreront sur l’optimisation au niveau du code, en passant en revue quelques cas remarquables.

On verra par exemple la différence de performance entre deux codes itérant sur une matrice, le premier code parcourant la matrice ligne par ligne et le deuxième par colonne. On constate ainsi que le premier code était le plus rapide! Le premier code permet en effet de tirer parti du mécanisme de gestion des caches, ce qui n’est pas le cas du second.

Lorsque le doute s’impose, il ne faut pas hésiter à faire des mesures pour avoir la certitude sur la qualité de la performance d’un code. Ils montreront  également entre autres le gain apporté par un code lock-free par rapport à un code utilisant la synchronisation.

Conférence: Applications Concurrentes Polyglottes avec Vert.x

Speaker: Julien Viet

Vert.x est un framework polyglotte disponible sur de nombreuses plateformes qui aide à l’écriture d’applications hautement performantes utilisant massivement l’asynchronisme et la concurrence, en résumé un framework pour l’écriture d’applications réactives.

Le framework est inspiré d’Erlang/OTP, un framework Erlang, et de Node.js.  Les applications Vert.x sont développées en modules appelées Verticles. Les Verticles communiquent entre elles par message, par l’intermédiaire d’un bus. Vert.x est proposé avec une stack incluant des composants (au sens large) adressant plusieurs besoins: un framework web appelé Apex, des composants pour l’accès JDBC ou NoSQL, pour le test unitaire, etc.

Vert.x 3 la dernière version de Vert.x supporte la syntaxe à succès du framework RxJava pour l’écriture d’appels asynchrones.

Journée du 10-04-2015

Conférence: L’écosystème Docker sur Azure

Speaker: Patrick Chanezon

La présentation avait pour but de montrer le support de l’écosystème Docker sur le cloud Azure. Le speaker n’aura malheureusement pas le temps d’expliquer plus en détail l’intégration des deux environnements. Le sujet était riche et la grande partie de la session était consacrée à la présentation de Docker et l’ensemble de son écosystème.

Il évoquera l’adoption de docker chez les importants acteurs du cloud ou de la virtualisation: Amazon, Google, VMWare et Microsoft. Quelques outils ou plateformes de l’écosystème docker: Project Atomic, Core OS, Deis, Apache Mesos, etc.

Après une bonne présentation de Docker, il en viendra à l’adoption de Docker par Microsoft. On apprendra par exemple la collaboration récente engagée entre Microsoft et Docker pour permettre le portage du client docker sur la plateforme Windows sous la forme d’un exécutable Windows. Pour terminer il montrera qu’Azure supporte la création et le déploiement de conteneurs Dockers.

Le speaker invitera les développeurs du monde Java, majoritairement présents, à s’intéresser à l’évolution de l’attitude de Microsoft en matière d’ouverture envers le reste du monde: Linux, Java, ou autre. Et de ne pas garder cette image historique de l’éditeur lorsqu’il cherchait à enfermer ses clients et utilisateurs dans son monde propriétaire.

Conférence: Le retour en force de GWT

Speaker: Sami Jaber

GWT était l’un des grands absents de Devoxx France 2014. Le retrait de Google de la tête du projet et l’explosion des frameworks JavaScripts ces dernières années sont certainement pour beaucoup dans la naissance du mouvement d’impopularité que connaît désormais le framework depuis deux ou trois ans. Depuis le retrait de Google de la tête du projet, l’évolution de GWT est désormais entre les mains d’un comité de pilotage dont Google fait toujours partie.

Depuis sa mort annoncée en 2012 par une bonne partie de la communauté, GWT a continué à évoluer et cette session avait pour but de montrer que GWT est justement toujours en vie, que ce soit de par son usage ou son développement.

Le speaker commencera donc par évoquer les projets d’actualités importants qui ont été développés en GWT: Google Inbox, Google SpreadShit,AdWords, Google Groups, etc.

Le choix de la génération de JavaScript à partir de GWT ne présente pas comme seul avantage l’utilisation de Java à la place de JavaScript. Au niveau des performances, des mesures auraient montré que le compilateur GWT génère un JavaScript plus performant et plus réduit que le JavaScript équivalent écrit manuellement.

La lourdeur de GWT très souvent reprochée avec la fonctionnalité appelée ModeDev est adressée avec le nouveau mode d’exécution appelé SuperModeDev qui est officiellement supportée dans la dernière version.

Il annoncera le futur support de JSInterop pour une meilleure interopérabilité entre GWT et JavaScript  que ce que permet la fonctionnalité JSNI. Une des possibilités remarquables que permettra JSInterop est la consommation de bibliothèques JavaScripts packagées en WebComponents. GWT Prévoit également le support des styles GSS dans les prochaines versions.

La prochaine version de GWT, la 2.8, prévoit le support de Java8. L’utilisation des lambda permettra d’écrire des fonctions aussi concises qu’en JavaScript. Une amélioration de la performance de la compilation et des implémentations des collections est également prévue.

La roadmap de la version 3.0 est en cours de définition et prévoit le support de fonctionnalités appelées Service Workers et  DeltaJS. Ces fonctionnalités permettront à une application GWT de se mettre à jour à la volée en demandant au serveur de lui envoyer les évolutions effectuées par rapport à sa version. La version 3 prévoit également le support d’ ES6, la prochaine norme de JavaScript.

Conférence: Les nouveaux outils du développeur web

Speaker: Philippe Antoine

Une session très orientée pratique au cours de laquelle le speaker nous présentera des outils de référence pour chaque étape du processus de développement Web, côté client je précise, tout en donnant un aperçu de leur utilisation.

Il a ainsi détaillé la phase de prototypage, la phase d’édition, d’ajustement de style, de test, de build et d’évaluation de performance.

Pour conclure…

Pour ma quatrième participation, c’est encore trois bonnes journées de conférence  que j’ai passé. L’appréhension que j’avais au départ par rapport au changement de site a vite disparu une fois sur place. Je garde un bon souvenir des éditions passées à l’hôtel Mariot, mais il était nécessaire de trouver un nouvel endroit avec une plus grande capacité d’accueil, vu le nombre grandissant de participants. Et personnellement je me suis senti plutôt bien à l’aise au palais des congrès.

Au niveau de la qualité des sessions, je ne me plains pas. Il y a toujours quelques sessions qui peuvent être insatisfaisantes, pour diverses raisons. Je n’en ai pas eu beaucoup et j’en suis heureux.

Je précise tout de même que j’ai eu le plaisir d’assister à des sessions de Brian Goetz, Java Language Architect chez Oracle. Un monsieur bien connu dans le monde Java pour être l’auteur d’un livre de référence sur Java et pour ses importantes contributions toujours en cours dans l’évolution de Java.

Merci aux organisateurs et à tous ceux qui ont contribué pour la réussite des trois jours de conférence ! On attend déjà avec impatience la prochaine édition !