Devoxx : Journal d'un devoxxien en Belgique - Jours 3 et 4

d2si_blog_image_devoxx2015thema-2.jpg
D2SI_Blog_Image_Devoxx2015Thema
Troisième jour de Devoxx (compte-rendu des jours 1 et 2 ici), début des conférences (séances d'une heure trente), et retour en force de la file d'attente. Je pense qu'il y a encore plus de monde aujourd'hui, donc des files d'attente encore plus longues pour rentrer dans les salles, pour manger, et surtout pour aller aux toilettes. Pire encore était la masse de gens agglutinée devant la salle numéro 8 pour la keynote du matin. Heureusement, on pouvait voir la keynote depuis les autres salles en duplex.

La keynote, donc, qui démarre cette journée. Nous sommes accueillis par Pepper, le dernier robot d'Aldebaran. Puis Stephan Janssen, le papa de Devoxx, arrive en Mono-Wheel pour faire ses annonces. La plus importante sera l'arrêt de Parleys. Mais que tout le monde se rassure, toutes les vidéos seront disponibles sur YouTube, et ce dès la fin de la conférence. Et gratuitement. Ensuite, Mark Reinhold, architecte en chef de Java, est venu nous (re)parler des Modules. Avec Alan Bateman, ils ont prévu pas moins de 6 talks à Devoxx. Conférence marathon pour eux. La keynote se termine avec une présentation du professeur Lawrence Krauss, physicien théorique et l'auteur du livre "A Universe from Nothing". On a pu apprendre à quel point nous sommes insignifiants dans l'ordre cosmique de l'univers.

http://www.youtube.com/watch?v=Nv0t_K3415o

CompletableFuture par José Paumard

La première séance de la journée sera pour moi José Paumard et les CompletableFuture. À part le fait qu'ils permettent de créer des workflows compliqués et permettent une meilleure gestion de la thread d'exécution de mes fonctions, je peine à trouver des cas d'utilisation réels. J'ai cru comprendre qu'ils seront au cœur de CDI 2.0 qui sera intégré à JEE8.

http://www.youtube.com/watch?v=HdnHmbFg_hw

Se préparer à Java9 par Alan Bateman

Ensuite, Alan Bateman et comment préparer son application pour Java 9. En effet, plusieurs API deviendront complètement inaccessibles, en particulier dans le package "sun.misc". Ici, jdeps est notre ami, et nous permettra d'analyser les dépendances interdites grâce à son paramètre "-jdkinternals". D'autres disparus seront les bootclasspath et autre endorsed libraries, qu'ils faudra remplacer par les Modules Upgrades. Autre changement : le numéro de version changera de format. Si vous le parsez, préparez vous à une surprise.

http://www.youtube.com/watch?v=KZfbRuvv5qc

Lambda et Design Patterns par Verkat Verkat Subramaniam

Pour le prochain talk, j'ai beaucoup hésité. Devrais-je m'intéresser aux nouveautés de l'API collection dans Java 9? Ou bien apprendre à programmer le robot Pepper? Finalement, ce ne sera aucun des deux. Il faut savoir que les présentations sont notées par l'audience. Et il se trouve que les 2 présentations ayant eu le plus gros score sont toutes les 2 l'oeuvre de la même personne : Verkat Subramaniam. Et justement, il va présenter l’utilisation des lambdas pour certains Design Patterns courants. J'ai bien fait d'y aller, cette présentation a pris la tête du classement. J'avais l'impression de voir Eddy Murphy avec un accent indien! On a eu droit à une séance sans slide, que du live coding sur un rythme effréné, parsemée d'anecdotes, tout en apprenant sur les patterns itérateur, décorateur, stratégie ou autre fluent interface à la sauce lambda. Je comprends maintenant pourquoi son bouquin est en rupture de stock dans le hall d'entrée.

http://www.youtube.com/watch?v=e4MT_OguDKg

JShell pour Java9

Puis Robert Field est venu nous parler de son outil, nouveau dans Java 9: JShell. Un outil très pratique : un shell dans lequel on peut tester et explorer les API Java sans avoir à créer une classe avec un main(), ni à compiler. JShell utilise JDI pour remplacer les implémentations de méthodes à la volée, ce qui permet une grande liberté dans l'expérimentation. En plus d'être un outil interactif, il est aussi une API, et donc accessible depuis n'importe quel programme tournant sur la JVM.

http://www.youtube.com/watch?v=jziVaht480w

Pour finir, une présentation de Maurice Naftalin et Kirk Pepperdine sur les performances des streams parallèles. Malheureusement, peu de nouveautés par rapport à leur talk de la veille.

Une journée éprouvante. Vu le nombre important de développeurs, les places sont chères à certaines présentations, et on passe son temps à sauter d'une salle à l'autre. Plus qu'un jour et demi à tenir !

Devoxx - Jour 4

Aujourd'hui est le jour le plus long, puisqu'il se termine sur une présentation résumant 20 ans de Java, suivie du dernier James Bond, "Spectre". Fin des hostilités à 22H30. Mais commençons par le commencement.

Modular Development par Mark Reinhold et Alan Bateman

Première présentation de la journée : les infatigables Mark Reinhold et Alan Bateman, que l'on ne présente plus. À l'ordre du jour la migration des applications et librairies existantes vers le système de Modules de Java 9. Tout à l'air d'être prévu pour nous faciliter la tâche. L'outil jdeps nous aide à trouver les dépendances et à générer un module par défaut. Les modules automatiques permettent de placer des jars non « modularisés » sur le path et garder la compatibilité. Là où il faudra faire attention, ce sera sur l'utilisation de la reflection par certaines librairies, sous peine de se retrouver avec une IllegalAccessError. Reste à attendre de voir si les outils tels que Maven ou Eclipse suivront.

http://www.youtube.com/watch?v=qr4O4SbzihQ

Design of a reliable and secure OS par Andrews Tanenbaum

Pour la deuxième présentation, j'allais me diriger vers un talk sur JavaFX, lorsque j'ai réalisé que dans la salle d'à côté allait avoir lieu un talk intitulé "Design of a reliable and secure OS" par nul autre que le professeur Andrews Tanenbaum. Vous avez bien entendu: celui-là même qui est à l'origine du système d'exploitation MINIX, celui dont vous avez dû lire les bouquins sur les systèmes d'exploitation ou les réseaux à l'école. Une légende vivante. Je ne pouvais pas rater ça. Ici, aucun rapport avec Java, mais une description de ce qui a fait du système MINIX le kernel le plus sûr au monde. Des propres mots du maître: "small, simple, modular, reliable, secure and self-healing". Un des secrets du système réside dans le "Reincarnation Server" qui est responsable de relancer les process qui ne répondent plus. Pour expliquer pourquoi le logo de MINIX est un raton laveur: "vous avez plus de chances qu'un raton visite votre maison qu'un pingouin".

http://www.youtube.com/watch?v=oS4UWgHtRDw

From object oriented to functional domain modeling par Mario Fusco

Pour la suite, ce sera Mario Fusco, spécialiste de la programmation fonctionnelle. Il fallait vraiment s'accrocher. Les principes de base sont simples: pas d'effet de bord, immutabilité, pas d'exceptions ("exceptions are like a glorified multilevel GOTO" dit-il). Puis il nous a présenté Javaslang, une librairie fonctionnelle plus complète que les streams. Quand il s'est attaqué aux Monades, un frisson a parcouru la salle. Mais le point culminant, la composition de monades, a laissé comme un silence qui me laisse penser que mon cerveau n'était pas le seul à avoir fait un shut down.

http://www.youtube.com/watch?v=K6BmGBzIqW0

Après un déjeuner toujours aussi désastreux, une présentation sur MongoDB et Java 8, où l'on apprendra que MongoDB vise toujours Java 6, mais prévoit un driver RxJava pour pouvoir faire de la programmation réactive.

Encore moins d'information dans la présentation sur "Pourquoi choisir Angular JS?". Beaucoup de questions à se poser, mais peu de réponses.

Angular 2

La présentation sur Angular 2 était déjà plus intéressante. Il sera apparemment possible de mixer les deux versions dans une même application. Le présentateur nous a donné une série de modifications que l'on peut déjà appliquer à notre code actuel afin de préparer l'arrivée de la nouvelle version. En vrac, on devrait créer des web components, ne plus utiliser $scope, exporter et importer des modules, et surtout utiliser Typescript. Du boulot en perspective.

http://www.youtube.com/watch?v=AlsiHFlqyuI La présentation suivante aura pour sujet les Génériques. D'abord quelques trucs peu utilisés, comme l'intersection de types ou le wildcard "super". Mais surtout, les features prévues pour Java 10. Aura-t-on des génériques de primitifs et autre Value Types? Les paris sont lancés.

Jigsaw Under the hood

Pour clôturer la journée et avant le cinéma, un Mark Reinhold fatigué nous a présenté (lu serait le mot juste) un talk intitulé "Jigsaw under the hood". On y apprendra par exemple que le mot clé public pourra signifier publique pour tout le monde, publique pour certains modules, ou publique pour un seul module. On y apprendra aussi que tout le classpath se retrouvera dans un module à part appelé "unnamed", et surtout qu'il ne sera plus possible d'avoir des packages avec le même nom dans des jars séparés. Pour les serveurs d'applications qui ont justement besoin de cette facilité, un nouveau concept a été créé: les Layers. Ces Layers contiendront des ClassLoaders qui contiendront des Modules qui contiendront des packages qui contiendront des classes. Pas si simple.

http://www.youtube.com/watch?v=UKC0uC7QUkI

Pour terminer la journée : " Spectre" est un bon film, mais mon dîner s'est résumé à un paquet de popcorn et du Coca. Je ne vous raconte pas l'état de mon estomac.

D2SI_Blog_Image_Devoxx2015_Spectre

Journal d'un Devoxxien en Belgique, Jour 5