Retour sur la soirée "Young Blood"
Le 14 janvier dernier le Paris JUG a organisé une soirée «Young Blood». L’idée est simple : proposer à des personnes n’ayant jamais fait de présentation de se lancer. C’est ainsi que 7 nouveaux orateurs ont vu le jour. Nous avons eu le plaisir d’assister à ces conférences et nous vous proposons ici un résumé.
«apt-get myapp !» présenté par Emmanuel Bourg
Emmanuel nous a rappelé les avantages d’utiliser des paquets Debian lors de l’installation d’une solution (vision de l’administrateur systèmes) ainsi que l’intérêt de proposer des paquets Debian (vision du vendeur). Suite à cela, il nous a présenté deux manières de créer un paquet Debian pour une application Java :
- avec les outils Debian
- avec jdeb
La première solution est assez difficile à maîtriser mais nécessaire pour proposer son paquet aux archives officielles de Debian. La seconde est plus simple et permet d’intégrer la construction de paquet Debian à son outil de build (maven ou ant par exemple). Bien que cette méthode ne permet pas d’être candidat à l’ajout aux dépots officiels, elle permet, alliée à un auto-hébergement de serveur d’archives, de profiter de tous les avantages des paquets Debian pour son application. Si vous voulez que votre application soit distribuée largement, rapidement et simplement, jdeb est une solution à regarder de très près comme peut en témoigner l’équipe d’ElasticSearch.
«JVM Tools: The hard way» présenté par Brice Leporini.
Durant cette présentation, Brice nous a présenté les outils de monitoring built-in de la JDK après nous avoir démontré que la ligne de commande est toujours un outil indispensable malgré les outils graphiques dont nous disposons aujourd’hui. En effet, l’argumentaire est très simple : les serveurs ne tournent jamais avec une interface graphique et il est quasi impossible d’avoir les droits pour se connecter au port de monitoring sur un serveur de production. Nous avons alors pu voir une démonstration de quelques outils, notamment :
- jps
- jinfo
- jstack
- jmap
- jstat
Brice nous a brillamment démontré que ces outils sont très puissants et que leur maîtrise est essentielle. Le public a visiblement partagé notre avis puisque cette présentation a été élue meilleur présentation de la soirée.
«Les IHM riches en Java ne sont pas mortes : tour d’horizon de Java FX » présenté par Simon Basle
Simon nous a présenté Java FX, la nouvelle API Java qui a pour vocation de remplacer Swing. Nous avons ainsi eu le plaisir de découvrir un comparatif entre ce que nous avons l’habitude de faire avec Swing et ce que permet Java FX. Nous découvrons ainsi que Java FX propose :
- l’utilisation de l’accélération matérielle,
- s’appuie sur le langage CSS,
- permet d’externaliser les layouts
- apporte un support pour le multimédia (MP3, MPEG-4, …),
- apporte un support pour les écrans tactiles (rotate, zoom, swipe, scroll),
- est capable de produire un rendu 3D,
- etc.
Le constat est sans appel, Java FX est plus simple, plus performant, plus élégant, plus riche. Cerise sur le gâteau, Simon nous explique que Java FX peut-être intégré à du Swing (et inversement à partir de Java 8). Que vous démarriez une nouvelle application lourde ou que vous soyez en plein milieu de votre projet, pensez à Java FX.
«Des recommandations au service du business» présenté par Loïc Knuchel.
Il s’agit là d’un type de présentation qu’il est rare de voir à un JUG : une présentation fonctionnelle. Ainsi Loïc s’est appliqué à nous expliquer pourquoi les clients veulent un système de recommandations et non pas comment on les réalisait. Il nous a ainsi été rappelé qu’il ne sert à rien de mettre en place un moteur de recommandations si nous ne savons pas pourquoi nous le voulons. La mise en place de ces solutions ont cependant tous une même origine : servir le business du site. En effet, soit nous guidons l’utilisateur vers ce qu’il aime soit nous le guidons vers ce qu’il pourrait aimer mais dans les deux cas, l’objectif est de faire consommer notre contenu. Enfin, Loïc nous a expliqué qu’en fonction des objectifs définis par le métier, notre façon de faire de la recommandation changerait : le site peut prendre des initiatives en proposant des produits dont le stock est trop important, ou les recommandations peuvent être très personnalisées pour correspondre exactement aux goûts de chaque utilisateur, ou elles peuvent être contextualisées pour correspondre aux produits en cours de consultation,… Au final, Loïc nous a élégamment rappelé que la technique est au service du business et non pas le contraire. De plus, il nous a aussi précisé que le respect des données personnelles est très important et qu’il faut vite fixer des limites à ne pas transgresser. Nous retiendrons notamment ceci : “Si je dis publiquement ce que je fais, est-ce que ça me gène” ?
«Recommandation avec PredictionIO» présenté par Ludwine Probst
Ludwine nous a elle aussi fait une présentation sur les recommandations mais en se concentrant cette fois ci sur la technique. Nous avons ainsi eu le plaisir de découvrir PredictionIO, une solution open-source permettant de faire de la prédiction (et donc de la recommandation). Cette solution s’appuie notamment sur scala, play!, hadoop, mahout et mongodb et est utilisable via de nombreux langages dont Java. Le principe de PredictionIO est classique : construire un modèle de recommandation en fonction des données collectées. Bien que sur le papier, cela paraisse très simple, en pratique, la mise en place se révèle complexe. C’est là toute la puissance de PredictionIO qui offre une solution clef en main à ce problème en s’appuyant sur les algorithmes de mahout pour construire le modèle qui est ensuite stocké dans mongodb avant d’être requêté par votre application. PredictionIO est une solution que nous suivront de près et nous remercions fortement Ludwine pour nous l’avoir fait découvrir.
«Pimp my Inter Thread Communication (aka Inter-Thread Messaging Architecture)» présenté par Hichame El Khalfi
Durant cette présentation, Hichame nous a présenté des méthodes de communication entre threads. Dans un premier temps, il nous a été rappelé comment fonctionne le pattern de producteur – consommateur utilisé régulièrement via un système de queue. Cette solution est simple et efficace tant que le nombre de communications est limité et que le nombre de consommateurs est strictement égal au nombre de producteur, mais dès qu’un de ces paramètres n’est plus maîtrisé tout se complique et l’application devient vite impossible à maintenir. Heureusement, Hichame nous a présenté le pattern Disruptor qui permet de palier à cette montée en complexité. Le principe de producteur – consommateur est conservé mais cette fois ci, grâce à l’utilisation d’un ring buffer, la gestion des messages est mieux centralisée (et donc plus simple à maintenir) et plusieurs consommateurs peuvent lire le même message (ce qui simplifie grandement les communications). Le pattern Disruptor est donc une alternative très intéressante à l’utilisation classique de queues dans le domaine de communication inter-thread et a pour vocation à être utilisé dès que les échanges se multiplient.
«Apéritif dinatoire avec Clojure et Overtone» présenté par Mathieu Gandin
Après toutes ces présentations bien sérieuses, Mathieu nous a proposé de nous détendre avec un peu de musique et nous a ainsi présenté Overtone. Overtone est un outil qui associe SuperCollider avec le language Clojure. Bien que de solides connaissances en mathématiques et en physique semblent requises pour pouvoir utiliser cette solution, son côté ludique est indéniable. En effet, nous avons eu le plaisir de découvrir du code dans une nouvelle dimension : la dimension sonore. Ainsi, en plus de voir les lignes de code que nous a présentées Mathieu, nous les entendions. Mathieu s’est ensuite lancé dans une session de live-coding où nous entendions la musique produite par son code. La moindre erreur de frappe se transforme alors vite en fausse note mais Mathieu s’en est brillamment sorti.