🎊 BONNE ANNÉE ! 🎊

Première soirée de l’année du Java User Group Toulousain le mardi 23 janvier, chez onepoint, en centre-ville.

Une piqûre de rappel sur le pattern matching en Java ! Ce sujet avait déjà fait l’objet d’une présentation au JUG en… 2015 😁 Ce fut l’occasion de réviser les concepts avec la sortie récente de Java 21 qui nous apporte une version aboutie de cette feature.

Et en second talk, votre ex-JUG-leader préféré, Kevin, est revenu faire un petit coucou pour nous parler de ce petit bijou de SGBD qu’est PostgreSQL ❤️

Comment rendre son code Java plus expressif et robuste avec le filtrage par motif ? - par Sébastien BUCHOUX

Dans cette présentation, on va explorer le filtrage par motif et comment il peut permettre de simplifier son code Java. En prenant comme exemple la modernisation et le remaniement d’un vieux code Java, on va voir comment les différents ajouts au langage permettent de rendre le code plus expressif, plus concis et, surtout, intrinsèquement plus robuste.

SELECT ‘amazing_features’ FROM “postgresql” - par Kevin DAVIN (@davinkevin)

C’est unanime, PostgreSQL devient le Linux de la base de données pour le bien de tous 🚀! Et cela parce que ce moteur de BDD contient des fonctionnalités fantastiques permettant de résoudre des problèmes complexes très simplement!

Venez découvrir dans cette présentation les features les plus utiles et pratiques pour vous éviter de tout re-coder “from scratch” 😅!

L’on détaillera des features standards du monde SQL trop peu connues et des features propres à PG qui en font un moteur SQL passionnant 🔥

Et pour terminer, l’on fera le tour des “distributions” PostgreSQL disponibles, car dans ce domaine, il y a beaucoup de choix, pour de l’on-prem ou dans le cloud ☁️

Référence CFP : https://github.com/ToulouseJug/call-for-paper/issues/51

Pour ce dernier événement avant la pause estivale, nous vous avions préparé une soirée spéciale : un format un peu différent avec un speaker venu de loin suivi d’un bilan du JUG, tout ça dans un cadre superbe, chez Eurécia.

Un peu loin du centre ville auquel on vous a habitué, certes, mais qui en vallait la car le temps était de notre côté pour profiter des jardins !

Spring Boot 3 - par Stéphane Nicoll (@snicoll)

Après une phase d’expérimentation avec le project Spring Native, l’équipe Spring a ajouté le support AOT (Ahead Of Time) à Spring Boot 3. Le but de cet effort est de permettre le déploiement d’applications en tant qu’exécutables natif avec GraalVM, mais aussi d’améliorer l’efficience sur la JVM.

Pendant cette session, Stéphane présentera l’architecture générale de la solution, ce à quoi s’attendre en tant que développeur et comment démarrer. Il couvrira brièvement les autres thèmes de Spring Boot 3 et terminera par une description des chantiers en cours.

Stéphane a 20 d’expérience dans le développement logiciel, en particulier sur le développement d’API sur la JVM. Après avoir passé plus de 10 ans dans les secteurs du géospatial, de la finance ou de la logistique, il a rejoint l’équipe “core Spring Framework” en 2014. En ce moment, Stéphane travaille sur Spring Boot et mène start.spring.io, un service qui aide des millions d’utilisateurs à démarrer leur prochaine application.

Bilan JUG 2022-2023 - par Arnaud Bos (@arnaud_bos) et Julien Zanon (@jullienzan)

De façon un peu plus informelle, nous avons fait un bilan de l’année écoulée et présenté les projets pour l’année à venir.

Sans trop de surprise, le hiatus post-Covid a été difficile à gérer, nous en avions déjà parlé. Malgré tout, nous avons réussi à maintenir un rythme pendant un certain temps avec les soirées en ligne, mais nous avons fini par nous essouffler.

Nous avons fortement mis en avant l’importance de la communauté, et de la participation, car sans vous, il n’y a pas de JUG. Nous avons donc besoin de vous pour nous aider à trouver des speakers, des sponsors, des lieux. Tous les contacts que vous pouvez nous donner sont les bienvenus !

Nous avons aussi présenté les projets pour l’année à venir, avec notamment l’envie de reprendre un rythme de soirées régulières, de dénicher des speakers locaux, et si possible de mettre l’accent sur les retours d’expérience.

Nouvelle soirée en présentiel chez OnePoint, avec un format un peu différent :

  • un quick-talk pour nous présenter un outil qui peut nous faciliter la vie
  • une présentation plus longue sur un sujet d’architecture

SDKMan : The Software Development Kit Manager - par Rémi Navarro (@NavarroRemi)

SDKMan est un outil qui facilite l’installation et le switch de version de certain langage et framework.

Référence CfP : https://github.com/ToulouseJug/call-for-paper/issues/36

Architecture Hexagonale, retour d’expérience - par Frédéric Combes

On a pas mal parlé d’architecture hexagonale dans les conférences des dernières années. Mais qu’est-ce que ça donne en vrai quand on essaye de le mettre en place dans une équipe de développeurs de tous niveaux ?

  • Rapide tour de ce qu’est l’architecture hexagonale et des problèmes qu’elle tente de résoudre.
  • Contexte et raison de la mise ne place de ce type d’architecture chez I-Run.fr
  • Mise en place
  • Retour d’expérience
  • Ce qui a bien marché
  • Ce qui a été difficile

Référence CfP : https://github.com/ToulouseJug/call-for-paper/issues/44

Vous l’avez sûrement remarqué : le Toulouse JUG est devenu un User Group un peu moribond depuis presque deux ans.

Julien et moi avons tenu bon le post-COVID avec des soirées remote, mais nous nous sommes essouflés. Les événements en ligne, ça n’a tout de même pas la saveur des soirées et des discussions IRL.

La tentative de reprise de 2022 a donné naissance à une excellente soirée qui nous a permis de faire le plein de motivation. Nous étions remontés à bloc pour attaquer 2022-2023 !

Et puis pouf… Le soufflet est retombé. La vie a fait que nous étions moins dispo, et pour ne rien arranger, les sujets à dépiler se sont faits rares. C’est quand même du boulot de trouver des speakers et organiser des soirées, alors quand on a perdu l’habitude de caser ces contraintes dans son agenda depuis plusieurs mois, difficile de les y faire entrer à nouveau :-)

Mais on ne baisse pas les bras ! On attaque 2023 avec une bonne résolution en tête : remettre la barque à flot et faire des soirées !

La prochaine est d’ailleurs en préparation, et pour les suivantes, on a besoin de vous pour étoffer le CfP !

Si vous aimez quelque chose, venez en parler, on sera ravi de vous écouter.
Le CfP est ici ==> https://bit.ly/toulousejug-cfp

Nous cherchons également de nouveaux sponsors pour nous accompagner.

Nous recherchons aussi des personnes motivées pour donner un coup de main au niveau orga et logistique.
À ce sujet, l’AG 2023 (“long overdue”) devra être organisé bientôt et sera l’occasion pour de nouveaux membres de nous rejoindre.

Si le coeur vous en dit, n’hésitez pas à nous contacter !

Retour du JUG en présentiel pour 2022 !

Pas de captation, vous n’aviez qu’à venir 😜

400 endpoints d’API et 2000 types : genèse et utilisation du nouveau client Java pour Elasticsearch - par Sylvain Wallez (@bluxte)

Un nouveau client Java pour Elasticsearch est sorti en octobre 2021. Plus léger, plus rapide, plus ergonomique et… généré à 99% !

Comment avons nous conçu et développé ce nouveau client ?

On parlera des design patterns mis en place pour laisser la complétion de l’IDE nous guider dans cette vaste API en permettant une écriture proche d’un DSL.

On abordera ensuite la construction de cette librairie, et l’approche originale que nous avons prise en utilisant TypeScript pour modéliser l’API plutôt que le classique OpenAPI, qui est ensuite “compilé” dans un modèle servant de base à la génération de code dans de multiples langages.

Quarkus World Tour 2022 - par Gwenneg Lepage

Le Quarkus World Tour fait une étape à Toulouse cette année !

C’est Gwenneg Lepage, Senior Software Engineer chez Red Hat, contributeur Quarkus et passionné d’aviation qui viendra nous en parler. Lors d’une session très orientée live coding, il nous montrera comment construire “from scratch” une application Quarkus distribuée de suivi des vols en temps réel. De Kafka aux websockets en passant par RESTEasy Reactive et Hibernate Reactive, nous ferons un tour d’ensemble de nombreuses extensions.

Quand il ne contribue pas directement sur Quarkus, Gwenneg travaille au quotidien sur plusieurs apps basées sur Quarkus et déployées dans la Red Hat Hybrid Cloud Console. Le live coding sera donc ponctué de retours d’expérience d’un utilisateur chevronné du framework et en particulier des extensions réactives.

Vous ne connaissez pas Kafka, la programmation réactive ou le système de surveillance ADS-B ? Pas de panique, cette session restera accessible aux débutants.

Encore une soirée en remote.

Un énorme merci à la fondation Eclipse de nous permettre d’utiliser leur compte “Jakarta EE for JUGs” sur la plateforme crowdcast.io.

Practical Vavr - par Alexandre Grison (@algrison)

Practical Vavr is all about making you want to use Vavr in your day to day Java programming.

If you want to improve the quality of your code by using a well-thought and beautifully designed functional programming library for Java, then you need to adopt Vavr, and this book will help you put it in practice.

Pour en savoir plur sur Alex : https://grison.me/

Et son livre : https://leanpub.com/practical-vavr

Vidéo :

Encore une soirée en remote.

Un énorme merci à la fondation Eclipse de nous permettre d’utiliser leur compte “Jakarta EE for JUGs” sur la plateforme crowdcast.io.

War story : comment les pauses du GC ont pété la prod - par Sylvain Wallez (@bluxte)

Nous avons eu un incident récent sur Elastic Cloud dont une des causes est des pauses longues du garbage collector de ZooKeeper.

Le talk présentera les grands principes de ZooKeeper et comment il est utilisé sur Elastic Cloud. On verra comment du code apparemment juste sous-optimal dans la librairie Apache Curator a en fait contribué à une réaction en chaîne qui a mis par terre une partie des services, et comment nous y avons remédié pour que ce type d’incident ne se produise plus.

Référence Cfp : https://github.com/ToulouseJug/call-for-paper/issues/28

Vidéo :

Encore une soirée en remote.

Un énorme merci à la fondation Eclipse de nous permettre d’utiliser leur compte “Jakarta EE for JUGs” sur la plateforme crowdcast.io.

De WebFlux en Java aux coroutines en Kotlin, le parcours du combattant ? - par Jennifer Aguiar (@yaourtcorp) et Mialy Rakotovao (@ramyihany)

Vous aviez votre application en JAVA Spring Boot REST controller/REST template et tout allait bien. Mais votre boss/archi/… a débarqué dans l’openspace après la lecture d’un article Medium et a déclaré “qu’à partir de maintenant on fait du webflux avec du Kotlin et des coroutines” et qu’il vous restait exactement 4h56 pour tout migrer. Si vous ne savez pas par où commencer, ce talk est fait pour vous. Si vous êtes juste intéressé pour savoir quels types de problèmes vous allez rencontrer, ce talk est fait pour vous (aussi).

Référence Devoxx : https://cfp.devoxx.fr/2020/talk/NOE-9843/De_WebFlux_en_Java_aux_coroutines_en_Kotlin,le_parcours_du_combattant%3F

Vidéo :

Encore une soirée en remote.

Un énorme merci à la fondation Eclipse de nous permettre d’utiliser leur compte “Jakarta EE for JUGs” sur la plateforme crowdcast.io.

JOOQ, joy of SQL - par Kevin Davin (@davinkevin)

Et si l’on reprenait le contrôle de nos interactions avec notre base de données préférée? Car en vrai, nos BDD sont des monstres de puissance qui sont souvent sous exploités sweat. Nous verrons, avec JOOQ, comment écrire des requêtes SQL simples ou évolués, le tout facilement et de manière type-safe !

Venez découvrir cette superbe librairie OpenSource, compatible Java, Kotlin & Scala, qui va vous permettre de vous simplifier la vie et d’améliorer votre code… et même de découvrir de super fonctionnalités SQL que vous n’imaginiez même pas.

Lien des slides : https://docs.google.com/presentation/d/1YKk47FWeQqEIUVRHBKHSx7cigFGfeMV5QBYqe-dnHjE

Référence CFP : https://github.com/ToulouseJug/call-for-paper/issues/49

Vidéo :

A Change-Data-Capture use-case: designing an evergreen cache - par Nicolas Frankel (@nicolas_frankel)

When one’s app is challenged with poor performances, it’s easy to set up a cache in front of one’s SQL database. It doesn’t fix the root cause (e.g. bad schema design, bad SQL query, etc.) but it gets the job done. If the app is the only component that writes to the underlying database, it’s a no-brainer to update the cache accordingly, so the cache is always up-to-date with the data in the database.

Things start to go sour when the app is not the only component writing to the DB. Among other sources of writes, there are batches, other apps (shared databases exist unfortunately), etc. One might think about a couple of ways to keep data in sync i.e. polling the DB every now and then, DB triggers, etc. Unfortunately, they all have issues that make them unreliable and/or fragile.

You might have read about Change-Data-Capture before. It’s been described by Martin Kleppmann as turning the database inside out: it means the DB can send change events (SELECT, DELETE and UPDATE) that one can register to. Just opposite to Event Sourcing that aggregates events to produce state, CDC is about getting events out of states. Once CDC is implemented, one can subscribe to its events and update the cache accordingly. However, CDC is quite in its early stage, and implementations are quite specific.

In this talk, I’ll describe an easy-to-setup architecture that leverages CDC to have an evergreen cache.

Vidéo :

Chose promise, chose due !

Comme nous l’avions annoncé via Twitter, nous avions pas moins de 6 licences pour des produits JetBrains à offrir en raison de notre partenariat (JetBrains User Group Support Program).

Sans plus attendre, les gagnants sont :

Félicitations ! 🥳 Vos coupons vous ont déjà été envoyés via Direct Message sur Twitter.

Et ce tirage au sort, il est honnête ?!

Alors voilà, ce n’est pas la première fois qu’on voulait mettre en place un petit tirage au sort avec Julien [Zanon, co-organisateur du JUG, NDLR] mais comme il n’y a que 24 heures par jour, et 7 jours par semaine, ça ne s’était pas produit jusqu’ici.

Seulement, après les deux sujets de la dernière soirée (Randomness & Property-Based Testing) et voyant notre petit stock de coupons qui commençait à s’accumuler, on s’est dit qu’il était temps.

J’avais gardé dans un coin quelque part un lien vers une méthode de sélection d’un gagnant de concours via un petit algo en ligne de commande, alors cette nuit je me suis chauffé et je l’ai ré-implémenté pour obtenir nos 6 gagnants.

Show me the code!

Premièrement : récupérer la liste des participants au concour.

Pour aller vite, je n’ai pas intégré cette partie là dans le script (flemme de créer un identifiant d’App Twitter, authentification, oauth, toussa…) et j’ai directement récupéré le contenu JSON de la réponse faite par le navigateur.

Testcontainers

Le dernier Twittos à avoir “liké” le Tweet (le premier sur la capture d’écran) l’a fait après l’heure limite, il n’est donc pas pris en compte pour le tirage au sort.
Le contenu est disponible ici.

Ensuite l’algorithme. Je n’ai pas réinventé la roue, j’ai simplement adapté le script détaillé dans cet article : How To Do a Fair Online Raffle? Je l’ai simplement modifié pour pouvoir faire plusieurs tours en excluant le vainqueur du tour précédent, afin de faire gagner plus d’une personne.

Ce que j’ai trouvé d’amusant avec cet article, c’est que sa “source d’entropie” est le compte Twitter de Donald Trump 🤣
C’est tellement un excité de Twitter que comme source de valeurs aléatoires, c’est effectivement bien choisi.

Je me suis donc basé sur le premier Tweet du 45° président des États-Unis à partir de la fin du jeu, c’est-à-dire celui-ci (qui n’a rien d’amusant malheureusement, j’aurais bien aimé un petit Covfefe).

Et pour le reste, j’ai utilisé Clojure, et plus particulièrement Babashka.
Parce que, quand même, on est un JUG, on va pas faire du bash ! On reste sur la JVM scrogneugneu ! (enfin GraalVM là en fait, mais ça passe !)

#!/usr/bin/env bb
(require '[clojure.java.shell :refer [sh]])
(require '[cheshire.core :as json])


(defn get-entries []
  (->
    (slurp "twitter.json")
    json/parse-string
    (get-in ["data" "favoriters_timeline" "timeline" "instructions"])
    first
    (get "entries")
    ; ici j'inverse la liste des participants parce que Twittere
    ; me la donne par ordre antichronologique de "like"
    reverse
    vec))

(defn get-random-number-script-str [s mod]
  (format
    "echo '%s' | openssl sha512 -whirlpool | sed -e 's/.*= //' | tr '[:lower:]' '[:upper:]' | perl -lne 'print \"ibase=16;n=$_;ibase=A;n%%%s\"' | bc | tr -d '\n'"
    s mod))

(defn get-random-number [tweet participants]
  (->>
    (get-random-number-script-str tweet participants)
    (sh "bash" "-c")
    :out
    Integer/parseInt))

(defn vec-remove
  "remove elem in coll"
  [nth coll]
  (vec (concat (subvec coll 0 nth) (subvec coll (inc nth)))))

(defn get-winners [entries participants tweet max-coupons]
  (loop [entries entries participants participants winners #{} coupons 0]
    (if (< coupons max-coupons)
      (let [winnerIdx (get-random-number tweet participants)
            entry (nth entries winnerIdx)
            winner (get-in entry ["content" "itemContent" "user" "legacy" "screen_name"])
            ]
          (recur (vec-remove winnerIdx entries) (dec participants) (conj winners winner) (inc coupons)))
      winners)))

(let [entries (get-entries)
      participants (count entries)
      tweet "THANK YOU to all of the Great American Patriots in The Villages, Florida! #MAGA"
      max-coupons 6
      ]
  (get-winners entries participants tweet max-coupons))

Le résultat est le suivant :

$ raffle.clj
#{"JBaptiste_31" "19emtuck" "Olivier_M_31" "ClergueCh34" "lidodo" "jpbolatre"}

Voilà ! En attendant les vidéos de la soirée, qui ne devraient pas tarder, vous avez tout sous la main pour vérifier les résultats.
J’espère ne pas avoir fait de bêtise 😇

Encore une soirée en remote.

Un énorme merci à la fondation Eclipse de nous permettre d’utiliser leur compte “Jakarta EE for JUGs” sur la plateforme crowdcast.io.

Randomness, what did you expect ? - par Théo Cadoret (@CadoretTheo)

Despite being inherently unreachable to softwares, Randomness is yet widely used.

What is Randomness ? Why is it so vital to softwares ? How do we cope with this apparent paradox ?

Let’s got for a quick dive in !

Lien des slides : https://bit.ly/toulousejug-2020-10-slides-randomness

Référence CFP : https://github.com/ToulouseJug/call-for-paper/issues/48

Vidéo :

Property-Based Testing - You won’t look at your tests the same way ever again - par Jan Stępień (@janstepien)

Property-based testing changes the way you think about your work. Instead of specifying assertions one by one, this new approach tests your code with streams of unexpected inputs and edge cases. Despite its potential, the technique still remains under the radar. Let’s uncover its strengths together!

The talk will discuss how property-based testing compares to traditional testing methods and demonstrate its principles with simple examples. We will see how the method fits into a TDD workflow, a CI/CD pipeline, and a modern JVM testing toolchain. In order to bust the myth of the inapplicability of property-based testing in a real world setting we’ll bring up some use cases from industry. Finally, we’ll wander into the world of concurrency and the automation of race condition detection.

Slides: https://www.janstepien.com/property-based-geecon-2019/

Vidéo :

Une nouvelle soirée en remote pour clôturer l’année malgré la pandémie.

Un énorme merci à la fondation Eclipse de nous permettre d’utiliser leur compte “Jakarta EE for JUGs” sur la plateforme crowdcast.io.

Le web décentralisé, comment ça marche ? - par Antoine Cailly (@AntoineCailly)

Aujourd’hui l’inquiétude monte devant l’emprise qu’ont certaines entreprises ou gouvernement sur notre utilisation d’internet.

Face à cette situation, beaucoup de personnes prônent la décentralisation du web un peu à la manière de Mastodon face à Twitter, néanmoins les concepts nécessaires sont assez éloignés des traditionnelles application client-serveur qui restent aujourd’hui majoritaires.

Que faut il pour décentraliser le web ? C’est ce que je vais tenter de vous présenter simplement et avec des exemples, tout en m’attardant sur certains mécanismes un peu plus techniques (DHT, Merkle-trees, CRDT…) que vous utilisez peut être déjà sans le savoir.

Je parlerais également de quelques initiatives qui commencent à faire le buzz et qui pourraient bouleverser nos usages à l’avenir.

== À propos du speaker

Développeur et formateur au sein de l’agence Rennaise de Zenika. Antoine s’intéresse aux manières alternatives (et meilleures ?) de construire les choses et de travailler ensemble.

Son blog : https://acailly.github.io/

Vidéo :

Première soirée remote pour le Toulouse JUG !

Un énorme merci à la fondation Eclipse de nous permettre d’utiliser leur compte “Jakarta EE for JUGs” sur la plateforme crowdcast.io.

Suite à l’épidémie de COVID-19 de nombreuses conférences ont été annulée. C’est le cas de Devoxx France où Jean-Philippe Bempel devait, cette année, parler de Java Flight Recorder après avoir donné, l’an dernier, une présentation sur les GC concurrents.

Avec Julien on a pensé que cette présentation sur les GC concurrents, même si déjà vue à d’autres conférences, était très intéressante et vallait la peine d’être rejouée. Nous remercions chaleureusement Jean-Philippe d’avoir partagé ses connaissances avec nous !

Comprendre les GC sur la JVM : Mode Avancé ! - par Jean-Philippe Bempel (@jpbempel)

Depuis quelques années, le monde du GC sur la JVM évolue : G1 est par défaut sur le JDK9, Shenandoah est mis à disposition par Red Hat, un nouveau GC entre dans l’OpenJDK depuis le JDK 11: ZGC et Azul C4 est toujours là.

Comme les GC “classiques” sont plutôt bien compris maintenant, cette présentation s’attardera sur les arcanes des plus récents. Nous allons expliquer le concurrent marking (tri-color marking), les specificités de G1, la Load Value Barrier de C4, les Brooks pointers de Shenandoah et le multi-mapping de ZGC.

== À propos du speaker

Développeur passionné par les performances, les runtim es (JVM, CLR) et adepte de Mechanical Sympathy, Jean-Philippe Bempel a plus de 8 ans d’expérience dans les systèmes de trading low latency. Maintenant il apporte son expertise sur la JVM chez Criteo afin d’optimiser les jobs Map/Reduce & Spark.

Vidéo :

En raison de l’épidémie de COVID (EDIT Post COVID: et juste avant d’être confinés !!!) nous avions prévu une baisse du nombre d’inscrits à cette soirée. C’est pourquoi nous avons choisi de vous proposer un workshop !

Les auteurs du Workshop n’étant pas dispo pour des raisons de planning, ils nous ont proposé d’organiser le Workshop sans eux de notre côté, les sources étant disponible en ligne (licence MIT) !

Plutôt que chacun sur son PC, et parce que l’ambiance s’y prêtait bien, nous avons réalisé ce workshop en “mob programming”. C’est-à-dire moi-même au “pupitre” avec mon laptop, lisant les instructions du workshop, les tips et les correctifs, et les autres participants qui me donnent leurs réponses/idées pour réaliser les exercices.

Voici la description du workshop et un lien vers le contenu à la fin 😉

Testcontainers

Testcontainers - par Victor GALLET (@GalletVictor) et Antoine ROUX (@_wziko_)

Avec de plus en plus d’applications “dockerisées”, Testcontainers est une librairie qui mérite que l’on s’y intéresse et va révolutionner la manière dont sont écrits les tests d’intégration.

En partant d’une application SpringBoot classique, en l’occurrence Spring PetClinic, nous vous proposons d’utiliser la puissance de Docker au sein de votre pipeline de tests d’intégration grâce à la librairie Testcontainers. Cette dernière est une bibliothèque Java permettant de simplifier la gestion du cycle de vie des conteneurs durant la phase de test.

Les applications que nous produisons sont de plus en plus connectées et de plus en plus dépendantes de ressources externes telles qu’une base de données, un broker de messages, un service de messagerie, etc. Afin de réaliser des tests qui communiquent avec ces ressources externes, nous avons habituellement recours à des librairies de mock, des services embarqués en mémoire, ou des installations en local.

Mettre en place des tests s’intégrant avec toutes ces briques est fastidieux et coûteux en terme de mise en place et de développement. De plus, ces derniers ne sont pas toujours représentatifs de la production.

Aujourd’hui, grâce à Docker et Testcontainers nous pouvons rapidement préparer un environnement de test fiable.

Workshop : https://zenika.github.io/handson-testcontainers/

Enjoy !

Juste avant les vacances d’hivers nous avons reparlé de Java (yay!) avec une première présentation axée sur l’utilisation de Java dans les jeux vidéo.

Le second second talk a porté sur les code reviews et les principes de base pour la programmation orientée objet : SOLID !

Java et les Jeux Vidéo - par Mounir Regragui

A l’heure où les frameworks de développement de jeux-vidéo les plus populaires sont Unity et UE, la conférence proposera de :

  • Revenir sur les plus grands jeux codés en Java (Minecraft, mais pas que)
  • Présentation rapide du framework LibGdx, et si il y a le temps, une petite session de live coding basique

Référence CFP : https://github.com/ToulouseJug/call-for-paper/issues/25

Vidéo :

Des codes review pour un code S.O.L.I.D - par Rémi Navarro (@NavarroRemi)

On fait presque tous des codes review sur nos projets, mais sur quoi s’accorde notre communauté pour les définir ?
Qu’est ce qu’une code review, pourquoi, quand, que faut il regarder ?
Qu’est ce qu’un code S.O.L.I.D ?

Référence CFP : https://github.com/ToulouseJug/call-for-paper/issues/40

Vidéo :

Bonne année 2020 à tous les Juggers (c’est comme ça qu’on dit ?) !

Pour débuter l’année on va se faire un peu peur 👻 avec un sujet expérimental “Test-Safe”, suivi d’un tour d’oauth2.

Programmation Test-Safe - par Adrien Piquerez (@adrien_piquerez)

La programmation test-safe est une méthode de programmation centrée sur les tests.
C’est du TDD, mais natif, du TDD par design !

Plus concrètement c’est l’idée que les tests sont la source du programme, et que l’implémentation est le produit des tests. L’idée est belle, mais comment ça marche ?

Ce talk est un début d’aventure, en live coding, vers une librairie de programmation test-safe. En scala, mais pas de panique, aucune notion de scala n’est requise pour comprendre.

Référence CFP : https://github.com/ToulouseJug/call-for-paper/issues/37

Vidéo :

Oauth2 est effrayant ? Non ! Voyons comment bien s’en servir - par Mathieu Passenaud (@mathieupassenau)

client_id et client_secret, tout le monde connait.
Par contre, on met quoi dans redirect_uri, x-frame-options, Content-Security-Policy ou Web origins ?
C’est quoi un client “confidentiel” ?

Faisons un tour de oauth2, des méthodes d’authentification (les “flows”), de ce qu’il est possible de faire et ce qu’il ne faut surtout pas faire.

Basé avant tout sur des cas d’utilisation courants et pas juste un récit d’un énième bouquin sur oauth avant de voir comment faire, on va surtout voir ce qu’il ne faut pas faire.

Exemple et manipulations avec keycloak.

Référence CFP : https://github.com/ToulouseJug/call-for-paper/issues/42

Vidéo :

Il faudrait vivre dans une grotte pour ne pas avoir entendu parler de GraalVM.
Si c’est votre cas, il va falloir songer à venir plus souvent au JUG !

Pour la dernière soirée de l’année 2019 nous vous avions proposé deux présentations sur ce thème.

GraalVM : les applications natives en Java - par Sylvain Wallez (@bluxte)

GraalVM est une JVM nouvelle génération qui a plusieurs aspects intéressants :

  • elle est “polyglotte” et permet de faire tourner du Java/Kotlin/Scala (classique) mais aussi du R, JavaScript, Ruby ou Python (moins classique)
  • elle permet de faire de la compilation “ahead of time” et produire un exécutable natif minimaliste qui peut être déployé facilement.

La présentation montrera les différentes capacités de GraalVM et comment la compilation native permet de répondre aux contraintes des applications “cloud-native”, catégorie qui regroupe les micro-services, le serverless, les containers (et side-cars), etc.

Référence CfP : https://github.com/ToulouseJug/call-for-paper/issues/22

Vidéo :

GraalVM: la JVM polyglotte - par Pascal Gillet (@psclgllt)

“Cette librairie n’est pas disponible dans mon langage de programmation. Je dois la réécrire.”

“Ce langage conviendrait parfaitement à mon problème, mais nous ne pouvons pas l’exécuter dans notre environnement.”

“Ce problème est déjà résolu dans tel ou tel langage, mais ce langage est trop lent.”

Oui, GraalVM améliore les performances des langages JVM tels que Groovy, Scala ou Kotlin pour égaler les performances des langages natifs. Oui, GraalVM permet de produire des exécutables Java standalone - des images natives - grâce à la compilation Ahead-of-time. Oui, le startup de ces applications est grandement réduit. Oui, GraalVM est bien intégrée dans des frameworks tels que Micronaut et Quarkus. Et donc oui, GraalVM rend ses lettres de noblesse au langage Java, qui devient très pertinent dans le monde des micro-services. 😛

Dans ce talk, nous nous intéresserons à l’autre grand objectif de GraalVM, qui est de mélanger librement plusieurs langages dans des applications multi-langages ou polyglottes: imaginez une application dont le code source mêle le Java, le JavaScript, le Python, et le Rust! 🤯 GraalVM permet donc aux développeurs de choisir librement le bon langage pour la tâche à résoudre, sans faire de compromis sur les performances.

Nous allons étudier les mécanismes de GraalVM permettant des applications polyglottes. Nous présenterons également Truffle, un outil associé à GraalVM pour écrire son propre langage.

Et bien sûr nous écrirons, en live, une application multi-langages !

Référence CfP : https://github.com/ToulouseJug/call-for-paper/issues/22

Vidéo :

Je vous entends déjà :

“- Rust au JUG ?! Non mais t’es pas maboule ?!”

Et bin non ! Il y a plusieurs mois est arrivé sur le CFP (https://github.com/ToulouseJug/call-for-paper/) un sujet sur Rust orienté pour les développeurs Java.

Une occasion parfaite de mettre à l’honneur un concept cher à mon coeur : la pollinisation croisée.

Rust pour les développeurs Java - par Simon Chemouil (@simach)

Rust, tout comme Java, est né de l’objectif de proposer une alternative sûre à C++ (à l’exécution et pour la santé mentale des développeurs), mais avec une approche radicalement différente: du côté de Java, la sûreté résulte de la VM et de son Garbage Collector, alors que Rust est le premier langage mainstream à proposer un mécanisme sûr de gestion automatique de la mémoire “compile-time”, tout en générant des binaires natifs. Le Rust atteint ainsi la performance de C/C++ sans les risques associés.

Dans cette présentation, il sera question de présenter Rust en partant de Java, en comparant le modèle mémoire, les primitives de design, la gestion des erreurs et le multi-threading.

Après une brève présentation “Rust par rapport à Java”, où principalement seront comparés le GC de Java et le borrow checker de Rust (10 slides, ~20 mins), on ira tout droit dans le code en portant du code écrit en Java vers Rust, en comparant les points forts des deux langages.

Il s’agit d’un talk d’introduction, modérément technique, le code Java qui sera porté sera trivial (aucun framework, mais multi-threadé), et promis à la fin Duke et Ferris vont pas se taper dessus.

Référence CfP : https://github.com/ToulouseJug/call-for-paper/issues/29

Vidéo :

Compte tenu de la proximité du Toulouse DevFest 2019, nous avons profité de cette soirée pour débriefer sur cet événement de façon ouverte par des prises de paroles volontaires.
Nous avons donc discuté de l’organisation avec les membres du staff présents sur place, des expériences et du ressenti de chacun ainsi que des présentations les plus marquantes et les plus appréciées par les uns et les autres.

Puis place au seul talk de la soirée : API Web Moderne avec GRPC!

Et comme c’est encore le début de la saison 2019, nous avions choisi d’organiser un Quiz de rentrée afin de faire gagner les quelques lots offerts par nos sponsors et partenaires au cours de l’année précédente.

Les participants ont donc pu choisir, par ordre de classement au résultat du quiz, le lot qui leur faisait le plus plaisir parmi :

Et en libre accès : de nombreux stickers (Eclipse Vert.x, Elastic, DigitalOcean, Github).

API Web Moderne avec GRPC - par Florian Bernard (@fbe64)

La plupart des projets logiciels utilisent ou exposent des Api Web. Ces APIs sont souvent bâties sur des standards (HTTP 1.X / JSON / XML …) qui n’ont pas évolué depuis plusieurs années.
Je vous propose de découvrir une approche plus moderne avec le framework GRPC conçu par Google.

Déroulement de la présentation :

  • Introduction et bref historique des technologies utilisées pour faire des Api distantes
  • Présentation du framework GRPC et ce qu’il y a sous le capot
  • Démo / live coding (client / serveur)

Référence CfP : https://github.com/ToulouseJug/call-for-paper/issues/35

Vidéo :

Pour attaquer cette nouvelle saison, un aperçu du Projet Loom par moi-même, et une présentation de Spring Cloud par un speaker bien connu du JUG.

Malheureusement, étant speaker lors de cette soirée, il m’a été impossible d’enregistrer ma présentation sur Loom, et la présentation sur Spring Cloud a été enregistrée sans micro-cravate sur la caméra n°2, d’où une qualité d’image et de son inférieures à d’habitude.

La concurrence sans s’emmêler les ficelles avec Project Loom - par Arnaud Bos (@abos)

Le domaine de la programmation concurrente utilise le champ lexical de la filature et nous met les nerfs en pelote avec des concepts qui s’entrelacent : fibers, threads, lightweight-threads, green threads, loom… Peut-être avez vous également entendu parler de coroutines ? Rassurez-vous, tout est lié.

Au fil de cette présentation (em)mêlée d’exemples de code, vous découvrirez le projet Loom qui a pour vocation d’apporter à la JVM des “mécanismes léger de concurrence”, ainsi que des API plus haut niveau pour broder dessus.

Nous aborderons ensemble l’origine de Loom et ses récents prototypes. Vous vous apercevrez que son maillage va au delà de “simples” primitives et peut nous amener jusqu’à révolutionner la concurrence sur la JVM.

Et en attendant la révolution, sans tirer trop sur la corde, vous verrez comment on peut juste utiliser Quasar.

Référence CfP : https://github.com/ToulouseJug/call-for-paper/issues/39

Microservices avec Spring Cloud - par Florian Beaufumé (@fbeaufume)

Une architecture en microservices apporte de nombreux bénéfices mais pose plusieurs difficultés à cause de la nature distribuée de l’application.

Pour nos applications Java ou Kotlin basées sur Spring Framework et Spring Boot, il existe des solutions apportées par les projets Spring Cloud. Elles ont l’avantage d’être neutres par rapport à l’orchestrateur ou au cloud utilisé.

A travers une majorité de slides, mais aussi quelques démonstrations, nous allons expliquer ces difficultés et montrer la mise en oeuvre étape par étape des solutions de Spring Cloud :

  • Centralisation de la configuration avec Spring Cloud Config
  • Automatisation et fiabilisation des communications entre services avec Spring Cloud Netflix
  • Exposition des services aux clients avec Spring Cloud Gateway
  • Corrélation des logs avec Spring Cloud Sleuth

Référence CfP : https://github.com/ToulouseJug/call-for-paper/issues/30

Vidéo :

Pour la dernière soirée de la saison 2018-2019 le thème était “de la programmation orientée object à la programmation fonctionnelle”, vaste programme.
Pour ce faire, une première vidéo où l’on revient aux sources et où l’on présente les grands concepts, suivi d’une présentation d’un cas concret pour lequel des concepts de programmation fonctionnelle peuvent nous aider.

La programmation fonctionnelle sans céder à la mode - par Frédéric Cabestre (@fcabestre)

Aujourd’hui, pour être à la mode, il faut parler de programmation fonctionnelle. Et de suite on convoque les mots en vogue: « Immutabilité », « Monade » ou « Catamorphisme ». Au mieux le message est brouillé, mal reçu. Au pire la salle se vide !

Ce que je vous propose c’est de repartir des principes de base, avec des idées bien arrêtées et peut-être parfois provocatrices. Comprendre, comme le disait John Hugues, « Why functionnal programming matters ». Cerner les quelques idées directrices de la programmation fonctionnelle et ce qu’elles apportent concrètement au quotidien. Voir comment et pourquoi d’autres concepts en découlent nécessairement…

Il sera peut-être finalement question de « Théorie des catégories » ! Mais il sera surtout question, en vrac, d’histoire et de mise en œuvre des langages, de typage, de performance, d’artisanat du logiciel, de « Design patterns », d’abstraction et, soyons fou, de réification.

En somme, je vais vous parler de programmation fonctionnelle en essayant de ne pas être à la mode !

Référence CfP : https://github.com/ToulouseJug/call-for-paper/issues/20

Vidéo :

De l’OOP à la FP : l’affaire de la validation - par Emmanuel Nhan (@nhanmanu)

On est tous tombé au moins une fois dans cette boucle en remplissant un formulaire web :

  • Remplir et cliquer sur envoyer,
  • Avoir en retour un champ en erreur,
  • Corriger la saisie et soumettre,
  • Avoir un autre champ en erreur,
  • Corriger la saisie et soumettre,

Même chose pour l’envoi d’une requête HTTP avec un body JSON qui peut être invalide à plusieurs endroits. Doit-on corriger chaque champ un à un à mesure que l’on découvre les erreurs ou existe-t-il un moyen d’avoir l’ensemble des erreurs dès la première requête ?

Dans ce talk, nous examinerons les moyens pour remonter toutes les erreurs dès la première validation en commençant par la solution la plus Java possible en utilisant la JSR 303 Bean Validation. Après avoir vu les avantages et inconvénients de cette approche, nous essayerons de construire un programme plus fonctionnel. Petit à petit nous ferons émerger des abstractions et nous déboucherons sur une version purement fonctionnelle de la résolution de ce problème.

Ce talk est fait pour les développeurs Java ou Kotlin qui veulent rendre leur code plus fonctionnel. Par conséquent, il nécessite une connaissance de Java et des bases de Kotlin ou Scala. Si vous connaissez déjà Scala et Cats, ne vous attendez pas à apprendre beaucoup.

Référence CfP : https://github.com/ToulouseJug/call-for-paper/issues/27

Vidéo :

Voici les vidéos de la soirée de mai où nous avons eu la chance de recevoir deux membres de l’équipe “core” de JHipster qui nous ont parlé de leur projet !

Nouveau matos !
Grace à nos sponsors, nous avons pu nous permettre de remettre un petit peu à jour notre matériel de captation. Un prochain article détaillera nos nouvelles acquisitions mais en attendant:
merci Ippon, merci MonkeyPatch ! 🥳

Présentation JHipster - par Hippolyte Durix (@hdurix)

JHipster est une plateforme de développement Open Source permettant de générer, développer et déployer des applications web :

  • Spring boot et Angular ou React ou depuis peu Vue.js
  • Dans une application monolithique
  • Ou suivant le pattern microservices

Offrant des dizaines d’options qui vous permettent de générer une application adaptée à vos besoins et vos envies, JHipster porte une attention toute particulière à l’expérience du développeur et à la qualité du code généré.

Vidéo :

Blueprint: Un JHipster à votre image - par Anthony Viard (@avdev4j)

Vous connaissez tous Sam ? Vous savez Sam est celui qui conduit et qui ne boit pas. Et bien figurez-vous que Sam est aussi celui qui ne code pas.

En effet Sam gère des équipes de développement qui prennent en charge le développement de projets web au sein d’une grande entreprise française.

Mais Sam doit évoluer dans un contexte contraignant tout en ayant pour objectif d’offrir à ses équipes de l’innovation et de l’efficacité autour d’un socle technique commun. Mais Sam ne sait pas comment faire…
Aujourd’hui il existe LA solution pour Sam : Le module Blueprint de JHipster.

Si JHipster peut lui permettre de générer rapidement des projets, le module Blueprint, lui, va lui permettre de redéfinir certaines étapes afin d’obtenir des applications à l’image de sa société.

Au travers d’une présentation et d’une démonstration du Blueprint nous allons aider Sam à se doter de son générateur d’application innovant et performant. Nous allons l’accompagner afin de gagner en cohérence technique, de proposer des outils ayant un sens pour ses équipes et de réduire son time to market.

Vidéo :

Les résultats du sondage Stack Overflow 2019 viennent d’être dévoilés, mais franchement vous avez mieux à faire, puisque les résultats du sondage Toulouse JUG 2019 sont arrivés !

ATTENTION Les graphiques présents dans cet article pourraient mal s’afficher sur certaines résolutions d’écrans, les appareils mobiles notamment.
N’ayant pas le courage de me battre avec le CSS, je vous conseille plutôt de changer d’écran si vous souhaitez consulter les graphiques de façon détaillée.

Après un démarrage en trombe à prés de 80 entrées dans les 3 premiers jours, les réponses se sont faites rares jusqu’à un petit sursaut lors de la dernière soirée d’avril qui nous a permis d’atteindre les 101 soumissions.
Le sondage ayant été communiqué pendant les soirée, sur Twitter et même sur le groupe Meetup qui compte plus de 1300 inscrits, on est en dessous des 8% de réponses, mais c’est cohérent avec le taux d’inscriptions par soirée.

C’est dommage pour les ≈1200 qui n’ont pas souhaité répondre…

La domination du grand nombre par le petit nombre, nous l’appelons tyrannie :
la domination du petit nombre par le grand nombre est tyrannie aussi, mais d’une nature moins intense.

  • Herbert Spencer

Ou pas ? ¯\(ツ)

Cohortes, fréquentation et questions générales

Fréquentation

La majorité des votants déclare venir le plus souvent possible aux soirée du JUG.
La seconde réponse la plus exprimée, très proche en nombre de voix, concerne les personnes indiquant venir aux soirées lorsque le sujet les concerne directement : pour nous c’est un fait marquant qui signifie qu’il faut que les sujets que nous programmons restent le plus souvent possible au plus prés des considérations pratiques de notre travail de tous les jours.

JamaisParfois, quand Netflix est downQuand le sujet concerne directement monjobLe plus souvent possibleJe ne rate jamais une soirée39.6%32.7%15.8%

16% sont plus cyclothymiques, et prés de 11% déclarent de jamais venir.
Sur ce total de 27%, la raison principale évoquée (à quelques variantes prés) est l’indisponibilité ou des contraintes d’emploi du temps.

Le point positif pour le JUG, c’est qu’aucune de ces personne ne déclare ne pas/plus venir ou venir seulement “parfois” en raison des choix des sujet ou de la qualité des présentations. 🥳

Quelques réponses “inline” à des messages reçus :

  • “Car c’est le mardi” : et bien non pas toujours !
  • “J’ai très peu de notifications pour les rencontres du moins par mail…" :
    d’autres personnes, à d’autres questions, ont répondu avoir des difficultés à avoir les infos via la mailing-list. Je vous invite à vérifier les paramètres de vos boîtes de réception et filtres de SPAM, parce que les soirées y sont toujours annoncées, des rappels pour les inscriptions avant échéance aussi, et les liens vers les vidéos y sont postés également à posteriori.
  • “le lieu, et surtout vous n’êtes pas le seul meetup digne d’intérêt parfois les horaires et les dates rendent les choses impossibles : vous devriez les broadcaster” :
    en effet, l’offre de meetups sur Toulouse est large, et c’est une bonne chose, mais le JUG est une institution 😁.
    Concernant le lieu et le broadcast : on en reparle plus bas.

Cohortes

La répartition par age est très intéressante de notre point de vue puisque même si elle est très proche de ce à quoi nous nous attendions, elle contraste d’avec celle de Stack Overflow.

Toutes proportions gardées bien sûr, puisque le sondage SO a recueilli prés de 90.000 réponses, mais la comparaison est intéressante.

J’ai entre020406015 et 20 ans15 et 20 ans20 et 25 ans20 et 25 ans25 et 30 ans25 et 30 ans30 et 40 ans30 et 40 ans40 et 50 ans40 et 50 ans50 et 60 ans50 et 60 ans

En effet, nous avons au JUG une population plus âgée (toute proportion gardée, encore une fois) avec une majorité de personnes entre 30 et 40 ans là où ils ne représentent que 40% des votants chez SO.
Le nombre de votants SO de plus de 40 ans représente péniblement 12% du panel, là où nous atteignons prés de 25%.
À l’inverse, les 20-30 ans sont à peine plus représentés que les plus de 40 ans au JUG, alors qu’ils forment l’écrasante majorité des votants chez SO.

Fréquence des soirées

Selon la majorité des votants, une soirée par mois est un bon rythme. Cela nous conforte dans nos efforts de re-dynamisation du JUG en maintenant le cap actuel.

L’overdose : je préfèrerais une soirée partrimestreTrop : une soirée tous les deux mois ceserait suffisantLe bon rythme.Limite : j’aimerais plutôt toutes les 3semainesLa zone : j’aimerais plutôt deux soirées parmois19.8%68.8%

Que les personnes qui ont voté “Trop” ou * “Overdose” se rassurent, il leur est possible de ne pas venir ! 😂

Pour les personnes ayant voté “Limite” ou * “La zone”, merci pour vos encouragements, on augmentera peut-être la fréquence des soirées dans les mois à venir, mais pour le moment tout le monde est déjà pas mal occupé à garder cette vitesse de croisière.

Horaires

Ici encore, la majorité des votants déclare être satisfait des choix actuel des organisateurs. Si l’on ajoute à ceux-là les 21% qui arrivent avec le quart d’heure toulousain, qui est de mise dans notre contrée, et compte-tenu du fait que le début de soirée est consacré à l’introduction et éventuellement à un mot d’un sponsor, on obtient un score satisfaisant en l’état.

020406080Trop tôtLimite : on arrive avec le quart d'heur…ParfaitTrop tardBâtard : bouchons, gosses àcoucher, br…6 (5.9%)6 (5.9%)21 (20.8%)21 (20.8%)67 (66.3%)67 (66.3%)5 (5%)5 (5%)12 (11.9%)12 (11.9%)

Sessions tardives

L’idée de proposer des sessions tardives a germé suite à une discussion avec un des orga du Toulouse Rust Meetup.
Je ne sais plus trop pourquoi on en est arrivé à parler de ça, mais l’idée m’a semblé bonne pour permettre notamment aux parents de faire “le relais” avec leur moitié ou leur babysitter (ou leur “c’est compliqué”).

OuiNon70%30%

La grosse majorité des votants se propose donc en défaveur de sessions tardives.

L’a priori que j’avais en postant cette question est qu’il y aurait une corrélation forte entre personnes qui ne viennent que “parfois” ou jamais, en raison des horaires et les personnes intéressées par des sessions tardives.

Et bien par du tout. Sur les 5 personnes ayant répondu qu’il souhaiteraient des soirées tardives systématiquement (déjà je m’attendais à plus), seulement 2 déclarent ne venir que “parfois”, deux viennent “le plus souvent possible” et une “quand le sujet concerne son job”.

SystématiquementDe temps à autre12.5%87.5%

Et alors là, joie du sondeur : pour 30 personnes ayant répondu “Oui” aux sessions tardives, nous avons 40 réponses à la question “Si oui*, quand ?"* 🤣
Heureusement, les 10 boulets ont répondu *“De temps à autre”* et pas *“Systématiquement”* !

Note du relecteur qui est probablement un boulet: quand on a des réponses incohérentes dans un sondage, c’est que les questions sont mal posées !

Réponse de l’auteur au relecteur : en toute mauvaise fois, c’est impossible !

Le lieu actuel

Voici le genre de résultat qui me fait regretter d’avoir laissé la possibilité de botter en touche avec l’option “Pas d’avis”.

C’est :02040Trop proche du centre villeTrop proche du centre villeLe juste milieuLe juste milieuPas assez proche du centre villePas assez proche du centre villePas d’avisPas d’avis

Difficile de déduire quoi que ce soit de ce graphique si ce n’est qu’il y a plus de personnes qui considèrent ce lieu comme trop loin, que de personnes qui le considèrent trop proche du centre ville. Un quart des sondés trouve l’emplacement adéquat ; quant à la majorité, qui n’a pas d’avis sur la question, dans quel(s) camp(s) se répartirait-elle si elle avait été forcée de prendre position ? Mystère.

On notera également que seulement 19% de sondés trouvent le lieu facile d’accès. 9% le trouvent difficile d’accès, et 69% le trouvent “c’est chiant mais ça se fait”. On a donc un boulevard devant nous pour chercher à améliorer la situation.

Par ailleurs, la majorité des gens déclare venir au JUG en voiture/moto (55%) et/ou en transports en commun (55%), quand 6% nous font savoir qu’ils se déplacent aussi à dos de poney.
On en déduit donc que dans l’éventualité d’une délocalisation du JUG, l’idéal serait un lieu proche d’un parking et des transports en commun (et d’une étable).
Merci de nous faciliter la tâche !

Suggestion trouvée dans les réponses : “à distance” -> On en reparle plus bas.

En contre-partie, 90% des votants trouvent le confort de la salle satisfaisant.

123450102030402 (2.3%)2 (2.3%)6 (7%)36 (41.9%)34 (39.5%)8 (9.3%)

Et deux personnes n’ont pas sû comment voter :

  • “ahem de 1 a 5 …. question 1 c’est le mieux ou bien c’est 5 ?"
  • “le confort 1 c’est bien ou c’est nul ?"

J’en déduis donc qu’elles n’ont jamais lu Télérama ni utilisé Google Reviews, Trip Advisor, Yelp, Netflix ou autre système de note à points 🤣.

Autres remarques :

  • “Par web conference ?" : Encore une fois, on en reparle plus bas.
  • “Porte toujours fermée avec tout un folklore pour entrer." : mille fois oui, la porte a été mentionnée plusieurs fois, on est conscient de ce problème…

Changer de lieu

Encore une fois je me mords les doigts d’avoir laissé la possibilité de botter en touche avec la réponse D (≅"Pas d’avis”).

Changer de lieu ?010203040Oui par pitiéOui par pitiéNon c’est très bienNon c’est très bienFaire un roulementFaire un roulementLa réponse DLa réponse D

Dans l’échantillon des personnes ayant répondu “La réponse D”, la répartition entre “Top”, “Difficile d’accès” et “Un peu chiant mais ça se fait” est la même que sur le panel global.
Dans l’échantillon des personnes ayant répondu “Non c’est très bien” on retrouve une plus grande proportion de personnes ayant répondu “Top” mais toujours une majorité de “Un peu chiant mais ça se fait”.

En faisant l’échantillonnage inverse, on constate que :

  • Les personnes ayant répondu “Top” votent à peu près à 63% pour “Non c’est très bien” et 31% pour “La réponse D”.
  • Les personnes ayant répondu “Difficile d’accès” votent à peu près à 40% pour “Oui par pitié” et “La réponse D” et 20% “Faire un roulement”
  • Les personnes ayant répondu “Un peu chiant mais ça se fait” votent à peu près à 34% pour “Faire un roulement”, 42% pour “La réponse D”, 18% pour “Non c’est très bien” et 4% pour “Oui par pitié”.

Si quelqu’un arrive à déduire quoi que ce soit de ces résultats, qu’il/elle me le fasse savoir, j’ai atteint mes limites. J’ai l’intuition que ce lieu peut se résumer en un mot : “Meh”, il ne fait pas l’unanimité chez nos membres votants.
D’un autre côté trouver un lieu qui pourrait faire l’unanimité n’est pas du gateau.

Hypothétique nouveau lieu

Concernant la localisation, d’après ce que je lis, aucun consensus ne se dégage non plus.
Une majorité de votants préférerait un lieu dans le centre ville, et “le Sud” de façon générale récolte plus de suffrages.

Pour ce qui est des locaux, pas de grand gagnant non plus, les votes sont répartis de façon à ne pas nous aider à décider pour une typologie en particulier :

Plutôt0102030Un espace de coworkingUn espace de coworkingLes locaux de boîtes accueillantesLes locaux de boîtes accueillantesDans une autre école/facDans une autre école/fac

Dans les remarques sur un hypothétique futur lieu, HarryCow, IoT Valley et l’N7 ont été mentionnés.
Un petit rigolo a proposé la Salle des Illustres… Si cette personne a des contacts bien placés à la mairie, elle peut me contacter via Twitter !

Et enfin le récurrent “une teleconference?" : je n’ai pas vérifié si c’était la même personne à chaque fois, mais, encore une fois, on en parlera plus bas.

Le format

Formats courts

Les short-talks et conférences sont nettement en tête. Ça tombe bien, c’est déjà ce qu’on essaie de faire.
Arrivent derrière, dans un mouchoir de poche les lightning-talks, unconferences et les quiz.
Et entre les deux, les ateliers.

020406080100Lightning (<8mn)Short (<15mn)ConférenceUnconferenceAtelier/WorkshopQuizune 1ère partie courte et untruc plus …Kamoulox17 (16.8%)17 (16.8%)63 (62.4%)63 (62.4%)89 (88.1%)89 (88.1%)18 (17.8%)18 (17.8%)47 (46.5%)47 (46.5%)18 (17.8%)18 (17.8%)1 (1%)1 (1%)1 (1%)1 (1%)1 (1%)1 (1%)1 (1%)1 (1%)

La fréquence la plus sollicitée pour les lightning/short-talks est “De temps en temps”.

Quiz

Les quiz sur un format court (≃15mn) sont préférés à un format long (≃45mn) et un consensus se forme sur 1 soirée sur 2 ou tous les trimestres, et entre deux présentations (plutôt qu’avant/après).
Concrètement, je pense qu’on va tenter un petit 15mn tous les trimestres pour commencer, et on verra les retours que l’on a.

Les chiffres nous montrent également que la plupart de nos membres sont plutôt pour faire des quiz, et la moitié (un peu plus en fait) des personnes favorables préfère qu’il y ait un enjeu (cadeaux, goodies à gagner).

Conférences

Concernant les conférences, pas de consensus non plus.

Plutôt0204025mn25mn30mn30mn40mn40mn45mn45mn50mn50mn1h1h1h301h302h2h

On a une jolie courbe de Bell et grosso-modo des conférences de 45mn ou 1h semblent satisfaire. Les présentations sur 30mn tirent leur épingle du jeu, quant aux formats plus longs, ils sont plutôt boudés.

Ateliers

92,3% des 91 votants préfèrent que le JUG se cantonne au domaine de l’IT au détriment du “WTF”. Tant pis pour l’ouverture des chakras.

Sondages

L’idée de sondages bien geeks semble intéresser la majorité des votants.

OuiNon15.7%84.3%

On va voir ce que l’on peut faire pour eux. Les autres n’auront qu’à ne pas répondre ¯\(ツ)

Les sujets

Le CfP via Github satisfait 73% des votants. 26% votants trouvent ça “Ok mais peut mieux faire” et deux personnes trouvent ça “Nul”, malheureusement personne dans ces deux catégories n’a proposé d’alternative, on va donc garder Github pour le moment.

En ce qui concerne les thématiques, niveaux et profil des speakers en revanche, cette catégorie permet de dégager des tendances plus marquées.

DébutantIntermédiaireConfirméMaintstreamNicheAcadémique02040JamaisJamaisRarementRarementDe temps en tempsDe temps en tempsSouventSouventIl existe autre chose ?!Il existe autre chose ?!

(“Académique” ressemble trait pour trait à “Mainstream” et “Niche”, je ne me suis donc pas bagarré avec le CSS pour le faire apparaître ici… Ceci dit, 3 personnes ont voté “Académique”/“Il existe autre chose”, et quelque chose me dit que je connais les noms de ces joyeux lurons, et qu’ils se reconnaîtront également.)

On a donc une forte demande de tous les niveaux “De temps en temps” et une petite préférence pour avoir “Souvent” des présentations de niveaux intermédiaires ou confirmés.

À noter également un petit pic de “Jamais” et de “Rarement” pour les sujets de niveau débutant. Mais la tendance n’est pas très prononcée, et puisque le JUG symbolise surtout le partage nous allons continuer à varier les niveaux et prendre soin d’accueillir les débutants avec des sujets adaptés à leur niveau.

Côté profil des speakers, une seule tendance se dégage : que ce soit “Young blood”, “Usual suspects”, “Stars” ou “non-Stars”, les réponses sont peu ou prou “un peu de tout, de temps en temps”.

La dernière question de cette section “Speakers/Talks que j’aimerais voir au JUG” a bien évidemment donné lieu à toutes les folies, parmi les pépites (les bonnes idées je les garde pour moi) :

  • “Martin Fowler”
  • “Jake Wharton”
  • “Magit”

Et bien sûr le bon vieux troll velu : “Arnaud Bos”. Merci, merci, si je trouve le temps j’y penserai 😅

Communication

Cette partie du formulaire avait pour objectif de cerner les attentes des “followers” du JUG et les efforts à fournir par l’équipe pour s’assurer que les infos/news circulent bien jusqu’aux membre.

Tout d’abord les canaux de diffusion :

020406080FacebookTwitterMastodonNewsletter/Mailing listSlack des communautés TlseMeetupsmsgoogle groupYinks7 (6.9%)7 (6.9%)52 (51.5%)52 (51.5%)2 (2%)2 (2%)38 (37.6%)38 (37.6%)27 (26.7%)27 (26.7%)79 (78.2%)79 (78.2%)1 (1%)1 (1%)1 (1%)1 (1%)1 (1%)1 (1%)1 (1%)1 (1%)

En tête on retrouve sans trop de surprise le site Meetup et le compte Twitter, suivis par la mailing-list (Google Group) et le Slack “des communautés”.

Comme un relecteur attentif me l’a fait remarquer, l’absence de surprise est d’autant plus marquante que le biais de sélection est important : les personnes ayant répondu au sondage l’ont fait après en avoir été informé via ces mêmes canaux de communication…
Ces résultats ont donc peu de valeur si ce n’est de confirmer que la plupart des gens utilisant déjà ces moyens de communication les trouvent à leur goût.

Dans l’ensemble, les votants semblent plutôt satisfaits par la fréquence de communication du JUG, ni trop peu, ni trop de spam.

Enfin, l’utilisation de Meetup pour les inscriptions plaît à 85% des votants, et les 15% restants n’ont pas proposé d’alternative, on va donc s’en contenter également.

Captation

De ce côté, les avis sont assez tranchés :

Vidéos sur YoutubePhotos de l’événement020406080InutileInutileIndispensableIndispensablePas d’avis (Ouép/Meh)Pas d’avis (Ouép/Meh)

Les vidéos sont importantes pour 72% des votants, mais les photos n’emballent pas les foules. Pourtant si la vidéo va rester un élément important de nos productions (je tiens par avance à m’excuser de la qualité des vidéo à venir de la soirée d’Avril…), j’aimerais faire un effort supplémentaire pour avoir des photos correctes des événements que nous organisons, car c’est important pour nous en terme de communication et je pense que cela peut avoir une forte valeur ajoutée pour trouver des sponsors.

Dans l’ensemble la qualité des vidéos semble satisfaire, mais un petit pourcentage la trouve insuffisante, et malheureusement, j’en fais partie !

Quelques réponses au passage :

  • “Lors des questions de fin de sa préz’, le/la speaker doit répéter la question avant d’y répondre (bah sinon on sait pas à quoi il répond)" :
    oui je suis d’accord, mais si le speaker n’y pense pas, je ne vais pas l’interrompre, priorité au public présent 😉
  • “Un petit mail sur le forum avec le lien serait le bienvenu” : c’est déjà le cas.

Délai de publication

Je dois l’avouer, cette question était en fait rhétorique…

Dans l’idéal0102030Le lendemain de la soiréeLe lendemain de la soirée1 semaine après la soiré1 semaine après la soiré2 semaines après la soiré2 semaines après la soiré

La réponse “Le lendemain de la soirée” était à la limite du troll, et désolé pour les 16 personnes qui l’ont sélectionnée : ça n’arrivera pas 😅

C’est trop de boulot d’organiser les soirées (de façon générale, pas besoin de rentrer dans les détails) pour en plus assurer la post-production dans la foulée : le lendemain, je me repose.

Les réponses “1 semaine après” et “2 semaines après” me semblent beaucoup plus raisonnables, et de toute façon, la bonne réponse était la colonne bleue : “Quand tu peux mon vieux”.
À tous ceux qui ont coché cette réponse, je vous aime.

Et enfin, la voici la voilà, l’Arlésienne des réponses que vous attendiez tous depuis le début !

Mais pourquoi diable ne fait-on pas de téléconférence ou de live-stream ?!

La réponse est liée aux points ci-dessus : trop de boulot. Et oui, certains ne s’en rendront pas compte, mais c’est le cas. Et ce n’est pas tout.
Lors de ma première soirée en tant qu’orga du JUG, en décembre, le live-stream via Youtube a merdé. Et oui. Bon, c’était ma faute, j’avais oublié de passer le stream de “privé” à “public” 😅

Mais quand le speaker, après la session de Q&A est venu me voir pour me dire que ce serait pas mal que je supprime certains passages de ses réponses de la vidéo, pour des raisons légales, et bien on était bien contents tous les deux que ça n’ait pas été diffusé en direct et que je puisse le faire en post-production.

Moralité, le live-stream c’est : de la logistique supplémentaire, du stress supplémentaire si ça ne marche pas, l’impossibilité de gérer le genre de cas mentionnés plus haut, et une plus-value très limitée.

Conclusion

Je zap la question sur les goodies parce que cet article est déjà bien trop long et que je me garde les résultats pour éventuellement faire des surprises pendant les prochaines soirées.

Quelques pépites pour la forme :

  • “un macbook pro 2015”
  • “Bloqueur de rfc pr cb ;)" : si quelqu’un comprend ce que dit cette personne, mes DM sont ouverts !
  • “Des MacBook pro dédicacés,avec le log JUG gravé dans l’alu."
  • “Une moto du jug”

Enfin, la section qui fait plaisir, “As-tu des remarques pour le JUG ? Ou peut-être une réponse à une question qui n’a pas été posée ?” :

  • “Merci pour votre taff les gars :)"
  • “merci :)"
  • “Merci à tous de votre travail/implication."
  • “Continuez, c’est cool !"
  • “Quoiqu’on en dise, ce que vous faites est super!"
  • “Pas de question. Vous faites de votre mieux les gars et je vous en remercie :) “

Et mon préféré :

  • “Q: Es-tu satisfait du JUG ?
    R : Yep. Merci pour votre investissement et le temps que vous y passez.
    Q : Qu’est-ce qu’il y connaît Rick Hunter aux femmes ?
    R : Rien."

Merci à tous ❤️

Et voici les vidéos de la soirée d’avril où il a été question de Micronaut et des boucles for et autres patterns d’itération/récursion.

Je tiens à vous prévenir : la qualité des vidéos de cette soirée laisse à désirer…

Mea culpa :

  • le son n’est pas aussi clair que ce que nous avons pu obtenir par le passé, c’est parce que j’avais oublié un cable crucial pour l’installation : mon cable TRRS.
  • de plus, la soirée s’étant déroulée dans une salle différente de celle qui nous est habituellement mise à disposition, j’ai eu quelques problèmes de mise en place de la caméra (angle) ainsi que des problèmes d’éclairage.

La deuxième présentation en particulier a subi plusieurs retouches en post-production, notamment au niveau de l’exposition et de la saturation, pour un résultat assez décevant. Rassurez vous, la qualité du contenu est au rendez-vous 😃

Le point positif, c’est que si la qualité de ces vidéos est en dessous de celle de nos productions habituelles, ces deux présentations étaient des répétition avant qu’elles ne soient données par leurs auteurs à de plus grands événements :

  • Olivier présentera Micronaut dans un Tools in Action à Devoxx France
  • Igor reparlera des boucles for et de flatMap à SunnyTech

Micronaut, le framework JVM ultra-light du futur - par Olivier Revial (@pommeDouze)

Temps de démarrage proche de la seconde, empreinte mémoire de 10MB, pas de réflection, approche “cloud native” : autant de caractéristiques qui font du framework Micronaut le compagnon idéal de développement de vos microservices Java/Kotlin.

Si des frameworks comme Spring Boot ont grandement facilité l’écriture d’applications en permettant de générer des applications standalone et auto-configurées, ils souffrent néanmoins de l’historique Spring et de sa “lourdeur”. En effet, l’injection de dépendances au runtime et la réflection rendent plus longs les temps de démarrage et font grossir l’empreinte mémoire de nos applis.

En partant de 0, Micronaut prend le contre-pied de ses prédécesseurs en se passant de la réflection et en utilisant la “Ahead-Of-Time compilation” pour des temps de démarrage en dessous de la seconde !

Pensé de base pour supporter et faciliter le développement de microservices et d’applications serverless, Micronaut offre par défaut le support de nombreux providers et outils cloud, il permet l’écriture d’applications réactives, il rend les applications facilement testables… bref, il apporte tout ce dont on a besoin pour développer des applications modernes !

Cette présentation sera un live-coding pour montrer les principales fonctionnalités et les principaux points forts du framework Micronaut.

Vidéo :

Référence CfP : https://github.com/ToulouseJug/call-for-paper/issues/32

🏋️‍️ Refactoring sans les for - par Igor Laborie (@ilaborie)

Peut-on se passer de la bonne vieille boucle for ? Il est toujours intéressant de creuser les alternatives comme les Stream, ou d’autres options. Mais le plus important c’est de savoir quand il fuir cette instruction. Ou pas !

Au quotidien, les boucles sont les briques de base de notre code. Mais on oublie souvent les alternatives comme l’API Stream, la récursivité… C’est toujours bénéfique de prendre du recul sur le code que l’on écrit, pour analyser ce qui peut être amélioré. Les alternatives sont elles plus lisibles ? Plus maintenables ? Plus performantes ?

Ici on se contentera de regarder ce qui se passe en Java, avec quelques incursion coté Kotlin et Scala. Mais le propos s’adapte aux autres langages de programmation.

Vidéo :

Référence CfP : https://github.com/ToulouseJug/call-for-paper/issues/24

Pendant cette soirée, nous avons discuté d’Apache Kafka et de la Programmation Orientée Aspect.
L’un est un sujet relativement récent et à la mode dont tout le monde parle, l’autre un sujet qui existe depuis des années et dont on ne parle pas assez. J’espère que vous apprécierez.

Easy Kafka comprendre les concepts et jouer avec facilement - par Mikael KROK (@mikaelkrok) & Romain Chartier (@romlinch)

Kafka Starter Kit : marre de revoir les mêmes conférences et envie de mettre les mains dans le cambouis facilement? On vous propose une révisions des concepts (donc débutant accepté) puis de d’utiliser notre framework pour démarrer kafka en mode test unitaire.

On montre les concepts puis on montre notre framework qui permet de lancer kafka dans les tests unitaires > on évite les soucis de persistance des messages et on commence à mieux saisir les concepts.

Vidéo :

Référence CfP: https://github.com/ToulouseJug/call-for-paper/issues/21

Introduction à la Programmation Orientée Aspect - par Mounir Regragui

Présentation de la programmation orientée aspect : concepts, vocabulaires, exemples avec AspectJ/Spring et CDI.

Vidéo :

Référence CfP: https://github.com/ToulouseJug/call-for-paper/issues/26

Grosse soirée ce jeudi au JUG toulousain ! Nous avons l’événement à une présentation du modèle d’Acteurs.
Le talk d’une durée théorique d’une heure et demi à légèrement débordé, mais c’est largement dû aux multiples sessions de Q&A (ou “breakpoints”) qui ont eu lieu pendant la présentation afin de permettre au public présent de mieux suivre, ou de raccrocher les wagons ^_^

Acteur, un modèle élégant pour le calcul concurrentiel et distribué - par Didier Plaindoux (@dplaindoux) & Alessio Coltellacci (@lightplay8)

Avec l’avènement des architectures multi-cœurs, nous avons besoin de moyens pour les exploiter. Généralement, cela se fait à l’aide des threads natifs et de primitives de synchronisation qui conduisent généralement à des solutions difficiles à mettre en oeuvre et à des problèmes pour appréhender le calcul.

Explorons une approche différente: le modèle de l’acteur, un modèle conceptuel pour traiter le calcul concurrentiel.

Par le biais de la conception d’un jeu vidéo nous illustrerons:

  • ce qu’est un acteur,

  • leurs interactions sans partager la mémoire,

  • la communication entre acteurs dans un système distribué et

  • comment avoir un système distribué tolérant aux pannes.

Vidéo :

Référence CfP: https://github.com/ToulouseJug/call-for-paper/issues/17

Pour le début de l’année 2019 on a décidé de prendre de bonnes résolutions et d’écrire des tests.
Mais avant cela, on a droit à une petite introduction à une nouvelle plateforme d’apprentissage et de mentoring:

Découverte de Exercism - par Lidonis Calhau (@lidodo)

Exercism est une plateforme pour la pratique du code avec mentorat. Le site permet de s’exercer presque 50 langages.

Je souhaite faire découvrir au plus grand nombre ce site que je trouve excellent.

Vidéo :

Référence CfP: https://github.com/ToulouseJug/call-for-paper/issues/16

Présentation du Framework de test Spock - par Rémi Navarro (@NavarroRemi)

Le but est de découvrir un autre framework que Junit afin de réaliser les tests de votre application “java”.

Cette présentation permet également de faire une courte introduction au langage groovy.

Vidéo :

Référence CfP: https://github.com/ToulouseJug/call-for-paper/issues/14

Une batterie de test pour du code Legacy en quelques minutes avec Approval Test - par Gaspard POINTEAU (@Gaspard_PO)

Une appli legacy, on ne sait pas exactement ce qu’elle fait, et elle peut prendre plusieurs paramètres en entrée, ayant plein de valeurs possibles.
Mais il est indispensable de la tester avant de refactorer.

Donc on va voir comment générer un gros paquet de tests de non-regression en quelques minutes.

Vidéo :

Référence CfP: https://github.com/ToulouseJug/call-for-paper/issues/18

On termine l’année 2018 en beauté avec deux sujets sur le thème d’Apache Camel :

Apache Camel - par Emmanuel Vinel (@EmmanuelVinel)

Interconnecter des applications , des services tiers ou des processus au sein d’un SI est un besoin récurrent et pas nouveau.
Dans cette présentation, nous allons aborder une solution possible le framework Apache Camel.

Dans un premier temps, nous retournerons aux basiques : Les EIPs.

Puis nous évoluerons sur l’implémentation avec Apache Camel pour adresser un processus plus complexe.

Nous terminerons par quelques mots sur l’architecture micro-services et apache Camel.

Vidéo :

Référence CfP: https://github.com/ToulouseJug/call-for-paper/issues/15

Outils pour le développement de Projet d’intégration Apache Camel/Red Hat Fuse : du profil technique au profil business - par Aurélien Pupier (@apupier)

Nous verrons l’ensemble des outils de développement existant pour développer des projets d’intégration basé sur Apache Camel.

Nous verrons comment ces différents outils adressent des profils variés et comment ils interopérent pour mener à bien le développement du projet.

Vidéo :

Adresse : EPITECH 40 Boulevard de la Marquette 7eme étage · Toulouse

Nouvelle soirée du Java User Group Toulousain. Nous allons plonger, à l’aide d’Emmanuel VINAS et Igor LABORIE, dans l’univers Kotlin.

Comment aborder un nouveau langage ?

Les uns répondent en codant, les autres en regardant son fonctionnement en détail.

Pour le programme plus en détail, référez-vous aux informations de l’événement meetup.

Adresse : EPITECH 40 Boulevard de la Marquette 7eme étage · Toulouse

Nouvelle soirée du Java User Group Toulousain.

Arnaud Tournier vient nous présenter les technologies blockchain.

Bitcoin, Ethereum, systèmes décentralisés, crypto-monnaie,…

Cette présentation est l’occasion de faire le point sur ce qu’est une blockchain du point de vue du développeur.

Nous y présenterons de manière générale les​ ​grands principes : échanges peer-to-peer, les blocks et le minage, les transactions, la gestion des adresses et des clés cryptographiques,…

Puis un focus sur la plateforme Ethereum,​ ​et notamment le développement de Smart Contract et d’applications décentralisées.

Pour le programme plus en détails, référez-vous aux informations de l’événement meetup.

Adresse : Epitech 4e étage !

Nouvelle soirée du Java User Group Toulousain. Nous allons vous faire découvrir, avec l’aide de Thomas SEGISMONT (@tsegismont sur twitter) , le toolkit Vert.x afin de faire des applications réactives.

Pour le programme plus en détails, référez-vous aux informations de l’événement meetup.

Adresse : Epitech 4e étage !

Nous découvrirons ce soir la programmation en Lisp sur la JVM avec Arnaud Bos. Florian Beaufumé, quant à lui, nous présentera la programmation réactive dans un contexte Spring 5 et Reactor.

Pour le programme plus en détails, référez-vous aux informations de l’événement meetup.

Adresse : A définir

Pour cette nouvelle soirée du Java User Group Toulousain, nous allons rentrer dans les entrailles de notre plateforme préférée avec Sylvain Wallez (@bluxte) aux commandes.

Pour le programme plus en détails, référez-vous aux informations de l’événement meetup.

Adresse : A définir

Cet évènement sera l’occasion de découvrir les solutions de programmation concurrente dans l’univers Java , des plus simples telles que Thread, synchronized ou Executor, au plus avancées comme StampedLock, fork/join ou CompletableFuture.

Pour le programme plus en détails, référez-vous aux informations de l’événement meetup.

Adresse : A définir

Cet évènement sera l’occasion de découvrir les dernières nouveautés autour d’Eclipse. Venez échanger avec d’autres utilisateurs et rencontrer les contributeurs Eclipse.

Pour le programme plus en détails, référez-vous aux informations de l’événement meetup.

Adresse : Harry Cow ( 13 rue sainte Ursule, Toulouse (Plan).

Nous avons l’honneur en ce début du mois de février de recevoir Sébastien Deleuze, qui travaille chez Pivotal dans l’équipe de développement de Spring Framework.

Pour le programme plus en détails, référez-vous aux informations de l’événement meetup.

Adresse : Epitech Toulouse (cf. lien pour adresse exacte, attention l’Epitech a plusieurs sites) (Inscrivez vous).

Les 2 présentations de la soirée :

• Behavior-Driven-Dev­elopment (alias BDD), Shoun Ichida

• Unicode, Frédéric Cabestre

Pour le programme plus en détails, référez-vous aux informations de l’événement meetup.

Adresse : Epitech Toulouse (cf. lien pour adresse exacte, attention l’Epitech a plusieurs sites) (Inscrivez vous).

Les 3 présentations de la soirée :

• Développer des applications Angular 2 100% en Java 8, Arnaud Tournier, 30 minutes • Annotation Java vs. Decorator Python, Didier Plaindoux, 20 minutes • BlueOcean, aperçu rapide de la nouvelle IHM de Jenkins, Baptiste Mathus, 10 minutes

Pour le programme plus en détails, référez-vous aux informations de l’événement meetup.

Adresse : Epitech Toulouse (cf. lien pour adresse exacte, attention l’Epitech a plusieurs sites) (Inscrivez vous).

Présentation de Java EE, Micro Profile, TypeScript et Angular 2 avec Antonio Goncalves et Sébastien Pertus.

Pour le programme plus en détails, référez-vous aux informations de l’événement meetup.

Adresse : Epitech Toulouse (cf. lien pour adresse exacte, attention l’Epitech a plusieurs sites) (Inscrivez vous).

Présentation de SonarQube avec deux développeurs de chez SonarSource, la compagnie éditrice de SonarQube, Nicolas Peru et Michael Gumowski.

Pour le programme plus en détails, référez-vous aux informations de l’événement meetup.

Adresse : Epitech Toulouse (cf. lien pour adresse exacte, attention l’Epitech a plusieurs sites) (Inscrivez vous).

Présentation de Java 9 par Rémi Forax.

Pour le programme plus en détails, référez-vous aux informations de l’événement meetup.

Adresse : Epitech Toulouse (cf. lien pour adresse exacte, attention l’Epitech a plusieurs sites) (Inscrivez vous).

Pour le programme plus en détails, référez-vous aux informations de l’événement meetup.

IMPORTANT: si vous avez envie d’animer un sujet particulier en plus de ceux indiqués, c’est tout à fait possible.

Signalez-vous le cas échéant.

Adresse : Epitech Toulouse (cf. lien pour adresse exacte, attention l’Epitech a plusieurs sites) (Inscrivez vous).

Au programme : une présentation du Workflow Plugin, une présentation du Job DSL Plugin et une présentation d’un retour d’expérience de près de 10 ans d’utilisation de Hudson/Jenkins + comment créer et gérer aujourd’hui une forge qui déboîte.

Cf. le lien Meetup ci-dessus pour les détails de chaque session.

Adresse : Epitech Toulouse (cf. lien pour adresse exacte, attention l’Epitech a plusieurs sites) (Inscrivez vous).

Java pattern matching: SuitCase, par Didier Plaindoux (30 min)

Etant jeune vous vouliez coder en OCaml et Haskell mais voila Java est partout dans l’industrie. Au revoir les lambdas et le pattern matching ! Stop les lambdas dans Java 8 c’est une réalité mais quid du pattern matching ?

Durant cette session je me propose de présenter un design du pattern matching par le biais d’un DSL fortement inspiré de Scala.

Nouveautés et limitations de JMS 2, par Florian Beaufumé (20 min)

Nous allons présenter les nouveautés de JMS 2, l’API Java de messaging, ainsi que ses limitations ou difficultés de mise en oeuvre.

Feign(ant) in action, par Igor Laborie (15 min)

Devant le succès des API REST, nous avons de plus en plus souvent besoin d’implémenter des clients REST en Java.

Feign est une alternative aux solutions plus classique comme http-client, fluent-hc, JAX-RS client (Jersey).

C’est une présentation du type LiveCoding.

Petite intro à Go, par Sylvain Wallez (30 min)

Le langage Go, créé par Google, est de plus en plus présent sur les logiciels d’infrastructure et serveur (Docker, Kubernetes, InfluxDB, Grafana, SyncThings, etc).
Un Java-iste peut devenir productif en Go en 2 jours (je suis passé par là).

La présentation fera une petite introduction au Go pour les Java-istes.

Adresse : Epitech Toulouse (cf. lien pour adresse exacte, attention l’Epitech a plusieurs sites) (Inscrivez vous).

WebSocket avec Java EE 7(Florian Beaufumé)

WebSocket est un protocole de communication récent apportant de vraies communications bi-directionnelles standardisées au web. Nous allons présenter ce protocole, son API JavaScript, l’API Java apportée par Java EE 7, ainsi qu’un retour d’expérience de développement d’application.

The Pluggable Annotation Processing API (Arnaud Tournier)

Avec le doux nom de JSR-269, cette API permet de traiter les annotations présentes dans le code en s’insérant dans le processus de compilation de Java. En ayant accès à l’AST du code, il est ainsi possible de générer du code en fonction des éléments annotés. Tout ceci sans impact sur le runtime ! Mal connue et peu documentée cette API est pourtant puissante et peut s’avérer très utile. Elle est au coeur d’outils comme Dagger, Lombok, Google Auto, Immutables, et d’autres. Nous allons découvrir son histoire et son utilisation. On va même essayer tout cela sur place !

Bio :

Florian Beaufumé est un architecte logiciel et spécialiste Java et web de 17 ans d’expérience. Il a créé sa société, Adeliosys, en 2007 et est depuis un consultant indépendant. Il a travaillé pour des grands comptes, des éditeurs de logiciels, des SSII et des startups dans les domaines tels que les banques, les assurances et l’aéronautique.

Arnaud Tournier est archi-dev depuis plus de 10 ans. Il est consultant dans son entreprise LTE Consulting et développe des produits open source sur github (ltearno).

Attention adresse différente: Epitech Toulouse 14 rue Claire Pauilhac (Inscrivez vous).

On n’est pas que des cobayes: ORM et NoSQL sont-ils solubles? (Emmanuel Bernard) 50min

Vous voulez savoir ce que la persistance dans du NoSQL implique dans une architecture Java?

Java est le fief de l’Orienté Objet où les ORMs poussent comme des champignons. Est-ce que les ORMs apportent encore des bénéfices dans le monde du NoSQL et de la persistance polyglotte? On discutera aussi le pourquoi et le comment du design de données dans le NoSQL.

Comme dans l’émission, On n’est pas que des cobayes, on tentera de faire cohabiter ORMs et NoSQL en y analysant le résultat.

Parmi les défis relevés, on pourra y voir:

  • Peut on survivre avec un seul produit NoSQL ?
  • NoSQL implique-t-il des cauchemardas de duplications de données?
  • JPA et NoSQL c’est comme faire rentrer une pièce ronde dans un trou carré?
  • Les ORMs ne peuvent pas abstraire proprement les modèles de données NoSQL?
  • Les ORMs c’est comme la nitro, ça booste les performances… ou pas?
  • Abstraire les langages de requêtage NoSQL, c’est trop difficile?.
  • Sans l’accès natif aux APIs NoSQL, point de salut?
  • Les ORMs n’apportent pas vraiment de valeur dans un monde NoSQL?

Venez discuter et débattre.

Hibernate BoF 20mins (Emmanuel Bernard)

On prendra le reste du temps pour discuter des autres projets Hibernate:

  • Qu’est-ce qu’Hibernate Search, quels sont les nouveautés?
  • Qu’est-ce qui se passe du côté d’Hibernate ORM?
  • Hibernate Validator, Bean Validation, quésako?
  • [insérer votre question ici]?

On fera ~ 55 min pour la première présentation et ~ 20 mins pour la BoF si ça rentre pour vous.

Multitenancy avec CDI/JPA et Spring/Hibernate (Florian Beaufumé 30min)

Les applications multi-clients, par exemple en cloud, isolent souvent les données de leurs différents clients. Il existe plusieurs stratégies de mise en oeuvre dont la multitenancy qui permet à une unique instance applicative de servir dynamiquement des données isolées de clients différents. Nous allons présenter le principe de multitenancy, ses variantes et montrer deux implémentations Java, l’une à base de CDI et JPA, l’autre à base de Spring et Hibernate.

Bio :

Emmanuel Bernard : https://emmanuelbernard.com/bio/

Florian Beaufumé est un architecte logiciel et spécialiste Java et web de 17 ans d’expérience. Il a créé sa société, Adeliosys, en 2007 et est depuis un consultant indépendant. Il a travaillé pour des grands comptes, des éditeurs de logiciels, des SSII et des startups dans les domaines tels que les banques, les assurances et l’aéronautique.

Attention adresse différente: Epitech Toulouse 14 rue Claire Pauilhac (Inscrivez vous).

Vous utilisez encore des requêtes SQL pour faire des recherches ? Vos utilisateurs vous reprochent de ne pas pouvoir chercher sur toutes les rubriques ? Votre temps de réponse moyen est supérieur à la demi-seconde avec seulement quelques millions de documents ? Il vous faut 3 jours pour produire des statistiques sur vos données ? Vous rêvez d’offrir une recherche “à la google” sur les données de votre SI ?

Ne cherchez plus !

David Pilato, évangéliste chez elastic.co, présentera au cours de la soirée pourquoi et comment il est passé de la recherche SQL à Elasticsearch en détaillant les apports de ce moteur par rapport à une solution pure Lucene.

Agenda:

  • Pourquoi Elasticsearch ?
  • L’indexation
  • La recherche
  • Les agrégations et le principe de navigation par facettes
  • La scalabilité horizontale
  • L’analyse et le mapping
  • La percolation
  • La communauté

Bio :

Depuis 2013, David Pilato est développeur et évangéliste chez elastic.co, après avoir passé les deux années précédentes à promouvoir le projet open-source Elasticsearch. Il en anime la communauté française.

@dadoonet et @ElasticsearchFR sur Twitter

dadoonet sur GitHub

Le programme de la soirée :

  • 18:30 - Mot de bienvenue du TDS et Toulouse JUG
  • 19:00 - ElasticSearch, par David Pilato
  • 20:00 - Apéro Pizza + Boisson/Bière

Cette soirée est organisée en partenariat avec le Toulouse Data Science http://www.meetup.com/fr/Tlse-Data-Science/

L’entrée est libre à toutes les personnes.

Attention les places sont limitées (50 pour le TDS, 50 pour le JUG), RSVP obligatoire.

MongoDB

Attention adresse différente: Epitech Toulouse 14 rue Claire Pauilhac (Inscrivez vous).

Le mouvement NoSQL offre des bases de données simplifiées et distribuables pour gérer plus facilement vos données semi-structurées et pour monter en charge horizontalement sur plusieurs machines. MongoDB est un moteur NoSQL solide et open source qui stocke les données en format JSON.

Il permet de gérer aisément de grands volumes de données et est devenu très populaire dans les communautés. Il est utilisé en production sur de nombreux sites tels que Foursquare, Bit.ly, SourceForge ou GitHub.

Tugdual Grall, Evangelist chez MongoDB, nous fera découvrir MongoDB et les applications possibles avec ce type de base de données. Voici le plan :

Première Partie : Presentation Générale de MongoDB

  • Architecture
  • Langage de requête et d’agrégation
  • Haute disponibilité et montée en charge
  • Management
  • MongoDB 3.0 : quoi de neuf?

Deuxième Partie : Développez votre première application

  • Les Drivers : Java, … et autres
  • Les frameworks et outils de mappings
  • Bonnes et mauvaises pratiques
  • Modélisation des données

Bio

Tugdual “Tug” Grall est technical Evangelist chez MongoDB, et un développeur passionné ! Il travaille actuellement avec les communautés de développeurs en Europe pour faciliter l’adoption du NosQL/MongoDB. Avant de rejoindre MongoDB, Tug a travaillé chez Couchbase (Technical Evangelist) , eXo Platform (CTO) et Oracle (Product Manager/Developer OracleAS JavaEE).

Vous pouvez le suivre sur twitter @tgrall

Cette soirée est organisée en partenariat avec le Toulouse Data Science http://www.meetup.com/fr/Tlse-Data-Science/

L’entrée est libre à toutes les personnes.

Attention les places sont limitées (50 pour le TDS, 50 pour le JUG), RSVP obligatoire.

Le programme de la soirée :

  • 18:30 - Mot de bienvenue et présentation du TDS et Toulouse JUG
  • 19:00 - Présentation par Tugdual
  • 20:00 - Apéro Pizza + Boisson/Bière

Jeudi 26 mars, nous organisons une soirée à cheval sur l’univers Javascript et Java, à partir de 18h30 à l’Epitech, au 40 boulevard de la Marquette (Inscrivez vous).

Yeoman logo

Yeoman par Matthieu Lux: démarrez le développement Web moderne

Un tour d’horizon des outils de développement Web moderne à partir du point d’entrée Yeoman qui permet de démarrer facilement un projet.
Yeoman est l’outil de scaffolding pour le Web moderne. C’est à dire qu’il permet de choisir les briques de votre application et vous initialise un projet fonctionnel.

Après une présentation de l’outil, je parlerai des principaux générateurs qu’il propose, c’est à dire, les différentes structures de projet ainsi que certains principes qu’il promeut sans forcément les implémenter concrètement.
Ces générateurs permettent de mettre en oeuvre un panel très important de technologies du développement Web et des meilleurs outils et frameworks. Nous passerons en revue les frameworks JavaScript MVC , les frameworks d’interface (ou UI), les outils de builds, les systèmes de gestion de dépendances, les langages alternatifs pour le JavaScript, le CSS et l’HTML, le processus de développement, les tests…

A chaque étape, nous parlerons des différentes alternatives, lorsque c’est possible, un exemple de code et / ou une rapide démo.

JHipster logo

JHipster par Julien Boulay: Vous allez adorer les barbus à lunettes

Si Jhipster est classé parmi les 3 générateurs Yeoman les plus populaires, ce n’est pas un hasard : il réunit les technologies les plus plébiscitées actuellement (par les développeurs Web/Java) : Spring Boot et AngularJS.

Après une rapide présentation du projet et des technologies sous-jacentes, je vous proposerai d’initialiser une application “prête à déployer”, en moins de 5 minutes.

Je terminerai par un retour d’expérience sur la mise en oeuvre de projets Spring Boot / AngularJS, avec et sans JHipster.

Matthieu Lux

Matthieu Lux

Développeur, formateur et responsable de l’offre Web au sein de l’agence lyonnaise de Zenika.
Après une solide expérience dans le monde Java, je suis focalisé aujourd’hui sur le monde du Web et du JavaScript. Plus précisément, mes technologies de prédilection sont actuellement Angular, Gulp, Yeoman, Node et React.

J’ai également donné un certain nombre de talks sur Angular au MixIt, mais aussi au DevoxxFR et même au ngEurope.
J’organise également le LyonJS, le meetup JavaScript de Lyon http://www.meetup.com/LyonJS/

J’ai enfin crée un générateur Yeoman generator-gulp-angular qui propose le démarrage de projets basées sur les technologies Angular & Gulp.

Julien Boulay

Julien Boulay

Développeur éclectique chez Ekito, accélérateur de Start-up, Toulouse
Pendant plus de 10 ans, j’ai exercé une double expertise fonctionnelle et technique dans le domaine du PLM (Product Lifecycle Management), pour de grands comptes industriels de l’aéronautique, de l’espace ou de la défense.

Aujourd’hui, je me suis tourné vers le développement d’application web/mobiles, l’agilité et l’accompagnement de start-ups.

Contributeur du projet JHipster, j’ai participé à l’intégration d’une nouvelle option pour son générateur Yeoman (Authentification stateless XAuthToken).

Mes hashtags : Docker, MongoDB, Spring Boot, Play!, NodeJS, AngularJS, Ionic.

Jeudi 11 décembre, nous organisons une soirée en partenariat avec le Cassandra Tour, à partir de 18h30 à l’Epitech, au 40 boulevard de la Marquette (Inscrivez vous).

Présentation de l’association Toulibre

L’association Toulibre qui défend les logiciels libres viendront se présenter pendant 30 minutes.

Introduction à Cassandra 2.1

Nous allons présenter Apache Cassandra 2.1 et son architecture. Nous montrerons comment la base de données peut garantir une scalabilité linéaire, une haute disponibilité tout en gardant un niveau de performance constant. Nous présenterons également le modèle de données sous-jacent et le language CQL pour vous permettre de faire vos premiers pas avec Cassandra.

Drivers et outils pour développeurs Java sur Cassandra

Pour cette deuxième partie de soirée, nous présenterons l’architecture du driver Cassandra, pour montrer comment il simplifie la vie des développeurs Java et les aide à être plus productif. Une sélection de quelques frameworks et outils seront montrés en démo live pour illustrer notre propos.

Duy Hai

Duy Hai est évangéliste technique pour Datastax, l’entreprise commerciale derrière la solution open-source Apache Cassandra.
Il partage son temps entre donner des présentations/meetups/talks sur Cassandra, développer sur des projets open-source pour la communauté et aider les projets utilisant Cassandra.

Avant Datastax, Duy Hai a été développeur freelance Java/Cassandra

Jeudi 20 novembre, nous organisons une nouvelle soirée sur la programmation réactive en Java 8, à partir de 18h30 à l’Epitech, au 40 boulevard de la Marquette (Inscrivez vous).

Warning : la conférence est en Anglais !

Going Reactive with Java 8

Les Lambdas de Java 8 facilitent la construction d’applications Réactives. A travers de nombreux exemples de code, cette session vous montrera comment construire des applications event-driven, scalables et résilientes avec Java 8, Play! Framework 2 et Akka.

Sur la partie web, vous apprendrez à utiliser les lambdas pour des requêtes asynchrones et non bloquantes, ainsi que les Websockets. Vous verrez comment les lambdas facilitent l’utilisation du modèle d’Actor avec Akka pour créer les fondations d’une application event-driven basée sur la concurrence, en cluster et fault-tolerant.

Vous retrouverez donc les sujets suivants :

  • Java 8 et lambdas
  • Play! framework
  • Akka et ses acteurs
  • Websockets
  • programmation réactive
  • event-driven

Nilanjan Raychaudhuri

Nilanjan Raychaudhuri is a consultant/trainer and member of Play framework team. He works for Typesafe. He has more than 14 years of experience managing and developing software solutions in Java, Ruby, Groovy and also in Scala. He is zealous about programming in Scala ever since he got introduced to this beautiful language. He enjoys sharing his experience via talks in various conferences and he is also the author of the “Scala in Action” book.

Jeudi 16 octobre, à partir de 18h30 à l’Epitech qui se trouve à présent au 40 boulevard de la Marquette, nous organisons une soirée sur le récent passage de Spring en version 4 (Inscrivez vous) :

Spring Boot

Spring Boot est une boîte à outils qui vous permet de développer et déployer vos applications Spring en un temps record, grâce a son approche orientée convention plutôt que configuration.

Spring Boot inclut également :

  • Un mode de packaging qui permet de lancer son application avec une simple commande java -jar application.jar
  • Des starters qui sont des dépendances spécialisées pour un usage donné
  • Des endpoints automatiques orientés dev (/beans, /env, mapping) ou devops (/health)
  • Une configuration avancée très simple, tout est personnalisable
  • Il propose un mécanisme d’activation de beans sur condition (par exemple présence d’une classe dans le classpath) très utile
  • Guide de référence: http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
  • Configuration par défaut d’un certain nombre de paramètres via application.properties ou application.yml

En 2014, ne commencez pas un projet Web basé sur Spring sans Spring Boot, il n’y a AUCUNE contre-indication ! Alors venez voir cette présentation.

Quoi de neuf dans Spring 4.0 et 4.1

Spring 4.1 vient de sortir, cette présentation sera l’occasion de vous détailler les nouveautés apportées par cette nouvelle version (ainsi qu’un rappel de celles de Spring 4.0!). Au menu :

  • support de Java 8
  • Amélioration du support JMS
  • Support complet de JCache (JSR-107)
  • Compilateur SpEL
  • Nouveau mécanisme de gestion des ressources statiques
  • support des types génériques pour l’injection
  • annotation @Lazy améliorée
  • Support des JSONView
  • Support des Groovy markup templates
  • Support de JSONP
  • Configuration XML et JavaConfig : ViewController amélioré et ViewResolver
  • Support Websocket, SockJS et STOMP

Brian Clozel

Brian Clozel de Pivotal (société derrière Spring) se déplacera spécialement pour être notre speaker:

Il fait partie de l’équipe Spring Framework; travaille principalement sur les aspects Web et Messaging du framework.
Il occupe aussi la fonction de project lead pour l’application de référence Sagan, qui est en production sur leur site http://spring.io.

Jeudi 25 septembre, à partir de 18h30, nous organisons à nouveau une soirée grâce à vos propositions.

Le CFP organisé il y a quelques semaines nous a permis de vous préparer une soirée intéressante avec des sujets pour tous les goûts ! :-)

L’ordre est encore susceptible d’évoluer, mais voici les différents sujets :

Titre & Speaker Durée prévue Sujet
Vos logs sont une mine d’or avec Kibana!, par Leonardo Noleto 30 minutes Apprenez en 20 minutes chrono à faire parler les logs qui dorment au fond de vos disques. Avec la triade Logstash, ElasticSearch et Kibana transformer les logs en insights et pilotez votre activité business ou technique.
GWT et son nouveau SuperDevMode, par Arnaud Tournier 15 minutes La fin du DevMode tel qu’on le connait dans GWT est proche. Mais tout est prévu pour continuer à débugger le code Java transformé en Javascript dans notre IDE préféré (Eclipse non ?). Venez découvrir la puissance de ce nouveau mode de fonctionnement. Je donnerai aussi quelques indications sur ce qui attends les développeurs et quand, avec les nouvelles version de GWT (Java 8, JsInterop, Web Components, etc…)
Robusta Rest Adapter (Rra), par Stéphanie Pitou, Jean-marc Villatte et Nicolas Zozol 10 minutes Rra est un Work in Progress open source. Quels sont en les objectifs, les doutes et les contraintes ?
L’enquête CORS, par Gildas Le Louarn 15 minutes Fier de votre tout nouveau service REST vous décidez de l’invoquer en JavaScript depuis un navigateur en utilisant JQuery. Patatras, alors que JUnit voit tout vert, rien ne se passe comme prévu. Pour vous, j’ai mené l’enquête ;-)
Démo Glass FluentHttp, par Vincent Ferries 15 minutes Mini présentation du serveur web développé par David Gageot et Jean Laurent De Morlon, Java 8 style inside et de la toute petite application que j’ai faite dessus pour Google Glass.

Un grand merci l’Epitech qui continue à nous accueillir.
MAIS ATTENTION ils ont déménagé : l’Epitech se trouve à présent 40 boulevard de la Marquette, (à Toulouse) quartier Compans Caffarelli.

Mardi 8 avril, nous recevons Stephen Chin, Java Technology Ambassador chez Oracle, mais surtout un hacker un peu fou qui fait le tour du monde des JUG en moto !

Stephen Chin

On continue sur la lancée de Java 8, plus pleins de petites choses amusantes. Au programme : embarqué, internet of things, Lego MindStorms,lambdas et bien plus encore :-)

Pour s’incrire : http://www.jugevents.org/jugevents/event/53388

Le résumé de sa session :

Java 8 Lambdas and Devices

Java 8 is the most impactful update to the Java ecosystem since Java 5, introducing an entirely new programming model with lambda expressions, and a whole new platform of applications with support for ARM embedded devices. In this presentation, you will learn how to take advantage of the new lambda-enabled Java 8 APIs including enhanced collections, functional interfaces, and simplified event handlers. Also, you will see live demonstrations of Java 8 technology running on embedded platforms such as Raspberry Pi and Lego Mindstorms EV3, allowing Java-based applications to support the internet-of-things. Come and learn how to build the future of Java.

Qui est Stephen ?

Stephen Chin is a Java Ambassador at Oracle specializing in embedded and UI technology, co-author of the Pro JavaFX Platform 2 title, and the JavaOne Content Chair. He has been featured at Java conferences around the world including Devoxx, JFokus, OSCON, JFall, GeeCON, JustJava, and JavaOne, where he thrice received a Rock Star Award. Stephen can be followed on twitter @steveonjava, reached via his blog: http://steveonjava.com/, and his hacking adventures can be seen on: http://nighthacking.com/

Pour la prochaine soirée du JUG, on a décidé de tester un format différent de celui habituel.

Le principe est que vous venez avec votre machine et qu’on va pratiquer pour de vrai les sujets.

Les ateliers se dérouleront entre 18h et 21h30 environ. On va en effet essayer de commencer un rien plus tôt que d’habitude afin que le temps consacré aux manipulations soit suffisant pour aller quelque part :-).

Les différents sujets auront bien sûr une trame de fond, mais il est fort probable que l’on se laissera aussi la possibilité de creuser des choses en live en fonction des discussions/demandes.

Les sessions seront animées par une à plusieurs personnes :

Scala Parser Combinators, avec Didier Plaindoux

Vous voulez écrire vos propres analyseurs en Scala ! Pour ce faire nous nous proposons d’explorer les “Scala Parser Combinators” en étudiant par le biais de mini-langages l’ensemble des combinateurs, le principe de règle de production pour finir sur le caractère non-déterministe et les grammaires récursives à gauche !

Hazelcast, avec Sylvain Wallez

Hazelcast : le clustering facile. Au cours de l’atelier, nous construirons un système de chat peer-to-peer, l’ordinateur de chaque participant devenant membre d’une grille élastique et tolérante aux pannes.

Forge (Jenkins & Co), avec Michaël Pailloncy et Baptiste Mathus

L’atelier proposé se basera probablement sur celui donné à l’AgileTour. Mais comme le timing est plus du double, nous aurons l’occasion de creuser davantage (gérer un cluster de Jenkins, comment l’exploiter, stratégies d’IC, trucs & astuces…, etc.).

Autre(s) proposition(s) ?

Si vous avez envie d’animer un sujet qui vous est cher, signalez-vous, on doit pouvoir essayer d’en faire un ou deux de plus max (forcément limité par le nombre de salles, merci encore à l’Epitech pour l’accueil).

Inscrivez-vous vite, le nombre de places de chaque atelier est limité (à 15 pour commencer, il y a 20 places pour gérer une liste d’attente).

Inscrivez-vous !

Plus tard dans la soirée nous enchaînerons avec l’assemblée générale de l’association.

Vous souhaitez vous impliquer dans la gestion du JUG ? N’hésitez pas à venir si vous êtes adhérent. Vous pouvez adhérer sur place aussi :-)

Comme vous le savez sûrement, Java 8 arrive d’ici quelques semaines, normalement fin mars 2014.

Comme le dit Mark Reinhold, le “Chief Architect of the Java Platform", les lambdas sont la plus grosse mise à jour du modèle de programmation depuis toujours – plus encore que les generics.

Nous avons donc trouvé important de planifier plusieurs sessions pour découvrir sereinement toutes ces nouveautés.

Lambdas, from the great closure war to Java 8, an unexpected journey, par Rémi Forax

Rémi est professeur et travaille dans l’équipe qui implémente les lambdas dans le JDK. Il fait partie des deux Expert Groups de la JSR 292, sur invokedynamic, et de la JSR 335 (sur les lambdas, donc).

Abstract :

Une bonne façon de comprendre les lambdas est de repartir de l’historique puis d’expliquer le cheminement pas toujours en ligne droite qui a été suivi pour arriver à la syntaxe et la sémantique actuelle.

Puis je montrerai quelques exemples d’utilisation des lambdas pour illustrer la façon dont les lambdas impactent le design d’APIs.

Pour l’instant j’ai pas prévu de montrer de code assembleur, mais qui sait ?

Inscrivez-vous rapidement sur JugEvents, les places seront chères :-) !

Java 8 : lambdas, Streams et Collectors, le nouveau visage de l’API Collection, par José Paumard

José est professeur, membre du Paris JUG et rompu aux plus grosses conférences. Son talk sur le sujet à Devoxx 2013, il y a quelques semaines, a été parmi les mieux notés par l’assistance.

Abstract :

L’API la plus utilisée du JDK est sans aucun doute l’API Collection. Brillamment conçue il y a un peu plus de 15 ans, elle est encore aujourd’hui au coeur de toutes les applications Java. En 2004, elle a subi son premier lifting, avec l’introduction des génériques. Cette mise à jour, bien qu’importante, n’a cependant pas modifié ses patterns d’utilisation. Avec l’introduction des lambdas en Java 8, l’API Collection est à nouveau réécrite, mais cette fois la situation est différente : ses patterns d’utilisation sont complètement changés.

La première partie de cette conférence introduit les lambda expressions, comment les écrire, et ce qu’elle nous apportent en tant que développeurs. La deuxième partir présente en détail les nouveaux patterns introduits par les API Stream et Collector. Ces nouvelles API vont changer la façon dont nous allons pouvoir traiter les collections de grande taille, y compris en parallèle, avec un modèle de programmation très simple, et des patterns très puissants. Cette puissance sera montrée dans des exemples réels, qui monteront comment Java 8 va pouvoir nous aider à écrire simplement du code efficace et performant.

Les inscriptions ne sont pas encore ouvertes, mais surveillez bien le compte Twitter @toulousejug ou la liste du JUG, nous allons l’ouvrir probablement d’ici mi-décembre.

Le jeudi 28 Novembre à 17h30 à l’N7, avec la présence de Mike Milinkovich, Directeur Executif de la Fondation Eclipse.


Les démos camp Eclipse, c’est deux fois par an (en juin et en novembre) une série d’événement pour rencontrer la communauté Eclipse de votre région.

Celui de Toulouse est co-organisé par le JUG et la fondation Eclipse et hébergé par l’N7.

Le programme est déjà alléchant, mais il reste encore de la place pour un talk de 20 minutes et quelques quickies. Donc envoyez un mail à gael.blondelle@eclipse.org pour proposer votre sujet.

Une fois encore, la soirée sera suivie d’un moment d’échange autour d’un verre et de pizzas.

N’oubliez pas de vous inscrire sur notre page EventBrite. Il n’y aura peut-être pas de la place pour tout le monde!

Le mercredi 16 octobre à 18h30 à l’Epitech par Henri Tremblay, créateur d’EasyMock et Objenesis.

Nous renouvelons l’expérience pizzas de la dernière fois. Si vous voulez avoir le droit de vous en approcher, n’oubliez surtout pas de vous inscrire (sinon, ce sera chips et rien d’autre :-)).

Les lambda expressions en Java arrivent à grands pas. Les génériques sont eux apparus en 2004. Joshua Bloch en a conclut: “Chaque langage a un quota de complexité. Les génériques ont fait exploser celui de Java.”

Et pourtant, les lambda, aussi sexy soient-ils, vont venir ajouter à la complexité. Mélanger aux génériques, il s’agit d’un cocktail explosif.

Cette session remet les compteurs à zéro. Elle vous donne les clés pour maîtriser les génériques, mais aussi leurs liens avec les lambda. Tout pour aborder ces derniers sereinement.

Ce Jeudi 19 Septembre aura lieu à l’Epitech une soirée commune avec nos amis du Toulouse Android User Group.

Inscrivez-vous pour que nous puissions prévoir suffisamment de quantité pour l’apéritif amélioré qui est prévu :-) !

Au programme :

L’horaire sera un tout petit peu décalé à 18h45 pour commencer les conférences à 19h tapante.

A 18h30 à l’épitech, le JUG reçoit Lucian Precup qui démontrera la puissance des moteurs de recherche.

Inscrivez vous

Avec l’approche BigData et l’essor des technologies NoSQL, les moteurs de recherche sont de plus en plus utilisés sur internet et en entreprise. Dans ce contexte, l’Open Source en général et les technologies basées sur le moteur Apache Lucene en particulier sont en plein développement.

Après une introduction permettant de découvrir ce qu’un moteur de recherche peut faire pour votre entreprise, votre site web ou votre application, nous verrons comment mettre en place des serveurs de recherche pertinents, robustes, performants et évolutifs.


Nous verrons ensuite à l’œuvre Solr, ElasticSearch et leur écosystème d’outils et technologies. Pour finir, nous approfondirons quelques subtilités sur l’analyse du texte, la recherche approximative, l’auto-complétion afin de mieux comprendre les forces mais aussi les limites de la magie Lucene.


Consultant indépendant depuis 2010, Lucian a acquis à travers ses missions une expertise sur les architectures NoSQL et les moteurs de recherche, expertise qu’il partage dans différents barcamps, user groups et conférences.

Auparavant, Lucian a développé des logiciels pour l’intégration des données en temps réel chez Business Objects et SAP. Il a rejoint l’éditeur des solutions BI suite au rachat d’une startup issue de l’INRIA - centre de recherche qu’il avait intégré en 2001.

EclipseCon France 2013

Ce Jeudi 16 mai à 18h30 à l’Epitech, nous faisons un Java RoundUp de différents sujets :

Après les News et le Quizz, nous aurons :

  • EclipseCon US & Europe par Mélanie Bats et Benjamin Cabé
  • Convaincre son DSI sur Big Data par Léonardo Noleto
  • Cassandra par Alexis Krier
  • Les outils du Startupeur par Sylvain Wallez et Nicolas Deverge

puis viendront l’apéro et le resto.

Inscrivez vous

Soirée sur l’écosystème JEE6 présentée par Romain Manni-Bucau commiter sur le projet DeltaSpike. Connaissez vous bien la plateforme V6? JEE7 arrive bientôt mais la vraie révolution a déjà eu lieu, réveillez vous JEE6 est déjà là et c’est pas que du conteneur lourd.

Inscrivez vous

  • Rappel sur les forces de CDI/JavaEE 6


  • Codi

    codi

  • Seam


  • DeltaSpike dans tout ça


    • Core utility
    • Security
    • JPA
    • JSF
    • Rappel sur Arquillian


    • Context
    • En 2 mots…
    • TomEE


    • Qu’est-ce? core values.
    • Features avancées
    • dynamic DS, pooling
    • jpa tweaks (log etc)
    • mvn plugin
    • Arquillian TomEE
    • config avançée
    • enrichement custom!
    • mocks?
    • deploy @startup?
    • 3 adapterS?
    • Arquillian OpenEJB
    • All together (demo)
    • Plus loin
    • TomEE

git

Le Jeudi 21/02 18h30 à l’Epitech le JUG organise une soirée Git.

On vous promet une soirée show time, pas de “man git” soporifique.
Un tour de son écosystème vous apportera surement la solution dont vous avez besoin.

L’essentiel

  1. 30 mins : Le moteur de Git et ses principes par Baptiste Mathus

Les process

  1. 15 mins sur Git Flow par Igor Laborie, ou comment ne pas s’emmêler les branches

  2. 10 mins sur Gerrit par Baptiste Mathus, ou comment coder ensemble

Les outils

  1. 10 minutes sur Egit par Igor Laborie versus IntelliJ par Nicolas Zozol

  2. 5 minutes sur Github versus Bitbucket par Nicolas Zozol

  3. Si nous trouvons les speakers : 10 à 20 minutes sur les GitLab, Gitorious, gitosis , gitblit etc.

N’hésitez donc pas à nous envoyer un mail si vous voulez parler de ces outils.

Inscrivez vous !

Après le pot de la soirée, nous enchaînerons avec l’assemblée générale de l’association.

Après l’institutionnelle introduction incluant la vie du JUG, les news et le Quiz, Nicolas Lalevée et François Royer nous parleront jeudi 13 décembre 2012 de la technologie NoSQL Hadoop.

Pour les inscriptions, c’est par là :-).

Big Data et data mining – tour au zoo d’Hadoop.

Hadoop est devenu un socle incontournable pour la fouille de données: ETL, distribution de tâches, collecte et aggrégation, on peut tout faire avec, ou presque.

Nous commencerons par présenter la technologie: l’algorithme MapReduce, son architecture, son déploiement, son utilisation via un eco-système de projets fourmillant autour.

Puis nous entrerons dans un exemple concret d’utilisation : le calcul de statistiques web ala google analytics dans Scoop.it avec Hive. Nous verrons le cas d’utilisation, l’implémentation, l’utilisation, les problématiques de déploiement, de performance.

Puis nous élargirons avec le data mining. Nous passerons en revue les différents algorithmes “MapReduce-able” et verrons pourquoi implémenter soi-même un join sous Hadoop n’est pas une très bonne idée. Des exemples en traitement du langage avec Python et Cascalog seront donnés.

Pensez à vous inscrire sur le site de JugEvents (c’est gratuit).

La deuxième soirée Hero aura lieu ce Jeudi 15 Novembre. Plusieurs juggers toulousains feront une présenation de 15 à 30 minutes.

Vous pouvez vous inscrire ici.

En voici le programme :

  • Méthode Getting Things Done (GTD) par Baptiste Mathus : ou comment organiser sa vie de Développeur

    GTD

  • Développement de plugin Jenkins par Michaël Pailloncy : vous saurez tout pour faire votre propre Plugin.

    jenkins

  • Dessine-moi un DSL par Frédéric Madiot : Une présentation graphique d’un nouvel outil Open Source

    DSL

  • Java FX 2 : what’s new par Sebastien Bordes

    javafx

  • Suit Case Class en Scala par Didier Plaindoux : Scala pris petit bout par petit bout

    scala

Les prezs sont dispos:

Mercredi 24 octobre, à 18h30 à l’Epitech de Toulouse comme d’habitude, nous accueillons Stéphane Epardaud, committer sur le compilateur, et David Festal, développeur de l’IDE associé.

Inscrivez-vous pour réserver votre place !

Stéphane et David nous présenteront le nouveau langage de programmation Ceylon.
Après que David nous aura présenté le langage, David nous montrera le fonctionnement de l’IDE associé.

Le résumé

Ceylon est un nouveau langage de programmation pour la machine virtuelle Java. Nous sommes fans de Java et de son écosystème, cependant nous pensons que le langage Java et ses libraires conçus il y a 15 ans sont désuets face aux challenges actuels.
Ceylon a été conçu avec plusieurs objectifs

  • Facile à apprendre pour les développeurs Java et C#
  • Améliorer le typage fort de Java
  • Fournir une syntaxe déclarative pour exprimer des concepts hiérarchiques (interface utilisateurs, configuration système, etc…)
  • Promouvoir l’approche fonctionnelle par des objets immuables et des fonction d’ordre supérieur
  • Support de la méta programmation
  • Modulaire

Cette introduction à Ceylon vous montrera les fonctionnalités de Ceylon ainsi que les derniers progrès fait sur le compilateur, l’IDE et la communauté autour de Ceylon.

Ceylon IDE

Après avoir présenté le contexte dans lequel a démarré le développement de “Ceylon IDE”, ainsi que les autres outils existants dans le projet, cette session évoquera les objectifs et les contraintes qui ont déterminé les choix de conception initiaux. On évoquera le développement incrémental de l’IDE qui s’est calé sur l’évolution du reste du projet. Enfin on insistera sur les choix effectués pour implémenter l’interopérabilité avec Java et JDT.

Bio

Stéphane Epardaud


Depuis les hautes montagnes de Nice, Stéphane travaille pour Red Hat sur le project Ceylon.

Hacker passionné de Java, C, Perl ou Scheme. Versé dans les standards web et des bases de données, il a travaillé sur divers projets tel qu’un éditeur XML WYSIWYG, une libraire de multi-threading en C, un langage pour agents mobiles en Scheme (compilateur et machines virtuelles), ainsi que des services web 2.0 RESTful et des interfaces web riches en HTML 5 / Javascript.

Avide de partage de connaissance, il va souvent parler dans des conférences tels que Scheme Workshop 2004, l´IUT de Nice en 2008, Polytech’Nice en 2009, le Mars JUG, le Paris JUG et le Riviera Java User Group qu’il a crée avec Nicolas Leroux. Acteur passionné de l´open source depuis le début, il contribute au projet RESTEasy et crée les projets jax-doclets, stamps.js, quelques modules de Play! Framework et travaille sur les projets Ceylon pour Red Hat.

David Festal

David Festal

Après quelques années de C, C++, et autres, David développe en Java depuis l’an 2000, dans des domaines variés tels que les environnements distribués, l’intégration de systèmes, l’analyse et la transformation de langages.

Dans le cadre de SERLI, la SSII où il travaille depuis 15 ans, il a été impliqué dans plusieurs projets OpenSource, parmi lesquels on trouve Sonar, et plus récemment Ceylon.

Affecté à plein temps sur le projet Ceylon par SERLI pendant plusieurs mois, il a principalement travaillé sur le plugin Eclipse pour Ceylon, en posant les bases de ce qui est devenu maintenant “Ceylon IDE”.

Une soixantaine de personnes est venue voir Mathias Seguy nous présenter Android et les bonnes pratiques pour débuter sur des applications sérieuses.

De nombreux goodies ont été gagnés : T shirt du JUG, T shirt Android, clés usb Android, stickers… tant pis pour ceux qui ne sont pas venus ! :-)

L’autre bonne nouvelle c’est que la première captation est dispo sur parleys !
http://www.parleys.com/#st=5&id=3384

A l’avenir toutes les prez devraient s’y retrouver.

Merci à Mathias Seguy de s’être pris au jeu.

Juggy édition spéciale

Comme cela a motivé quelques juggers pour la soirée Android de septembre, on renouvelle pour octobre et on corse un peu le travail :-)

Celle ou celui qui franchira les étapes du challenge (et les aura expliquées) gagnera un T-Shirt du JUG.

C’est parti !

vous devez afficher cette image pour espérer continuer :-)

Android nounours

Ce Jeudi 20 Septembre, Mathias Seguy, toulousain devenu expert Android et speaker à DevoxxFrance, viendra nous présenter cette technologie sur laquelle il a décidé de se spécialiser.
Il dispense d’ailleurs régulièrement des formations Android inter-entreprises.

Nous aborderons les notions et bonnes pratiques élémentaires de ce type de développement. Nous démystifierons également la programmation mobile afin de permettre aux développeurs de s’y lancer à leur tour en ayant en tête une vision globale du système et de son fonctionnement.

L’idée est de commencer par Android et le monde de l’IT puis de partir d’un projet minimaliste possédant une activité et d’élargir la vision : un projet simple, Ressource, Traitement (Handler, AsyncTask), DataBase, ContentProvider, SharedPreference, Service, WebView, Utilisation d’un service Rest, les capteurs).

Nous parlerons enfin des tests et de l’outillage du projet (Junit, Maven, Hudson).

Inscrivez vous !

Neo4j logo

The world’s leading graph database.

Voilà qui annonce le niveau pour la prez de jeudi prochain !

Peter Neubauer créateur de Neo4J nous présentera en anglais ce qu’est le NOSQL et quelles sont les spécificités d’une base graph.

Rendez vous jeudi 14, 18h30 à l’Epitech.

Inscrivez vous sur JugEvents.

Le 26 avril prochain à partir de 18h30 à l’Epitech aura lieu la soirée dont vous êtes le héros, et même les héros .

Voici les trésors que nous allons découvrir :

  • Lambda dans Java 8 (30 minutes) par Didier Plaindoux : Définition d’interface, syntaxe, portée des variables, manipulation de méthodes…


  • Processing Java (15 minutes) par Sylvain Wallez : Environnement Java dédié à la création d’application multimedia interactives (Kinect, pilotage de LED …)


  • Moteurs de Recherche Java (30 minutes) par Igor Laborie : Qu’est ce qu’un moteur de recherche ? possibilités en Java, distributivité


  • Thread et fuite mémoire sous Android (15 minutes) par Mathias Seguy : Tâches de fond et communication avec l’IHM


  • Prototyper un site avec Awestruct et Bootstrap (30 minutes) par Paul Dijou : un prototype beau et fonctionnel sans prise de tête


Et + encore si nous avons du temps.

Un apéro conclura la soirée. Plus de détails sur cette soirée et le formulaire d’inscription sur le site JugEvents.

Venez nombreux, buzzez !

Découvrez Cloudbees

Le 15/03 à l’Epitech, à 18h30, Nicolas de Loof, co-auteur du livre Apache Maven, figure de la communauté Java Française, et leader du BreizhJug vous fera découvrir le cloud en Java!

De plus, pour le premier anniversaire du JUG, nous échangerons sur le mouvement des JUG en France et nous ferons le bilan de l’année écoulée.

Plus de détails sur la soirée, et le formulaire d’inscription sur le site JugEvent.

Venez nombreux et parlez-en autour de vous!

Apache Maven, Version 2 et 3, 2e édition

Apache Maven, Version 2 et 3, 2e édition

Présentation rapide

Ce livre est écrit par Nicolas de Loof (CloudBees) et Arnaud Héritier (eXo Platform), avec de nombreuses participations de la communauté francophone.

Pour rappel Arnaud était venu nous présenter Maven 3 lors de la session du 16 Mars 2011. J’espère que l’on verra Nicolas bientôt sur Toulouse, par exemple pour nous présenter Cloudbees ?

UPDATE : Nicolas viendra justement nous présenter CloudBees jeudi 15 mars 2012, pratiquement un an jour pour jour après la venue d’Arnaud.
Réservez votre soirée !

Ce livre présente l’ensemble des concepts de Maven 2 et 3. Il fait le tour des possibilités de cet outil via un cas concret que l’on suit de bout en bout en utilisant les plugins principaux.

Ce livre ne fait pas une revue détaillée de tous les plugins de Maven, ni de leurs options.

Revue

Bien que je fréquente depuis longtemps Maven je n’ai jamais eu l’occasion d’approfondir le sujet. J’attendais donc de compléter mes connaissances et d’apprendre les bonnes pratiques de Maven.

Contrairement aux livres informatiques que je lis traditionnellement ce livre utilise une approche récréative en faisant intervenir de nombreux acteurs de la communauté de Maven. Ceci rend la lecture plus agréable.

En partant d’un cas concret, il met en évidence la puissance de Maven en expliquant et démontrant les bonnes pratiques, j’avais déjà rencontré beaucoup de ces situations, l’apprentissage en est donc bien meilleur.

Cet ouvrage a globalement comblé mes attentes sur Maven. Il me parait important de mettre en pratique les notions abordées sur un projet concret en parallèle de la lecture.

J’ai trouvé particulièrement intéressant les chapitres qui prennent du recul, en particulier le chapitre 15 qui dresse qui bilan, ainsi que le chapitre 16 qui essai de voir plus loin (OSGi, Modules Java).

Un problème courant lorsqu’on parle des outils comme Maven, ANT, Gradle, … et qu’il est difficile d’isoler l’outil par rapport aux autres outils de la forge logiciel (SCM, Intégration Continue, Procès de livraison, …). Dans ce livre on retrouve une présentation rapide de l’intégration continue (Continuum, Hudson et Jenkins) et des outils de qualité (PMD, Findbugs, Sonar).

De mon point de vu, les outils d’intégration continue prennent le pas sur Maven pour ce qui concerne le contrôle qualité voir du processus de livraison (Continuous Delivery). Cela aurait été peut être hors sujet, mais j’aurai préférer un chapitre complet sur Jenkins mettant en oeuvre tout ceci.

Du coté test JavaEE, j’aurai aimer avoir plus de détail sur Arquillian qui aujourd’hui me semble être la meilleur solution de test dans ce contexte.

Dans le chapitre 14: “Un nouveau projet démarre”, il manque peut être une petite note sur les outils comme Springs Roo ou JBoss Forge, et d’expliquer le positionnement des archétypes Maven vis à vis de ces outils.

Conclusion

Les plus :

  • Livre en français, avec un ton récréatif
  • Complet pour les bonnes pratiques
  • Les situations sont réelles
  • Prise de recul sur Maven

Les moins :

  • Il y a beaucoup d’exemples, j’aurai bien aimé pouvoir télécharger les sources.
  • Plus j’utilise Maven, plus j’ai l’impression que c’est l’outil des années 2000’s, et pas celui des 2010’s.

De mon point de vue s’il faut lire un seul bouquin sur Maven, c’est celui la.

Découvrez JavaFX 2

Le 16/02 à l’Epitech, à 18h30, Sébastien Bordes animera une soirée JavaFX2.

Sébastien nous a alléché en proposant de faire sa présentation 100% avec JavaFX2. Dans le style “Eat your own food”, la soirée donnera donc lieu à une présentation et démonstration de la techno.

Plus de détails sur la soirée, et le formulaire d’inscription sur le site JugEvent.

Venez nombreux et parlez-en autour de vous !

Ce retour fait suite au gain d’une licence JRebel lors de la soirée du Toulouse JUG autour du Framework Play.

Présentation rapide

JRebel est un outil proposé par la société ZeroTurnaround à destination des développeurs ayant pour but d’améliorer leur productivité. Pour cela, il fournit un système de prises en compte à chaud des modifications sans nécessiter le redéploiement de l’application ou le redémarrage du serveur.

Il se présente sous la forme d’un plugin « java agent » à déclarer au niveau de la JVM du serveur d’application et d’un fichier de configuration « rebel.xml » à placer à la racine du répertoire contenant les fichiers « .class » pour chaque application et module du projet. A l’exécution, cet agent surveille les classpath indiqués dans le fichier « rebel.xml » puis agit sur le Class Loader en chargeant les nouvelles versions des classes (d’après ce que j’ai pu comprendre, il s’agit d’un monitoring des classpath en se basant sur les timestamp des fichiers .class pour détecter les modifications).

Pour plus de détails, la documentation et les forums permettent une prise en main rapide pour les cas d’utilisation standards.

Prise en Main

Pour prendre en main l’outil, j’ai effectué les premiers tests sur un projet personnel basé sur Spring MVC avec utilisation de Spring Web Flow, le tout s’exécutant dans le conteneur Tomcat.

Pour les technologies Spring, ZeroTurnaround fournit de nombreux exemples (documentation, FAQ, screencast). La mise en place de JRebel a donc été rapide. Pour les quelques problèmes survenus au démarrage, une recherche sur les forums permet de rapidement cerner les erreurs de paramétrage.

Pour les personnes ayant assisté aux soirées sur Play ou Grails, les présentateurs ont mis en avant la prise en compte des modifications sans redémarrage du serveur parmi les avantages par rapport aux autres frameworks JEE dits « standards ». Avec JRebel, un projet Spring « classique » profite d‘un fonctionnement très proche.

L’apport de JRebel est un plus indéniable pour le développement. Il permet d’améliorer la productivité du développeur aussi bien dans la phase de création que leur de la validation ou du support d’une application. Malgré quelques ratés ayant nécessité de redémarrer Tomcat, ce premier test m’a convaincu de pousser l’expérimentation en condition réelle sur un projet professionnel.

Utilisation en condition réelle

Afin de faire un retour plus pertinent, j’ai configuré JRebel sur mon environnement de développement professionnel. Point important, la société pour laquelle je travaille utilise un framework interne, donc non listé comme pris en charge par JRebel.

Alors que la mise en place fut plutôt rapide pour le projet Spring, la tâche a été beaucoup plus compliquée sur ce second environnement. Après plusieurs échecs, j’ai fini par trouver un paramétrage assurant la prise en compte des modifications pour les projets web principaux, les modules externes étant plus ou moins bien pris en charge.

Après environ trois semaines d’utilisation en condition réelle, JRebel affiche une estimation de 3 heures économisées (pour 14 jours de développement). Toutefois, malgré la prise en compte des modifications, notre framework interne nécessite un redéploiement de l’application web dans la plupart des cas.

La problématique rencontrée n’est pas à mettre sur le compte de JRebel mais sur le fonctionnement particulier de notre framework. Pour que certaines modifications soient prises en compte, la chaîne de démarrage de l’application web est impérative. Pour utiliser JRebel de manière optimale avec ce framework, le développement d’un plugin JRebel prenant en compte ses particularités semble inévitable et met fin à mes tests.

Conclusion

Les Plus :

  • JRebel améliore la productivité de développement. Il peut être également intéressant lors de la phase de support où le nombre de redémarrages peut être élevé
  • Bonne intégration aux différents IDE et gestion de la majorité des conteneurs de servlet et serveurs JEE
  • Gestion d’un grand nombre de frameworks
  • Documentation et support

Les Moins :

  • Solution payante. Il peut être difficile de justifier l’achat sachant que la solution se limite aux développeurs et ne profite pas aux clients finaux en environnement de production
  • Solution complexe à mettre en œuvre avec certaines architectures (problème sur la gestion des modifications sur plusieurs modules externes) ou des frameworks « exotiques »

votre avis

Alors, plutôt Kotlin ou Lucène ?

Grails logo

Découvrez Grails et l’un des projets les plus importants développé en France avec Grails !

Le 19/01 à l’Epitech, à 18h30, Vincent Barrier et Franck Silvestre animeront une soirée Grails.

Ces deux toulousains, grands utilisateurs de Grails, nous présenteront une introduction à Grails, ainsi que l’utilisation de Grails pour développer l’ENT des Lycées de la Région Île de France: Lilie.

Plus de détails sur la soirée, et le formulaire d’inscription sur le site JugEvents.

Venez nombreux et parlez-en autour de vous!

Cette soirée aura été féminine mais surtout performante ;-)

Un retour sur Devoxx où Marianne nous aura résumé les grandes annonces dont celle du premier Devoxx France en Avril prochain.

Claude nous a présenté l’organisation Duchess, ce qui nous a permis de bien comprendre la démarche de ce regroupement. Par exemple, les Duchess apportent également à ses adhérentes des conseils sur l’intégration dans un univers plutôt masculin. Discussion intéressante sur la discrimination positive (celle d’embaucher des filles): Cela n’a pas lieu d’être; la soirée a montré que les Duchess valent bien des Jugger Toulousains.

La présentation sur le thème de la performance a proposé un bon panorama d’un grand nombre de situations sans sombrer dans un cas technique particulier. Claude a placé quelques exemples qu’elle a rencontré lors de son parcours pro, ce qui apportait une touche de concret vu que le thème ne se prêtait pas à l’exposé de code.

L’apéro de fin a permis d’échanger autour du thème de la soirée, et de discuter des thèmes à venir. Le premier trimestre est déjà quasiment bouclé.

Identifiez les problèmes de performances dans vos applications Java !

Le 7/12 à l’Epitech, à 18h30, Claude Falguière, qui a déjà traité ce sujet dans différents JUG et conférences, nous donnera les clés pour résoudre ce problème difficile.

Nous aurons aussi un retour de Devoxx 2011 par Claude et par Marianne Jullien.

Plus de détails sur la soirée, et le formulaire d’inscription sur le site JugEvents.

Venez nombreux et parlez-en autour de vous. Ce sera la première fois que nous accueillerons des Duchess, donc faisons-leur honneur.

Gaël pour le Toulouse JUG.

Jeudi dernier le JUG a renoué avec les speakers du terroir: Sylvain Wallez, toulousain, a présenté Play! framework java haute productivité.

Une présentation qui a repris les grandes lignes de Play! en étant largement accessible aux 80 participants.
3 retours d’expériences ont démontré que ce genre de nouveau framework n’était pas destiné qu’aux plus Geeks d’entre nous mais avait un réel avenir dans les entreprises.

Ce fut aussi l’occasion de présenter nos nouveaux sponsors, Objet Direct et Valtech. Avec ce nouveau soutien, le JUG va investir dans du matériel pour mettre en place une nouvelle communication sur ses présentations (et sponsors).

C’est aussi l’occasion de sonner la fin de la Kro pour le pot, place à la Desperado ;-)

L’habituel quizz a permis à certains d’entre vous de gagner des licences IntelliJIdea, structure 101 et le reference guide Java 7.

L’idée d’une soirée Play! circulait entre les membres du JUG depuis quelques temps. C’est maintenant prévu pour la soirée du 17 novembre à 18h30 !

Au programme : une introduction à Play!framework par Sylvain Wallez, et trois “REX” (Retours d’EXpérience).

L’inscription se passe par ici. Venez nombreux et parlez-en autour de vous.

Introduction à Play! par Sylvain Wallez

  • origine et inspiration (Rails), “oubliez tout ce que vous savez sur J2EE”, la fin du “anemic domain model”,
  • structure d’un projet Play : organisation des répertoires, contrôleurs, modèle et DAO,
  • le “bytecode magic” de Play et ce qu’il apporte
  • méthodes statiques : les plus et les moins
  • développement : save & reload. Maaaagique !
  • déploiement, configuration, monitoring
  • alors, Play ou pas Play ?

REX - Retours d’expérience de projets Play

Nous présenterons 3 retours d’expérience de projet Play:

Projet Meteo France par Docdoku

Portail d’information dont le but est de donner accès aux scénarios climatiques régionalisés français pour l’impact et l’adaptation de nos sociétés et environnements.

Ce portail est constitué de trois parties :

  • Une partie documentaire proche du wiki
  • Une partie simulation qui permet d’afficher des graphes et cartes en fonction de scénarios climatiques sélectionnés.
  • Une partie commande pour obtenir des données climatiques brutes. Cette partie n’a pas été développée avec Play mais branchée sur un existant.

Pierre Fabre par Docdoku

L’application Play est le back-office d’une application iPad, sorte de lecteur de catalogues produits multimédia.

Fonctionnellement l’application est utilisée par les équipes marketing de Pierre Fabre qui créent, grâce au back-office Play (jQuery, HTML5), de beaux catalogues présentant leurs produits cosmétiques mixant allègrement images, vidéos et liens interactifs.

Ensuite, les commerciaux téléchargent sur leur iPad, depuis le reader iPad client de Play, les données et métadonnées constituant le catalogue.

Enfin, sous les yeux de leurs prospects ébahis devant la restitution léchée du catalogue produits, ils n’ont aucun mal à conclure la vente et de renseigner alors la fiche client sur l’iPad.

Celle-ci sera synchronisée avec Play pour une réintégration au CRM sur simple clic depuis l’iPad.

Empreinte par ekito

  • La société Empreinte est spécialisée dans la création et la production de la signalétique touristique émaillée. Etant un des leaders en France dans sa domaine, Empreinte compte parmi ses clients l’acropole d’Athènes, la ville de Saint Tropez et la ville de Deauville.
  • Avec Emoa, Empreinte enrichit son offre de signalétique avec une solution multimédia mobile.
  • Emoa est une application de type CMS qui gère du contenu web, généré en HMTL 5 et JQuery mobile. Au delà d’une simple gestion de contenu, Emoa permet l’organisation du contenu sous forme de parcours et la mise en relation des parcours avec les signalétiques existants par le billet de QR codes.

Quizz and JUG life

Nous sommes déjà en train de préparer le quizz, et cette fois-ci, nous ferons gagner une licence IntelliJ, le livre de référence de Java7, …

Nous devrions aussi vous présenter nos premiers sponsors.

Enfin, comme d’habitude, on terminera la soirée autour d’un apéro/discussion et un repas dans un restaurant alentour pour les plus vaillants.

Terrence Barr speaker international (Brésil, Chine, Japon, Europe, Amériques) a réussi à faire passer le cap des 80 personnes. Une communauté grandissante qui nous encourage tous !

La présentation de Terrence nous a fait plonger dans les nouveautés de Java 7 et survoler celles du futur Java 8. Il a également résumé la philosophie d’Oracle quand à la communauté Java. Un discours qui s’est voulu rassurant et professionnel.

La barrière de la langue n’aura pas découragé les participants de poser des questions toujours aussi pointues.

Le pot de la fin a heureusement fait chuter la température ambiante. Après quelques verres qui ont réhydraté les gorges, les échanges ont continué entre les invités du JUG équipés de leur T-shirt Java 7 jusqu’à la deadline de 21h.

Les plus assidus auront terminé la soirée autour d’une table et de quelques bouteilles de vin français (of course) dégustées par Terrence.

Merci à vous qui avez fait de cette soirée un évènement fédérateur.

Vous retrouverez bientôt la présentation de Terrence ici.

A bientôt.


Pour bien redémarrer, nous organisons un événement Java 7 le 14/09 à l’EPITECH à 18h30. Inscrivez-vous sur le site JugEvent !

Nous aurons le plaisir d’accueillir un speaker international, Terrence Barr, Senior Technologist and Ambassador at Oracle.

Voici la description du talk de Terrence.

Java SE 7: The Platform Evolves

In July 2011, Java SE 7 was released. This evolutionary release brings a host of new features and performance enhancements to the Java platform, designed to increase productivity, re-invigorate the Java ecosystem, grow adoption, and adapt Java to the changing demands of the IT world.

In this talk you will learn about the standards and processes that drive the evolution of Java, the rationale for the changes in Java SE 7, and key new features of the Java platform (Project Coin, NIO2, Fork-Join Framework, The DaVinci Machine, and more). You will also hear about the new operating system platform support and the plans for JVM convergence. Finally, we will conclude with an outlook on Java SE 8.

Soyez la première partie de Terrence !

Pour cette soirée, nous envisageons de faire une première partie avec une démo live d’une nouvelle feature de Java 7. Envoyez votre proposition de démo à toulouse-jug-asso at googlegroups.com.

Faites du bruit !

Nous distribuerons T-shirts et autres goodies. Nous pousuivrons la soirée par le traditionnel apéro/discussion, et les plus passionnés iront dîner en ville avec notre speaker.

Venez nombreux pour cette soirée où nous accueillons notre premier speaker international. Faites passer l’info à vos collègues et amis !

À l’occasion de la sortie de la nouvelle version 3.7 de la plate‐forme Eclipse, nommée Indigo, nous organisons le jeudi 23 juin de 13h à 20h à Toulouse, en collaboration avec  l’association Toulibre, un après‐midi autour du logiciel libre Eclipse, avec conférences et démonstrations.

Les conférences seront animées par des personnalités de la communauté francophone d’Eclipse : Benjamin Cabé (committer sur les projets PDE, e4 et Koneki), Simon Chemouil (committer sur le projet e4), Etienne Juliot (membre du board de l’Eclipse Foundation), Gaétan Morice (committer sur le projet Koneki), etc.

Deux cycles de conférences en français se dérouleront en parallèle, et l’évènement sera clôturé par un apéritif en présence des intervenants.

Le programme riche abordera de nombreux thèmes : Topcased, Osgi, RCP, EMF, EEF, SWTBot, Koneki, Orion, EGit… Le programme complet est disponible sur la page de l’évènement.

Grâce au soutien de nos partenaires Artal, CS, Obeo, OpCoach, l ‘événement est ouvert à tous, libre et gratuit. Il se déroulera à l’ENSEEIHT, 2 rue Charles Camichel à Toulouse (Métro Ligne B - François Verdier).

Alors n’hésitez plus, inscrivez-vous et parlez-en autour de vous !

La soirée - très pointue - sur la gestion des dépendances s’est déroulée devant environ 40 personnes. En voici la présentation SlideShare.

Merci beaucoup à Nicolas Lalevée pour sa présentation, et son travail Open Source.

Le prochain événement de Toulouse Jug, en association avec nos amis de Toulibre, sera l’Eclipse Party le Jeudi 23 Juin, de 13h à 21h.

Réservez votre place sur le site JugEvent !!

News & JQuizz


On réédite la rubrique News & JQuizz.

Avec toujours deux licences IntelliJ Idea à gagner.

N’oubliez pas d’envoyer sur la mailing list les news dont vous voulez parler. La rubrique News, c’est aussi vous qui la faites.

Maven et Ivy vs OSGi : duel au sommet de la gestion de dépendances

Vous aviez aimé la soirée Maven vs Gradle, et la gestion de dépendance dans votre projet est un de vos cauchemars. Nicolas Lalevée, Développeur Java depuis 2005, committeur Apache IvyDE, Ant, Ivy, et mentor du projet Apache EasyAnt viendra nous aider un peu.

Il nous dit:
“La gestion des dépendances, sac de noeuds presque par définition, on va essayer de démêler tout ça.
Après avoir fait un état des lieux avec Maven car il est l’incontournable du moment, nous irons voir comment Ivy peut décrire assez finement et gérer avec souplesse des dépendances. Nous verrons ensuite comment le modèle de dépendances d’OSGi est original et apporte encore de nouveaux concepts. Deux mondes s’affrontent alors, celui de Maven et Ivy face à celui d’OSGi; on tentera enfin d’esquisser un meilleur des deux mondes.”

Apéro & JUGathon

Apportez la cotisation

On finira la soirée autour d’un verre histoire de continuer nos discussions enflammées.

Et aussi, on continue le JUGathon, avec toujours la possibilité d’adhérer à l’association pour la modique somme 20 euros.

La soirée du 21 a été un succès. Malgré une annonce un peu tardive du programme de la session, nous avons tout de même été près de 50 à assister aux présentations de Florent, Bert et Nicolas.

Les supports des présentations :

  • L’intro, les news et le Quiz de l’équipe :
  • HTML5 :
  • Retour d’expérience projet Flex, Spring & Agilité :

Encore merci à tous pour cette soirée.

Réservez votre place sur le site JugEvent !!

News & JQuizz

On vous propose une nouvelle rubrique ce mois-ci:


  • Les news Java du mois qui nous ont marqué (ou qui vous ont marqué si vous nous les envoyez sur la mailing list en mettant [news] dans le sujet).
  • Un petit quizz pour vous réveiller.

HTML5 par Florent GARIN de DocDoku


Florent travaille depuis un moment sur un projet avec HTML5, du web socket, du canvas, du tag video et audio, du CSS3 pour les animations, de la vidéo SIP, …
Donc il nous présentera ce qui nous arrive dans la couche UI au dessus de nos belles architectures JEE. En plus, il vient avec un démo qui déchire du site pour lequel il met tout ça en oeuvre: Webinage.

REX Flex, Spring & Agilité par Nicolas DEVERGE et Bert POLLER, Architectes Ekito.

Retour d’expérience sur un projet dans le domaine de la restauration collective. Projet de 10 mois mené avec Scrum et mettant en œuvre les technos Flex 4.0, Spring 3.0, Maven 3, Hibernate 3.6.

On parlera aussi d’intégration continue avec Jenkins, de gestion de la documentation technique, de conception émergente, de refactoring de base de données, etc.

Apéro & JUGathon

On finira la soirée autour d’un verre histoire de continuer nos discussions enflammées.

Apportez la cotisation

Grande nouvelle, on a enfin eu le retour de la préfecture, donc l’association du JUG est enfin créée.
N’oubliez pas votre chéquier, on sera là pour prendre recevoir vos cotisations de 20 euros.

Nous avons décidé de passer le site du JUG sur Wordpress.

Ca va être plus sympa, mais il faut patienter encore quelques jours.

On y travaille. Stay tuned!

En attendant, vous pouvez vous inscrire sur le Google Group : http://groups.google.com/group/toulouse-jug

La nouvelle équipe du Toulouse JUG a le plaisir de vous annoncer son partenariat avec la conférence What’s Next, organisée à Paris les 26 & 27 mai 2011 au Grand Rex.


Durant deux jours les créateurs de nos frameworks et outils préférés animeront des talks techniques sur Jenkins (anciennement Hudson), Scala, NoSQL, Spring, Clojure… Et bien sûr Java !

Comme l’indique son nom, la What’s Next traitera la question du futur des technologies.
Chaque speaker partagera sa propre vision sur l’avenir de Java.

Les inscriptions viennent d’ouvrir. Notre JUG étant partenaire de l’événement, vous bénéficiez d’une réduction de 25% en entrant le code TOUJUG-25.

Retrouvez toutes les annonces des speakers et talks sur http://whatsnextparis.com/ ou sur Twitter @WsN_Paris.

La prochaine session aura lieu le 6 Octobre 2009 à partir de 18h.

Il y aura deux présentations :

La première sera une introduction générale à Android par Florent Garin (société DocDoku).

Ensuite, Nicolas Fonrose (A2-Artal) nous présentera Google App Engine.

Cela se passera à l’amphi U3 de l’université de Toulouse Rangueil.

A bientôt !

Ce mardi a eu lieu la première session du JUG Toulouse. Beau succès au rendez-vous avec 70 participants.


Merci à l’IUP ISI pour l’accueil. Merci aux speakers pour la qualité des présentations. Et merci aux participants d’être venus en nombre.

Nul doute qu’à l’issue de cette première session, la dynamique est vraiment lancée. La meilleure preuve en est que la mailing liste commence à s’agiter un peu.
Abonnez-vous!

L’équipe du JUG Toulouse.

Après quelques mois de préparation, ça y est, nous sommes en mesure d’annoncer le contenu de notre premier RDV !

Au menu, deux sessions d’une heure avec pour contenu :

GWT par Bruno Marchesson (consultant senior Valtech)

GWT peut aujourd’hui se targuer d’être la seule plateforme RIA réellement Open-Source, et bénéficie à ce titre d’un écho particulier au sein de la communauté.

Au cours de cette présentation, nous verrons les différentes briques logicielles qui font de GWT un véritable framework, les évolutions à venir et les librairies à surveiller.

JavaME par Sylvain Wallez (CTO Goojet)

Java est plus connu pour ses applications serveur, mais c’est aussi la plateforme la plus répandue pour les applications sur téléphone mobile avec Java Micro Edition (J2ME). La présentation exposera les particularités du développement sur J2ME :

  • APIs de base et API optionnelles pour utiliser les services des téléphones comme la photo, la géolocalisation ou l’envoi de SMS
  • outils de développement : preprocessing, obfuscation, packaging
  • contraintes et techniques pour assurer la portabilité, la compacité et la performance

Nous vous rappelons la date et le lieu, il s’agit du 12 mai de 18h à 21h dans l’amphi U3 de l’Université Paul Sabatier. Un buffet clôturera cette soirée.

Nous vous attendons nombreux !

Le JUG Toulousain a pour vocation de fédérer les utilisateurs et développeurs Java de la région Toulousaine.

S’appuyant sur un réseau de partenaires et de sponsors, les JUG proposent gratuitement à ses membres des séminaires, conférences et autres réunions techniques avec pour objet principal l’échange et le partage des connaissances autour de la plateforme Java.

Le JUG Toulousain est constamment à la recherche de sponsors et de généreux donateurs pour assurer la logistique liée à l’organisation de ces présentations techniques.

Pourquoi une telle initiative ?

L’initiative a pour objectif de réunir tous les acteurs du marché Toulousain autour de la technologie Java. En tant qu’intégrateur, utilisateur final ou simple observateur, le JUG est un endroit de partage et de communication. Les sessions techniques couvriront des sujets larges, de l’architecture logicielle en passant par les méthodologies agiles ou les Framework.

Quelle sera la fréquence des sessions ?

L’idée est d’organiser deux sessions trimestrielles en sachant que l’été est peu propice à ce type d’évènement (encore que). En fonction de l’engouement, nous adapterons la fréquence.

Qui seront les speakers ?

Des experts de tous bords et tous origines. Nous solliciterons les speakers du circuit habituel mais aussi des têtes moins connues, parfois des locaux du marché Toulousain. Si vous même souhaitez intervenir et avez des choses intéressantes à nous faire partager, n’hésitez pas à nous contacter.

Où seront organisés ces séminaires ?

A proximité de Toulouse bien entendu. Nous solliciterons les sponsors, les universités et toutes les salles susceptibles de nous accueillir gracieusement. L’idée est de tenir ces réunions de 19h à 20h30 en proposant un apéritif en fin de session pour susciter l’échange entre les différents participants.

Comment devenir partenaire ou sponsors ?

Nous sommes constamment à la recherche de sponsors et de partenaires. Si vous souhaitez faire connaître votre société et votre activité, le JUG est le lieu idéal. Nous affichons votre logo dans la page des sponsors et quelques minutes peuvent vous être consacrées lors d’une introduction de session par exemple. Tout dépend de la nature de votre participation financière. Certaines sociétés peuvent également proposer des goodies aux participants du JUG.

L’aspect organisationnel du JUG est supporté par une association loi 1901 dont les membres fondateurs et bénévoles sont :

  • Président : Florent Garin
  • Secrétaire : Gaël Blondelle
  • Trésorier : Sami Jaber
  • Membre d’honneur : Eric Descargues