Retour sur Devoxx 2015
La quatrième édition de Devoxx a eu lieu du 8 au 10 avril 2015 à Paris. Conférence organisée par des développeurs et pour des développeurs, Devoxx aborde de nombreux thèmes : agilité, architecture, Java, langages JVM, JEE, Cloud, Web & HTML5. Beaucoup de choix donc, et pour tous les goûts : je présenterai dans cet article les sujets qui m’ont le plus intéressé.
Jour 1- Comprendre enfin JavaScript
Pour cette première session, j’ai assisté à une « University » sur le Javascript : Comprendre enfin Javascript par Thierry Chatel (slides disponibles ici). Un choix stratégique, puisque mon équipe commence à s’y mettre, notamment au travers du framework Angularjs. Ce cours m’a permis d’éclaircir de nombreux points sur le fonctionnement du langage Javascript, que l’on essaie, à tort, de comparer au Java. Ici pas de classes, pas d’interfaces, mais uniquement des objets et des functions. Les prototypes permettent la réutilisation de code à l’instar de l’héritage en Java. Trois heures très théoriques donc, mais très instructives.
Trois heures à l’assaut d’une application réactive
Nicolas Jozwiak, Xavier Bucchiotty et Vincent Spiewak, nous ont exposés la problématique à laquelle ils ont répondue: proposer une application capable de gérer +5 mds d’événements par an, avec un SLA de 99.99%, rapide, accessible sur le web et évidemment pas cher (rien que ça). Ils nous ont exposé leur démarche afin de répondre à cet appel d’offre grâce à une solution fullstack qui va du développement au déploiement de la solution, en passant évidemment par les tests et le monitoring.
De nombreuses technologies ont été utilisées : Akka, Kafka, Elasticsearch, Kibana, Couchbase, Play et ReactJS pour le front, ZooKeeper, Docker, Mesos, Marathon, Curator, Bamboo, HAProxy, Ansible, GoCD, Riemann, Sensu et Rsyslog. Beaucoup d’outils donc, avec également plusieurs design patterns. Voire un peu trop, de quoi perdre le public, et eux même ont avoué avoir passé beaucoup de temps à maîtriser tout cela. Seul point noir de cette ambitieuse solution, elle n’est pas encore en production, il est donc difficile de juger de sa viabilité.
Pour terminer la journée en douceur j’ai assisté à deux sessions de 45 min « Tools-in-action ». La première sur Browserify qui permet de transcrire du code Javascript back (node.js) en du code Javascript front exécutable par le navigateur. Pratique pour partager le modèle et la logique. Cependant j’ai des doutes concernant les gros projets. Le résultat étant un imposant fichier de plusieurs dizaines de milliers de lignes pour l’exemple très simple qui a été montré.
La seconde session, toujours du Javascript, était consacrée à TypeScript, une librairie JS qui permet de typer les variables. En outre, Typescript propose des fonctionnalités d’ECMAScript 6 qui ne sortira pas avant mi 2015.
Enfin, il faut savoir qu’AngularJs 2 sera basé sur TypeScript. On en entendra parler un moment donc.
Jour 2 – Keynotes
Les trois keynotes de la matinée, portaient toutes sur l’avenir du monde et des technologies de l’information. La première concernait la robotique à domicile. De vastes possibilités nous ont été présentées: aide à la personne, interactions sociales, des robots humanoïdes nous aideront au quotidien et cela dans un avenir assez proche (10 / 20 ans). Ça fait rêver mais il reste encore beaucoup de challenges à relever.
La seconde keynote concernait la problématique de contrôle des technologies et notamment d’internet. La présentation d’Eric Filiol, a notamment pointé l’ignorance des élites politiques en termes de technologie, et les risques liés aux programmes de surveillance toujours plus intrusifs, et qui permettent aujourd’hui à l’état de surveiller et censurer ce qu’il veut sur le réseau.
Enfin la dernière intervention a été faite par Dan Allen. Il nous a montré comment la manière de transmettre des informations a changé avec les systèmes d’information. Plutôt philosophique, cette intervention nous montre que les années à venir vont continuer à bouleverser notre manière de communiquer.
Se préparer à l’arrivée d’Angularjs 2
Après un déjeuner rapide, j’ai assisté à un « Quicky », format de 20mn, sur la seconde version d’Angularjs. Cette version sera complètement différente de la version 1.x. Google est revenu sur les bases du framework pour bâtir un nouveau socle plus solide, qui demandera au développeur de réapprendre la technologie.
Modern Enterprise Java Architecture with Spring 4.1
Juergen Hoelier nous a présenté le fonctionnement de ce célèbre framework back-end. C’est assez sympa, il n’y a pas beaucoup de code, c’est logique, c’est simple et rapide. N’ayant jamais utilisé Spring, cela donne envie de s’y mettre !
Un monde où 1ms vaut 100M €
Une équipe de la SG a présenté ses problématiques de performance sur une application de trading. On retrouve du micro benchmarking à base de JMH, mais le hardware et le fonctionnement du processeur ont également été évoqués. Une session très intéressante avec une équipe qui est allée très loin dans sa démarche.
HTTP 2.0
Cette nouvelle version du protocole le plus utilisé sur le web devrait améliorer de façon significative les performances du web en général. HTTP 2 propose des requêtes asynchrones (multiplexing) et de la compression de header. Https devrait être aussi actif par défaut ce qui pose beaucoup de problèmes, notamment au niveau des proxy évidemment. Comme toujours le plus gros problème, c’est l’adoption et la migration de tous les serveurs en http 2. Espérons que cela arrive avant l’IPV6 !
Jigsaw
Pour clôturer cette journée en beauté, j’ai assisté au speak de Brian Goetz, architecte Java. Brian nous a présenté le projet Jigsaw qui sera inclus dans la version 9 de Java. Ce projet consiste à découper le jdk afin de gagner en performance (mémoire) et sécurité (vraiment interdire l’accès aux packages sun.* et *.internal.*). Pour cela Jigsaw introduit le concept de module. Un module c’est un ensemble de packages, ressources et services. Les packages pourront être exposés, ou non, pour les rendre accessibles depuis l’extérieur du module (exit donc sun.* et *.internal.*). Chaque module pourra dépendre d’autres modules. Un module pourra également proposer des services et requérir d’autres services. Ca ressemble beaucoup à osgi mais ce n’est pas osgi. Ici on n’aura pas la gestion du cycle de vie des différentes dépendances.
Du coup le JDK et JRE ont été complètement splittés en modules avec leurs dépendances. En outre, les outils du JDK ont été revus : exit rt.java par exemple et bienvenue à jdeps pour obtenir les dépenses d’un module. Jmod et jlink font également leurs apparitions. Enfin Brian nous a informé que tout cela devrait être, assez rapidement, géré par les outils de gestion de deps comme Maven (Oracle leur met un peu la pression).
Jour 3 – Keynote : The end of server management
Quentin Andam nous a exposé sa vision de la partie « ops » du métier de développeur. Selon Quentin, le métier de développeur devrait s’arrêter au push de son code. La partie allant du build au déploiement de l’application devrait être gérée, de manière totalement transparente, par une autre équipe. Sa métaphore reprend le concept de l’électricité. Aujourd’hui lorsque l’on branche un appareil électrique on ne se pose pas la question de savoir si c’est du 220v AC ou bien comment c’est acheminé jusque chez nous. Selon lui, l’industrie informatique devrait aller vers ce type de répartition. Chacun se fera son idée : si en effet on ne demande pas aux développeurs d’être des experts en infrastructure, connaître ses possibilités et contraintes peut être utile.
L’avenir de Java
Ensuite Brian Goetz a évoqué l’avenir de Java dans 20 ans. Quelle est la philosophie des architectes Java ? Identifier les problèmes, puis proposer une solution. C’est ce qui a été fait avec les Génériques, les Lambda et maintenant le projet Jigsaw. Le prochain grand défi pour les années à venir c’est la façon dont la JVM gère la mémoire. C’est l’objectif du projet Valhalla qui proposera, entre autres, les « value class », des instances qui seront stockées dans la stack directement (sous certaines conditions évidemment). Par exemple une classe Point avec deux int (x et y).
Pour changer de la technique j’ai assisté à la conférence « Des tablettes d’écriture aux tablettes pour écrire ». Une session très philosophique, tournée autour du débat de l’écriture manuscrite par opposition au clavier, notamment chez les plus jeunes. La conclusion est qu’il ne faut évidemment pas écarter l’un des deux mais composer avec les deux.
Docker sur Azure
Durant cette conférence plus orientée ops que dev, nous avons abordé le sujet de Docker, de ses avantages, et de sa rapide croissance ces deux dernières années. Mais la présentation portait surtout sur l’intégration avec Windows Azure, déjà effective, et sur la nouvelle politique de Microsoft, très ouverte sur l’Open Source. Prochainement il sera possible de lancer Docker sur Windows. Microsoft développe également un noyau Windows Server afin d’être utilisé comme base de notre Docker. On sent bien que Windows s’ouvre de plus en plus aux technologies extérieures.
API asynchrone en Java 8
Une présentation de l’api ComptetionStage et ComplatebleFuture disponible dans Java 8. Avec les lambdas il devient très facile de créer des tâches asynchrones qui peuvent se chaîner. Une raison de plus de migrer à cette dernière version.