Aller au contenu

Yet Another Entrepreneur Blog

Je suis Youen Chéné, fondateur de Webvert, contributeur à Boavizta, advisor au Bear Studio, 10ans+ bénévole à Codeurs en Seine.

Ici, je parle Web, Sobriété Numérique, Programmation, Entreprenariat, Domotique et Rétrogaming (Amiga).

Retrouvez ce blog sur Gemini

Catégorie: Java

Normandy Jug : Présentation GWT Avancé et compte rendu rapide

Hier soir, c'était la 4ème réunion du Normandy JUG avec au programme Android (Par Nicolas Giard le wicket fan boy), GWT avancé (par moi même) et JSF par Gontran Tombette de chez Sopra.

J'ai trouvé la présentation d'Android beaucoup mieux que celle de Google à Le Web. En effet, la présentation par les geeks de chez Google n'était qu'un enchainement de démo (genre Spotify, Shazam et Google Goggles). Pour cela à Rouen il y a Benjamien Anseaume ;-).
Donc, hier avec Nicolas, on a eu le droit à une vision du marché du mobile et des capacités de l'OS. Et c'était très bien!

Pour la présentation JSF 2, j'ai trouvé Gontran très pédagogique. Après, pour le rendu de page de contenu j'ai toujours préféré les frameworks à base de templates genre Velocity et FreeMarker (ou Smarty pour le monde PHP).

Enfin, pour ma présentation j'ai enchainé les obstacles. Pour commencer, je me suis pris une bonne rhino dans la trocnhe, les médicaments m'en remis en forme (enfin presque il parait que je respirais comme Nicolas Hulot, ca devait être beau voir ... tiens).
De plus, il me manquait l'accessoire suivant pour brancher le mac book pro sur une pauvre petite prise VGA (putain 29€ quand même, ils se font pas chier chez Apple).

Etant donné qu'une partie de la présentation devait montrer en mode debug le fonctionnement du Bus Event, je n'ai réussi qu'a faire 2 vidéos à l'arrache (pendant la présentation Androïd en fait) avec ScreenFlow.

Sur GWT, les commentaires restent les mêmes :
  • c'est Google derrière ==> mais c'est pas pire que Oracle,
  • on ne maitrise pas le rendu généré (i.e. on nous cache des choses) ==> c'est le prix à payer pour optimiser pour obtenir de la perf.
  • c'est lent ==> c'est vrai et faux selon les applications (Google Wave est lent, Seesmic Web est très rapide) et les navigateurs (Internet Explorer et les navigateurs modernes).
Sur la rapidité, le truc avec GWT, c'est qu'il y a beaucoup de possibilités et il y donc encore plus facile de faire du code obèse (et donc lent). J'espère que les recommandations de la présentation permettront d'éviter de telles pratiques.

La soirée s'est finie par un repas ou j'ai pu trinquer au .... dafalgan.

Voici donc la présentation GWT Avancé, pour les autres présentations, elles vont arriver sur le site et vous pouvez être prévenu par le twitter.



La présentation est aussi téléchargeable en PDF : GWT Avancé.pdf

J'ajoute aussi les sources de l'exemple. Pour le faire fonctionner vous avez uniquement besoin de eclipse avec les plugins GWT.

Je souhaite aussi ajouter quelques précisions sur cet exemple qui contient l'utilisation du Bus Event et du pattern MVP, en effet, par rapport à la ce qui a été présenté à la Google IO :

Quatrième réunion du NormandyJUG : Androïd, GWT avancé, JSF.

La quatrième réunion de l’association NormandyJUG aura lieu le Mardi 15 Décembre à partir de 18h30, dans les locaux de l’eXia / CESI (à Mont Saint Aignan).

Les thèmes de la soirée sont les suivants :

3 sujets de 40 minutes (oui ça peut marcher !…)

Et encore une fois, grâce à nos amis de chez JetBrains, Des T-Shirts et des Licences TeamCity et/ou IntelliJ IDea à Gagner !!!

3ème réunion Normandy Jug : compte rendu de la battle Maven versus (EasyAnt + Ivy + Gradle)

Le 20 octobre a dernier à lieu l'épique 3ème réunion du normandy jug dans l'amphithéâtre de l'EXIA/CESI.

Le thème de la rencontre était une battle des outils de builds. Malgré les grèves SNCF, étaient présent Gregory Boissinot pour Gradle, Jean Louis Boudard pour EasyAnt et Arnaud Heritier pour Maven.

Merci à eux pour leur présence !

La battle s'est rapidement transformé en un Maven contre le reste du monde et comme d'habitude au Normandy JUG la passion l'a emporté sur la gestion des horaires.

La soirée s'est terminée par un sympathique restaurant.

Comme un twit vaux mieux qu'un long discours voici le récapitulatif de mes twits sur le twitter de normandyjug :
  1. RT @finalspy: Les speakers s'echauffent ! La bataille EasyAnt Gradle Maven s'annonce épique! http://yfrog.com/0oxlnj
  2. Live de la builder battle http://twitpic.com/m92l5
  3. Live de la builder battle http://twitpic.com/m92l5
  4. La scene se prepare http://twitpic.com/m933f
  5. Maven en pleine reflexion http://twitpic.com/m93ec
  6. Ca se prepare http://twitpic.com/m94uy
  7. Le président les mains ds le cambouis http://twitpic.com/m9582
  8. Ça commence ! http://twitpic.com/m95t2
  9. Le sponsor enovea http://twitpic.com/m963s
  10. Gradle par @gboissinot http://twitpic.com/m96hs
  11. Jean Louis boudart pour easyant http://twitpic.com/m96n9
  12. Arnaud "maven" Héritier http://twitpic.com/m96vg
  13. L'historique du build http://twitpic.com/m979i
  14. L'historique du build http://twitpic.com/m979i
  15. Maven c le + bô blablabla... http://twitpic.com/m983g
  16. Ivy c + green http://twitpic.com/m99fd
  17. Ça y est les premières attaques de la battle partent (tous contre maven?)
  18. 2ème attaque contre maven @aheritier reste debout! http://twitpic.com/m9bim
  19. Offensive de @aheritier : maven a devancé et revolutionné l approche du build http://twitpic.com/m9cia
  20. Pause buffet avant les offensives de easyant et gradle
  21. Les wickets boys distribuent les kdos http://twitpic.com/m9ie3
  22. Au tour de easyant http://twitpic.com/m9isq
  23. Attaque en règle contre maven sur la personnalisation des phases projet
  24. Au tour de Gradle http://twitpic.com/m9msz
  25. Attaque surprise de maven sur gradle sur les builds partiels
  26. Arnaud "maven" Heritier fait le show http://twitpic.com/m9nry
  27. Traduction de l'intervention de@aheritier sur maven : c nous qui avons la + grosse
  28. Enfin du code (gradle) http://twitpic.com/m9ppy
  29. Estimation quelques minutes avant la fin: maven a du prendre 50% du tps de parole
  30. Le combat final !!! http://twitpic.com/m9ryy
  31. La conclusion!! http://twitpic.com/m9uci
  32. Conclusion - maven : structure et ROI a moyen et long terme
  33. Conclusion - easyant : productivité et simplicité
  34. Conclusion - gradle : réutilisation de l existant
  35. Conclusion générale : utiliser maven ds sa structure sinon utiliser la flexibilité de easyant et gradle
Ma conclusion personnelle est que Maven est le plus mature, mais attention à ne pas tordre son utilisation. Easyant est sans doute le meilleur moyen pour optimiser à bas coût des projets basés sur de vieux (ou moins vieux) scripts ant. Et Gradle... bah... j'ai un problème irrationnel avec Groovy pour le moment, ca peut changer.

3ème réunion du Normandy JUG : Builders Battle

La 3ème soirée du Normandy Jug présentera plusieurs systèmes de build en Java et notamment Maven, Ant + ivy, EasyAnt, Gradle...
Inscription ici : INSCRIPTION sur JUGEVENTS.ORG

Des invités prestigieux partageront leur savoir et leur passion :
  • Arnaud Heritier : commiter Maven et auteur d'un livre sur le sujet a paraitre en fin d'année.
  • Jean Louis Boudart : leader du projet EasyAnt et commiter Hudson.
  • Gregory Boissinot : commiter Gradle
  • (a confirmer en visio si techniquement possible) Xavier Hanin : créateur d'Ivy !

Cette fois ci nous serons hébergés dans les locaux de l'eXia/CESI grace à Roland Coma professeur dans cet établissement.
Exia.Cesi Rouen
Parc de la Vatine
1, rue Gugliemo Marconi, 76130 Mont Saint Aignan
02 35 59 66 20
web : cesi.fr

Plan sur Google Maps

Venez nombreux !

L'équipe du NormandyJUG.

2ème réunion du Normandy Jug

Le 21 septembre à 19h Le Normandy Java User Group va organiser sa deuxième réunion avec la venue exceptionnelle de membres de JetBrains qui présenterons TeamCity un serveur d'intégration continue. Des licences de Team City et IntelliJ IDEA seront même à gagner !

La réunion se concluera par une rapide présentation de l'AOP ou de la Programmation Orientée Aspect. Les speakers seront Guillaume Lours (Proxiad) @guillaumelours, Sebastien Lecacheur (Prosodie) et Yann Petit (Team Partners - Co fondateur du JUG) @finalspy.

Le lieu n'est pas encore définitif mais mon petit doigt me dit que cela sera du côté de la Vatine à Mont Saint Aignan.

Pour s'inscrire: Inscription NormandyJug

Retours sur le RivieraJug

En vacances dans le var, j'ai fait un détour à Sophia Antipolis pour assister à la 4ème session du RivieraJug dans les locaux de Amadeus.

La première présentation était sur scrum. Le speaker polonais était très tranchant dans ses réponses. Ce processus de développement me plait bien mais il casse un peu les habitudes mais cela à pour conséquence de mal passer auprès des organisations actuelles. J'ai aussi apprécié la citation "Managers don't feel good with scrum ... may be it's because scrum is transparent" (Les managers n'apprécient pas scrum ... peut être que c'est parce que scrum est transparent), le meilleur exemple est celui des réunions quotidiennes ou seule l'équipe de développement est autorisé à parler. Cela change énormément du mode chef de projet qui re-sauce un peut les faits pour avoir une marge de jours pour les corrections post livraisons.

En résumé de ce que j'ai compris, Scrum c'est :
  • Un product owner qui s'occupe de recueillir les exigences et de les prioriser (et les changements d'exigence, dans le process le client a le droit de changer d'avis - cela correspond beaucoup plus à la réalité qu'un projet classique).
  • Le scrum master, qui joue le rôle de facilitateur pour que le process soit fluide (ie un chef de projet qui ne fait pas de planning ou de fliquage mais ajoute de la valeur ajoutée en s'assurant que l'ensemble du process de développement tourne.
  • Une équipe de développement de 2 à 7 membres dont chacun doit prendre les connaissances métiers techniques pour ne pas dépendre d'un départ d'un autre membre de l'équipe.
  • Une vélocité (vitesse d'avancement) qui permet de mesurer le nombre d'éxigences réalisées par sprint. Cela permettra de faire un minimum de planification au fur et à mesure de l'avancement du projet.
La suite est sur les slides.

A voir si le processus est applicable à du développement EAI/ESB ou 70% du travail et des retards sont au niveau des contrats d'interfaces (spécifications). En tout cas pour un projet du type Driveo, c'est le processus que j'utiliserais à partir d'une équipe de 3/4 personnes.

La deuxième présentation sur Groovy m'a un peu déçu, le speaker a souhaité entrer dans les entrailles du code plutôt que de montrer à quoi groovy pouvait servir.

Pour conclure, dommage que le buffet fut court et pas très régional (au normandyjug il y avait du camembert, du cidre, des rillettes, etc... ;-).

Lectures de vacances : rattrapage sur l’architecture de solutions Java avec Rod Johnson

Suite aux conseils d'un indépendant J2EE, afin de compléter d'une part mes compétences d'architecte SOA chez Logica et d'autre part la partie serveur pour Driveo et Fermiers d'à côté, j'ai inclus les 2 livres de Rod Johnson (un des concepteurs de Spring) dans mes lectures de vacances.

Les 2 livres "Wrox / expert one-on-one" sont intitulés :
Si les 2 livres commencent à dater, il en reste au moins 70% de toujours valable. Le premier livre (2002/2003) prend sa source dans les difficultés des projets J2EE à base d'EJB de l'époque. Le deuxième livre sonne la fin des EJBs 2 et annonce les débuts prometteurs du framework Spring.

Il faut savoir que je ne suis pas un fan des EJBs. Je me souviens avoir squizzé des EJBs dans une couche de l'architecture pour gagner en performance et en productivité (le forfait était très fortement dans le rouge...).
De plus, j'utilise Spring pour Driveo et Fermiers d'à côté et le framework me le rend bien en terme de productivité.

Il faut dire que l'aspect pragmatique et l'orientation vers la recouvrance d'objectif métiers de Rod Johnson rejoint très bien l'évolution de ma vision de l'architecture d'un système d'information. Enfin, son combat contre les ayatollah de l'informatique me ravi.

Pour illustrer le propos, voici quelques reprises re-mixées à la Youen des 2 livres :
  • L'approche UML/Génération de code n'as pas d'intérêt en terme de productivité. Cela reste une utopie (et ce n'est mon expérience qui va me dire le contraire). Par contre l'UML reste le meilleure langage d'analyse de la conception d'une application.

  • Les DTO ne servent à rien et ne font que rajouter de la complexité à la communication entre les couches d'une application (DTO= object d'échange entre 2 couches d'une application). Pour Fermiers d'à côté, j'ai presque fini de migrer vers une version sans DTO. Pour Driveo, j'ai commencé sans DTO je n'ai aucun regret.
    Remarque Architecte SOA: ceçi n'est pas valable dans l'urbanisation d'un SI avec un ESB/EAI (avec en plus beaucoup de mode asynchrone). Les DTOs/Objets Pivots permettent un découplage fonctionnel très utile en terme de souplesse, de maintenance et d'évolution.

  • Rod Johnson fournit enfin un discours cohérent sur le choix d'utiliser ou non les procédures stockées.Il faut dire que j'ai entendu tout et son contraire sur ce sujet. En voici les grandes lignes :

    • Il est intéressant d'y placer une logique de persistence pour des raisons de performance et de simplicité. Ex: un éléments avec des sous éléments.
    • Cela ne pose pas forcément un problème de sécurité. La couche de sécurité devant se trouver au dessus de la couche métier.
    • Cela ne réduira forcément le volume de données nécessaire pour que la base de données soit le goulot d'étranglement.
    • De plus cela permet :
      • De mettre à jour plusieurs bases de données depuis une seule procédure stockée.
      • On limite le nombre d'appel parle réseau entre la base de données et le serveur d'application Java.
      • On peut optimiser localement avec du code propre à la base de données.
      • Cela permet de simplifier le code java en cachant de la complexité au niveau de la persistance.
      • On peut réutiliser un historique.

    Enfin, Rod Johnson reste mesuré dans ces propos. Il souhaite éviter les positions de types procédures stockées interdits ou obligatoires. Il faut s'adapter au contexte.

  • Les TDDs est la meilleure approche d'amélioration continue dans le développement d'applications. Le gain est énorme en terme de qualité de livrable et en maintenance. Mon "bon sens" d'ingénieur Arts et Métiers (j'en ai mangé des cours de méthodes et d'amélioration continue pour les lignes d'assemblage mécaniques) me dit qu'une approche TDD apportera de bien meilleurs résultats qu'un chef de projet ceinture noir en CMMI (On peut sans doute dire que je mélange les torchons et les serviettes mais d'un point de vue décideurs/productiviste on atteint le même objectif : réussir et optimiser la réalisation d'applications informatiques de manière répétée).
    Remarque Architecte SOA : dommage que dans le monde des ESB (TIbco, Web Method) on soit très mal outillé sur ce point.
Du coup, j'ai re-priorisé ma roadmap de consolidation :
  1. Construction des test unitaires avec JUnit (afin de diminuer les non régressions sur les nouvelles versions de Driveo) pour passer vers un mode full TDD.
  2. Migration complète vers spring 2.5 (diminution du code avec les annotations, gestion des transactions, ouverture plus facile de services pour la construction du back office).
  3. Tuning (cache, recherche compass/lucene).
  4. Migration de ant vers maven afin de se brancher vers un système d'intégration continu (Hudson) et automatiser la compilation, les tests, le packaging.
  5. Evaluation d'une migration de Ibatis vers Hibernate ou JDO. (Ca tombe bien tout est isolé dans une couche de DAOs).
Du travail pour mon retour de vacances ! (En plus des nouvelles fonctionnalités et du développement commercial de Driveo).

Retour sur la première réunion du Normandy JUG

C'était il y a une semaine au Pôle Normand à Mont Saint Aignan. Le Normandy JUG a réuni près d'une quarantaine de personnes.

La première présentation a été consacré à une "battle" GWT versus Wicket avec Nicolas Giard de Noocodecommit et moi même. La présentation a un peu durée. Nous avons eu pas mal de questions notamment sur GWT qui casse les habitudes de développement Web. De ce fait, je crois même que j'ai du répondre à côté d'une question sur le cache.



La présentation :



Un merci à Nicolas pour avoir relever le challenge, il faut savoir que avant l'organisation du Normandy JUG nous nous sommes uniquement croisé que par mail. Un merci aussi au public qui a fait vivre la session avec ses questions.

La deuxième partie sur l'intégration continue était assurée par Dimitri Baeli de Exo Platform et Laurent Deséchallier. L'objectif était de montrer qu'une petite structure ou une moyenne structure ont la capacité à intégrer un processus d'intégration continue pour leur(s) équipe(s) de développement. Si le débat a un peu trop dévié sur l'intérêt d'une approche orientée tests, nous avons pu avoir un premier aperçu des enjeux, des principes et de l'outillage.

La présentation :



Cette présentation sera sans doute complétée à l'automne par des présentations plus orientées outillage (maven, easy ant etc....). Les tracations sont ouvertes sur le forum du Normandy JUG.

Enfin, un grand merci à Benjamin Anseaume du Pôle Normand qui est resté plus tard que prévu pour accueillir cette première réunion.

Première session du Normandy JUG (et autres rencontres).

Après avoir fait la visite de l'inauguration du Chtit JUG le 13mai sur Java EE 6, la première du Normandy JUG aura lieu le mardi 16 juin au pole normand à 19h au pôle normand (Zone d'activité de la Vatine à Rouen/Mont Saint Aignan).

Au programme, nous avons prévu 2 présentations. Une première "battle" GWT versus Wicket avec Nicolas Giard de NooCode Commit (pour Wicket) et moi même (pour GWT). Elle vous permettra de mieux connaître ces deux frameworks Web et de savoir quand utiliser chacun des deux. La deuxième présentation concernera l'intégration continu avec Dimitri Baeli de Exo Platform France et Laurent Deséchalliers (à confirmer).

L'inscription est rapide et se déroule sur cette page, elle est ouverte à tout le monde.

Au passage, le 9 juin sur Rouen, Proxiad organise le JEE Productivity Tour avec SpringSource, l'inscription est disponible sur cette page.