26 mai 2016

Rétro Devoxx France 2016




Depuis maintenant 5 ans, Devoxx France constitue une conférence incontournable de l'écosystème Java en France.
Comme chaque année, toute l'équipe de Nudge s'est déplacée pour l'occasion afin d'assister aux présentations et échanger autour de notre stand.

On a même eu la visite d'@Axelle Lemaire, et on peut remercier @cfalguiere pour cette photo et on ne saura pas départager le SWAG ou le canard  pour le concours de Photobombing 



Il est hélas impossible de tout voir et tout faire : 3 Jours de conférence, à raison de plusieurs heures de talks par jour, plus les ateliers pratiques, les rencontres d'anciens collègues, faire la tournée des stands, ... c'est un vrai marathon!
En termes de contenu, mieux vaut donner la priorité à ce que l'on ne peut pas "rattraper" par la suite sur Youtube, en particulier les ateliers Hands-On.

La variété des retours sur la conférence montre à quel point il est facile d'adapter son parcours en fonction de nos affinités, on peut féliciter les organisateurs sur ce point : il faut vraiment être difficile pour s'ennuyer.

Dans l'équipe, nous avons tendance à apprécier les présentations concrètes et donc miser sur ce qui est exploitable immédiatement dès le retour de la conférence. Ce choix s'explique aussi par notre quotidien :
- suivi de performances et profiling
- compatibilité de java5 à java8 (et plus si affinités)
- cluster cassandra qui traite ~ 2 To de données par jour en temps réel
- infrastructure et déploiement

Voici ce qui a ont le plus retenu notre attention cette année :

Pourquoi Maurice ne doit surtout pas coder en GO


Go est un langage plus particulièrement adapté pour tout ce qui touche au système, là où le C est souvent privilégié.

La gestion des dépendances se fait par l'import de code source. Cela peut parraître assez étrange dans le monde Java mais est en réalité très courant dans le monde du code natif, notamment le code du Kernel Linux.

Les builds sont 100% statiques, donc on a un gros exécutable facile à déployer sans avoir de dépendances sur le système. L'équivalent java requiert actuellement de packager un gros jar (ou jar+dépendances) ainsi que la JVM, et c'est ce que permettra Jlink attendu pour Java 9.

Enfin, sur la forme : si quelqu'un en doutait encore, on peut faire autre chose que du java après 15 ans d'expérience sur le sujet, la perspective d'un ancien développeur java montre clairement quelles sont les frustrations auxquelles on peut s'attendre.

Java vous déclare sa flamme


L'un des principaux défauts des profilers que l'on utilise courrament sur la JVM se trouve dans le fait qu'ils ne mesurent que ce qui se passe dans le bytecode, et non le process de la JVM dans son intégralité.

Il s'agit d'un outil principalement développé par Netflix, et tous les détails sont disponibles sur leur blog

Les Flame Graphs correspondent à la visualisation d’événements de mesure du temps CPU capturés au niveau du système, depuis les dernières versions de Java8 il est possible d'y inclure l'exécution de bytecode Java.

Dans notre contexte, nous assurons la compatibilité de la sonde sur Java 5, donc on ne peut pas l'utiliser directement. Cependant on peut en profiter pour apprendre du comportement de cette dernière sur les dernières versions du JDK et adapter notre code en conséquence.

ArrayList et LinkedList sont dans un bateau


Un talk de José Paumard, c'est l'équivalent technique d'un petit vin liquoreux accompagné d'un bon bouquin au coin du feu. En bref, ça fait toujours du bien aux neurones et en plus on apprend des choses. Universitaire le jour et Java le soir, c'est un habitué de Devoxx et surtout une bonne source pour tout ce qui touche aux nouveautés de la plate-forme Java.

Le sujet de la présentation tourne autour de l'utilisation des Lambdas pour optimiser un cas limite d'une collection plus performante que ArrayList. L'exercice est intéressant bien que dans la catégorie des "à ne pas forcément faire à la maison", mais c'est un bon moyen d'apprendre sur la méthodologie et notamment l'utilisation de JMH le framework de micro-benchmarks intégré à Java 9.

Mon appli est secure ! Enfin je crois..


La sécurité d'une application c'est un peu comme prendre une assurance : on est souvent amené à comparer les ressources (temps, argent) que l'on y consacre vis à vis du préjudice potentiel que peut subir, lequel est souvent bien moins palpable.
En résumé, on sait ce que l'on dépense, on ne connaîtra jamais l'ampleur des catastrophes évitées.

Dans ce talk fort bien illustré, on nous fait la présentation de l'outil H2H dont le but est d'instrumenter l'application pour en lister les points d'entrées et donc facilement identifier la surface d'attaque de l'application.

100% Stateless avec JWT (JSON Web Token)


Si vous avez déjà eu à gérer un cluster de serveur d'application avec notamment de la réplication de session et les subtilités de la configuration d'un load-balancer, les Json Web Token pourraient bien vous simplifier l'existence.

L'idée est assez simple, illustration avec les sessions :
- le serveur ne stocke plus l'état de chaque session, ce qui évite la perte de la session lors de la perte d'un serveur
- les informations de la session, principalement l'identité de l'utilisateur est écrit dans un document JSON qui est envoyé au client avec une signature cryptographique commune au cluster, il est donc lisible clairement par le client (navigateur ou autre)
- pour vérifier un token, le serveur n'a qu'à vérifier la signature ainsi que la date d'expiration
- côté client on ne peut pas "forger" le token sans disposer de la clé uniquement disponible sur le serveur.

Jigsaw est là pour nous sauver


Le projet Jigsaw promet de rendre la JVM modulaire, c'est à dire découpée en plusieurs "java modules" afin de n'utiliser que le strict nécessaire pour votre application ou simplement éviter ce que l'on nomme parfois "Jarmageddon" ou "Jar-Hell".

Initialement prévu pour Java 8, puis Java 9, et puis finalement pour "Java 9 bis", ce n'est clairement pas pour tout de suite mais étant donné la portée du sujet il est intéressant de s'y pencher tout de suite.

Dans un style assez direct, sans fioritures mais plein d'exemples, Remi Forax détaille ce qui va se passer "après", c'est à dire lorsque la JVM sera modulaire et que l'on devra convertir nos applications aux java modules.

Hands-On

Il est bien difficile de restituer les ateliers pratiques à l'écrit, généralement d'une durée de 3 heures, on voit rarement le temps passer. Nous en avons profité pour évaluer ces différents sujets et peut-être les inclure sous peu dans Nudge.

Web Components & Polymer : permet de disposer de composants réutilisables contenant HTML, CSS & JS, ce qui est particulièrement intéressant c'est qu'en plus de faciliter le développement web, ça marche sur pratiquement tous les navigateurs.
D3.js : librairie de visualisation de données, permet de créer un éventail très riche de visualisations : cartographies, graphiques, graphes en tous genres, ...
Spark : moteur de traitement de données distribué avec 2 ateliers cette année : le premier autour de Kafka et HBase, le second sous la forme d'une "LAN Party" autour de Cassandra avec la présence de @doanduyhai.

Conclusion

Ce qui est sûr, c'est qu'on reviendra l'année prochaine, et en attendant on a de quoi regarder en s'abonnant sur la chaine Youtube DevoxxFR.
Encore un grand merci à toute l'organisation #DevoxxFR, et promis l'an prochain on reviendra avec plus de goodies Baby Garbage Collector :


Sylvain Juge - Développeur sénior chez Nudge