Honoré d’être nommé Java Champion

Il arrive parfois des événements exceptionnels dans sa vie : je viens d’en avoir un incroyable, probablement le quatrième plus important après la rencontre avec ma femme et la naissance de mes enfants.

Le 11 juin 2013 à 23:15, je reçois un mail intitulé « Java Champion acceptance », envoyé par une personne qui est « Senior Manager, Community Programs, Oracle Technology Network ». Cet email m’informe que ma nomination pour être Java Champion, soumise par Antonio Goncalves, est acceptée et que de fait je rejoins donc la communauté des Java Champions. C’est énorme ...

Aujourd'hui, c'est officiellement annoncé sur le blog Java d'Oracle.

Après Olivier Schmitt (Membre fondateur), Valere Dejardin (Membre fondateur), Vincent Massol (2005), Antonio Goncalves (2009), Agnes Crepet (2012) et David Gageot (2014), je suis le septième français à rejoindre ce groupe.

Forcément, ma première question est : comment puis-je être incorporé dans un groupe de personnes exceptionnelles telles que celles citées précédemment ou Adam Bien, Joshua Bloch, Stephen Chin, Stephen Colebourne, Bruce Eckel, Ben Evans, Dr. Neal Gafter, Brian Goetz, James Gosling, Arun Gupta, Romain Guy, Juergen Hoeller, Stephan Janssen, Rod Johnson, Dr. Heinz Kabutz, Gavin King, Angelika Langer, Dr. Doug Lea, Bob Lee, Kirk Pepperdine, Lars Vogel, Dick Wall, Jim Weaver, … pour n’en citer que quelques unes dans un ordre alphabétique.

Tous ont réalisé des choses remarquables pour la promotion et le développement de Java : des contributions aux JDK, le développement d’un framework largement utilisé, l’organisation de conférences, ... et bien d’autres choses qui ont contribué au développement de Java.

Personnellement, je parle finalement peu mais, par contre j’écris beaucoup et uniquement en français (ce qui n’est pas forcément un avantage concernant un programme international) : plus de 3000 pages dans la version 2.0 en mai 2014. Et c’est vrai que je contribue depuis plus de 15 ans à partager ma passion pour les plateformes Java SE, EE et ME et l’écosystème Java à une communauté francophone qui semble apprécier la littérature qui ne soit pas que dans la langue de Shakespeare, ...

Et voilà, comment Antonio a proposé et soutenu ma nomination afin que celle-ci soit validée. Il est vrai que cela représente beaucoup de travail pour un document consulté par de très nombreuses personnes (plus d’un million de visiteurs annuels) mais selon moi, sans vouloir dénigrer ce que j’ai fait, ce n’est tout de même pas aussi impressionnant en comparaison de ce qu’ont fait les autres Java Champions.

Cependant, c’est tout de même une joie incommensurable et un immense honneur et je ressens une énorme fierté d’être promu Java Champion en ce mois de juin 2014.

Le temps que je me remette de cet événement et je poursuis l’écriture de la prochaine version de mon didacticiel. En attendant sa publication, bonne continuation avec Java d’autant que les sujets ne manquent pas surtout avec Java 8.

Honored to join the Java Champions

Due to my recent appointment, I have (try) to translate my last French post : here it is.

Sometimes exceptional events happens in his life: I have just had an amazing one, probably the fourth major after meeting my wife and the birth of my children.

The June 11, 2013 at 23:15, I got an email titled "Java Champion acceptance" sent by a person who is "Senior Manager, Community Programs, Oracle Technology Network." This email informs me that my nomination for being a Java Champion, submitted by Antonio Goncalves, is accepted and that therefore I join the community of Java Champions. This is tremendous ...

Today, it is officially announced on the blog about Java from Oracle.

After Olivier Schmitt (Founding Member), Valere Dejardin (Founding Member), Vincent Massol (2005), Antonio Goncalves (2009), Agnes Crepet (2012) and David Gageot (2014), I am the seventh French to join this group.

Of course, my first question is: how can I be included in a group of outstanding people such as those mentioned above or Adam Well, Joshua Bloch, Stephen Chin, Stephen Colebourne, Bruce Eckel, Ben Evans, Dr. Neal Gafter, Brian Goetz James Gosling, Arun Gupta, Romain Guy, Juergen Hoeller, Stephan Janssen, Rod Johnson, Dr. Heinz Kabutz, Gavin King, Angelika Langer, Dr. Doug Lea, Bob Lee, Kirk Pepperdine, Lars Vogel, Dick Wall, Jim Weaver, ... just to name a few in alphabetical order. All have made significant things for the promotion and then development of Java: JDK contributions, the development of a framework widely used, organizing conferences, ... and many other things that have contributed to the development of Java platforms.

Personally, I finally speak a few but by cons I write a lot and only in French (which is not necessarily an advantage for an international program): over 3000 pages in version 2.0 in May 2014. And it is true that for over 15 years I share my passion for the Java platform SE, EE and ME and Java ecosystem to the Francophone community which seems to appreciate documentation that is not in the Shakespeare’s language, ...

This is how Antonio has proposed and supported my nomination to it’s acceptance. It is true that it’s a lot of work for a document seen by very many people (more than one million visitors a year), but in my opinion, without denigrating what I did, this is still not impressive in comparison to what others Java Champions have done.

However, it is still an immeasurable joy and a huge honor and I feel an enormous pride in being promoted Java Champion in June 2014.

By the time I recover from this event and I continue writing the next version of my tutorial. Waiting for its publication, good continuation with Java as much as the subjects are not lacking especially with Java 8.

 

Devoxx France 2012

 

Une journée exceptionnelle avec Ippon Technologies

Mes activités extra-professionnelles liées à Java m’ont déjà apportées de nombreuses choses notamment le fait de rencontrer de nombreux passionnés de cette technologie mais je n’aurais jamais imaginé qu’elles me permettraient un jour de vivre une journée exceptionnelle, et le mot exceptionnel n’est pas assez fort, dans le cadre de mes activités sportives durant laquelle je vais assister au Championnat du Monde de Judo à Paris en VIP.

Tout a commencé par une annonce sur le blog d’Ippon Technologies qui annonce l’arrivée de Frédérique Jossinet dans leur équipe grâce à un partenariat avec la Fédération Française de Judo. C’est pour moi, énorme, qu’une société de service en informatique recrute et sponsorise un athlète de haut niveau. Intrigué, je participe au quizz organisé pour Ippon pour l’occasion avec, à la clé, des places pour le Championnat du Monde de Judo à Paris.

Les questions sont très faciles surtout pour quelqu’un qui pratique le Judo depuis 24 ans et prépare sa ceinture noire troisième Dan. Finalement, je reçois un mail d’Ippon qui m’annonce que je suis un des gagnants et me propose plusieurs dates durant la semaine de compétitions. Le choix est vite fait, ce sera le jour de ma catégorie, celle des plus de 100 kilos, celle de Teddy Riner.

Après quelques heures de trajet, j’arrive à 8H30 au POPB et je suis les consignes données par Ippon : c’est l’entrée VIP, accueilli et accompagné par une hôtesse jusqu’à la loge Ippon Technologies, à quelques mètres seulement des tatamis : c’est énorme.

Geoffray Gruel, le directeur général délégué d’Ippon, m’accueille et nous en profitons pour faire connaissance et échanger sur des sujets IT et Judo.

Je fais la connaissance de Stéphane Nomis, le président d’Ippon, qui me propose de venir faire un tour dans les coulisses avec lui pour faire quelques photos. Stéphane est comme un poisson dans l’eau car il connait tout le monde et pour cause, il a été athlète de haut niveau en Judo avant de se reconvertir dans le secteur informatique.

Tout d’abord, honneur aux dames et quelles dames : Frédérique Jossinet (-48kg, nombreux podiums aux championnats d’Europe et du monde, 2eme au JO en 2004), Lucie Decosse (-70kg, championne du monde en 2005, 2010 et 2011, 2eme au JO en 2008) et Audrey Tcheuméo (championne d’Europe et du monde en 2011).

Je rencontre aussi deux jujitsukas, des combattants exceptionnels : Bertrand Amoussou (champion d'Europe par équipe de Judo, 4 fois champion du monde de JuJitsu expression combat notamment en 1996 à Paris où je l’ai vu pour la première fois, vainqueur au Pride FC au Japon) et Vincent Parisi (un palmarès incroyable, commentateur sportif des UFC sur RTL9).

Quelques judokas de « ma génération » qui ont marqué, parmi d’autres, l’histoire du Judo français : Frédéric Demonfaucon (3eme au JO en 2000, champion du monde en 2001, 6eme dan ) et Larbi Benboudaoud (Champion d’Europe en 2003, 2eme en 2006, 3eme en 2004, 2005, 2007, 2eme au JO en 2008).

Et enfin et non des moindre, Roger Vachon du Levallois Sporting Club, le club de Teddy Riner.

Je déjeune avec l’équipe d’Ippon dont Frédérique Jossinet qui, en plus de ses qualités d’athlète de haut niveau avec un mental de fer, est aussi très sympa et accessible : nous discutons et elle m’apprend qu’elle vient d’être promue au grade de 6eme Dan et qu’elle commente les championnats du Monde pour France télévision.

Un judoka se démarque très nettement des autres durant cette journée : Teddy Riner. Je présume que la pression doit être forte car il est chez lui, à Paris, il est le favori de sa catégorie et il brigue un cinquième titre mondial pour la première fois dans une catégorie masculine alors qu’il a que 23 ans.

Forcément avec 12000 spectateurs, majoritairement français, l’ambiance à chaque arrivée de Teddy et de ses victoires est indescriptible et mémorable.

Les éliminatoires pour Teddy sont une simple formalité : chaque combat est gagné facilement. Sa domination dans sa catégorie est littéralement phénoménale et probablement outrageante pour ses adversaires : il domine tellement que le néophyte pourrait croire que ces adversaires ne sont pas les meilleurs mondiaux. Deux de ses combats sont gagnés en moins de 35 et 45 secondes, le temps d’installer son kumikata et de lancer une projection foudroyante.

Dans la catégorie des +100kg, généralement les combattants rivalisent avec leur poids, Teddy Riner fait figure d’exception avec une corpulence athlétique affutée impressionnante : 2m03, 130 kg. Il a perdu 10kg pour préparer ces championnats.

Bien sûr, sa puissance doit expliquer la domination de Teddy mais c’est aussi et surtout un technicien hors pair, ce qui est plutôt rare dans cette catégorie. Lors de ses victoires, Teddy nous a fait un festival technique : uchi mata magistral avec une vitesse d’exécution digne d’une catégorie de léger, étranglement au sol, enchainement o uchi / ko soto … du grand Judo.

Cela doit aussi être dû à un mental d’acier : malgré la pression, Teddy semble décontracté et ne laisse exploser sa joie que lors de sa victoire en finale.

Teddy Riner est aujourd’hui la référence mondiale dans sa discipline et vu son palmarès actuel et sa jeunesse, il pourrait bien devenir le judoka le plus titré de tous les temps. Après David Douillet, si un second français obtient ce titre, le Japon pourrait préparer une journée de deuil national.

En tout cas, cette journée restera pour moi exceptionnelle et mémorable : un grand merci à Ippon Technologies et particulièrement à Stéphane Nomis et Geoffray Gruel pour m’avoir permis de vivre cela.

Ces dernières années, plusieurs SSII à taille humaine se sont démarquées en mettant l’accent sur la technologie, sa pratique pour leurs collaborateurs et leur investissement dans la communauté Java notamment dans les JUG. C’est notamment le cas pour Ippon mais Ippon Technologies va encore plus loin en proposant un investissement dans le sport mais aussi dans les études grâce à des implications dans certaines écoles. Je trouve cela particulièrement intéressant.

Si vous recherchez du conseil ou de la prestation de haut niveau, notamment dans les technologies relatives à Java, sur Paris, Nantes ou Bordeaux, vous pouvez consulter et solliciter Ippon Technologies.

 

Cinquième et dernière journée à Devoxx

La dernière keynote n’est pas faite par James Gosling mais par six représentants de la communauté Java de différents horizons pour débattre sur des questions relatives au futur de Java :

  • Joshua Bloch de Google
  • Mark Reinhold d’Oracle
  • Antonio Goncalves du Paris JUG
  • Jurgen Hoeller de Spring Source
  • Stephan Colleburn
  • Bill Venners

Plusieurs questions sont abordées : compatibilité des prochaines versions, impact d’Oracle sur la communauté, la licence du TCK, Android est il le standard sur les appareils mobiles, .Net peut il inspirer les évolutions de Java, l’utilisation d’OsGI pour la modularité de Java 8, le JCP, ...

 

Creating lightweight applications with nothing but vanilla JavaEE 6

Adam Bien est un excellent speaker possédant une excellente connaissance de Java EE 6 (Java Champion, Java Rockstar, homme Java de l’année).

Après quelques slides, Adam lance Netbeans et code en live pour démontrer la puissance et la simplicité de Java EE 6. L’idée importante à retenir c’est que les design patterns de J2EE ne sont plus adaptés à Java EE.

 

Voilà Devoxx est terminé : la semaine est passée très vite.

Le bilan est très largement positif : une organisation bien rodée, des speakers et des sujets intéressants, de nombreux francophones, les soirées de Devoxx mémorables, ...

Comme d’habitude, on repart de Devoxx avec de nombreux sujets à regarder avec entre autre pour moi : Google Caliber, Vaadin, ...

Comme l’année dernière, les universités et les conférences seront publiées gratuitement sur Parleys.com tout en long de l’année.  Pour les impatients et pour soutenir Devoxx, il est aussi possible de consulter très rapidement toutes les présentations moyennant le somme modique de 79 euros comparativement à la richesse et la qualité du contenu. 

 

Quatrième journée à Devoxx

The future roadmap of Java EE

Cette keynotes initialement prévue par Roberto Chinicci est animée par Jérome Dochez, Linda DeMichiel et Paul Sandoz.

Jerome Dochez nous propose les grands axes de réflexions des prochaines versions de Java EE dont la préoccupation majeure sera le cloud.

La modularité devra attendre Java SE 8 donc elle ne sera au programme que dans la version 8 de Java EE mais Java EE 7 devrait revoir les spécifications des classloaders.

Certaines API seront aussi enrichies :

  • JSF : la version 2.1 sera une release mineure mais la version 2.2 proposera un support d’HTML 5
  • JMS : une évolution de cette API historique et importante est prévue
  • JPA : support des procedures stockées, ...
  • JAX-RS 2.0 devrait comporter une API pour la partie cliente, utilisation de @Inject, ...

 

Comparing JVM Web Framework by Matt Raible

De l’aveu du speaker et d’une très large majorité de l’assistance présente dans la salle pleine, le nombre de frameworks pour le développement d’applications web en Java est trop important (JSF, Wicket, Tapestry, Spring MVC, Struts 2, Stripes, Vaadin, ...).

Matt a choisi un sous ensemble de ces frameworks.

Matt nous propose 20 critères de sélection : Developer productivity, developer perception, learning curve, project health, developer availability, job trends, templating, components, ajax, plug-ins/add-ons, scalability, testing support, i18n, validation, multi-language support, quality of documentation/tutorials, books published, REST support, mobile/Iphone support, degree of risk

Cette liste de critères est une bonne base même si quelques un me semblent moins importants que d’autres.

Matt nous livre une matrice de comparaison dont les meilleurs sont : Spring MVC, GWT, Grails, Wicket et Ruby on Rails qui ne fonctionne pas sur la plateforme Java mais il est très répandu.

Il nous précise cependant qu’aucune pondération n’est appliquée dans ces résultats. La définition des priorités dans les critères et l’application de pondérations correspondantes est cependant très importante lors de sa propre évaluation.

Matt nous livre les avantages et inconvénients des frameworks les mieux notés et quelques statistiques (offres d’emplois, représentativité chez Linkedin, Google trends, questions sur StackOverflow, ...).

Pour faire son choix, Matt nous recommande de mettre une priorité sur les critères de choix, de sélectionner quelques frameworks et de réaliser un même prototype avec chacun et d’utiliser les résultats pour choisir celui qui sera utilisé.

 

OpenJDK par Dalibor Topic

Dalibor Topic d’Oracle nous parle du projet Open JDK.

Oracle prévoit de fusionner la JVM Hotspot et JRockit (la JVM de BEA) et de contribuer à Open JDK avec le résultat.

Le JDK et le JRE seront toujours diffusés gratuitement. Oracle prévoit une version Premium payante qui inclus JRockit Mission Control, JRockit Real Time et Java for Business and Enterprise support.

En octobre, IBM a annoncé sa participation active au projet Open JDK.

Le JCP reste l’organisation en charge des spécifications des évolutions des API et des plateformes Java.

En Novembre, Apple a annoncé aussi sa participation à Open JDK pour permettre le développement d’une version 32 et 64 bits de la JVM sur Mac OS.

Le projet communautaire Open JDK , lancé en 2006, a pour but de fournir une implémentation open source de la plate-forme Java SE.

 

Extending VisualVM par Kirk Pepperdine

Kirk Pepperdine, expert en performance, nous propose dans sa présentation comment développer un plug-in pour l'outil VisualVM.

Kirk nous rappel que le tuning de la performance nécessite une bonne connaissance de la technologie, des outils et de la méthodologie. Il ne faut pas tuner une application mais un système dans son ensemble (hardware/OS, JVM, application, acteur). Il faut prendre en considération les activités de chaque strate mais aussi les interractions entre chacune de ces strates.

VisualVM est un outil qui permet de monitorer un JVM en combinant des fonctionnalités d’autres outils comme JConsole, jvmstat, JVMTI, JMX, ...

VisualVM utilise la plateforme Netbeans Rich Client et propose donc un système de plug-in.

Kirk passe en revu les API à utiliser pour développer un plug-in qui affiche des informations graphiques.

 

HTML 5 fact and fiction par Nathaniel Schutta

Une présentation de l’état d’HTML 5 et de ses perspectives.

Il ne faut plus tenir compte de IE6 qui ne concernerait que 5% des navigateurs utilisés : Google Apps et même Sharepoint 2010 ne proposent plus de support pour IE6.

Le support de HTML5 est partiel dans les différents navigateurs : il est important de détecter si une fonctionnalité précise est utilisable ou non. Cela peut se faire à la main mais il est préférable d’utiliser la bibliothèque Modernizer.

La guerre du ou des formats supportés par HTML5 est loin d’être terminée entre Ogg, H264 et WebM.

Les nouveaux types de saisies de données devraient faciliter leurs saisies notamment sur les appareils mobiles.

 

The Java modular Platform

Mark Reinhold nous présente la prochaine évolution majeure de la version 8 de Java SE : la modularité de la plateforme.

Ceci devrait mettre un terme au jar hell, améliorer les performances (téléchargement et démarrage) et utilisable sur les appareils mobiles.

L’idée de supprimer le classpath et de générer des modules natifs (rpm, deb, ...)

Le projet Jigsaw travail sur l’implémentation de cette modularité qui doit tenir compte de plusieurs fonctionnalités : grouping, dependance, versionning, encapsulation, optional modules et virtual modules :

  • Le grouping se fera en utilisant le mot clé module.
  • Les dépendances seront précisées avec le mot requires dans définition du module.
  • L’encapsulation sera précisées avec le mot permits dans définition du module.
  • Les modules optionnels seront précisés avec les mots requires optional dans définition du module.
  • Les modules virtuels seront précisés avec le mot provides dans définition du module.

Une nouvelle command, jmod, permettra de gérer les modules (add-repo, install, ...)

La commande jpkg permettra de créer des modules natifs.

La préoccupation principale est la compatibilité qui devrait être respectée sauf dans des cas spécifiques.

 

Java Puzzlers – scrapping the bottom of the barrel par Joshua Bloch et William Pugh

Les puzzlers de Joshua Bloch sont une session enrichissante et instructive. De surcroit Joshua est un orateur exceptionnel qui assure le show : la salle est donc pleine. William Pugh n’est pas en reste puisqu’il est co auteur de l’outil Findbugs.

6 puzzlers ont été proposés pour se rendre compte encore une fois que Java et ses API possèdent de nombreuses particularités.

 

Troisième journée à Devoxx

La keynotes "Welcome and Intro"

Stephan Jansen nous accueille pour cette première journée de conférences.

Ils nous proposent quelques chiffres qui confirment, même si cela n’est pas nécessaire, l’importance de Devoxx : 3000 participants, venant de 40 pays d’Europe bien sûre mais aussi Canada, Australie, Brésil, …, 110 speakers, 300 étudiants, 67 JUGs (dont le Lorraine JUG et le Yajug), 27 partenaires dont Oracle, JBoss et Adobe, 13000 repas, 7200 croissants, …

Face à ces chiffres, il y a une équipe de 25 personnes pour l’organisation qui est bien rodée.

Cette année, le réseau a été nettement amélioré grâce à 10 modems VDSL2 : utiliser le net n’était plus une contrainte et c’est très appréciable.

L’exposition des données, via des services Restful, concernant les informations relatives à Devoxx a permis le développement de clients dans différentes technologies (Vaadin, Scala, …) pour différentes appareils (IPhone, Android, …) par différents contributeurs.

Stephan nous parle ensuite de Parleys.com : comme l’année dernière toutes les sessions seront diffusées gratuitement tout au long de l’année et il sera possible de souscrire pour 79 euros pour les consulter toutes dans un futur proche pour une durée d'un an. Une nouveauté cette année, les keynotes sont diffusées en live sur Parleys. La version 4 apporte quelques nouveautés sympathiques (nouveau publisher, support mpeg4, client HTML5 pour IPad, …).

 

Java SE : the road ahead par Mark Reinold

La seconde KeyNotes est proposée par Mark Reinhold, chief architect of the Java plateform chez Oracle.

Mark nous propose un rapide historique de Java : de la version 1.0 (1996) principalement utilisé pour développer des applets, 1.1 (1997), 1.2, 1.3, 1.4, 5.0 avec de nombreuses évolutions dans le langage lui même, jusqu’à la version 6.0 (2006).

Les axes de développement des prochaines versions de Java sont : productivité, performance, universalité, modularité, intégration et servisability

Mark aborde plusieurs sujets concernant les évolutions du langage en cours de travail :

  • Le projet Coin propose quelques évolutions syntaxiques : diamond, try with resources, improved integral literals, string in switch, varargs warning, multi-catch et precise rethrow
  • La performance, elle devra être assurée en exploitant le nombre croissant de cœurs des processeurs.
  • Le projet Lambda : http://openjdk.java.net/projects/lambda/
  • La reification des generics pour faciliter leur utilisation
  • Les properties
  • Le projet DaVinci (JSR 292) concernant Invoke Dynamic
  • Le projet Jigsaw : la modularité est un vaste chantier qui vise à supprimer le classpath en utilisant des modules plusieurs formats (jar, jmod, rpm, deb) : un rapprochement vers Maven est envisagé au détriment de OsGi

Java 7 devrait être diffusé courant 2011 et devrait contenir entre autre : le projet Coin, Invoke Dynamic, fork/join framework, NIO 2.0, Unicode 6.0, JDBC 4.1, Swing Nimbus, …

Java 8 devrait être diffusé fin 2012.

D’ailleurs plusieurs JSR ont été soumises au JCP :

  • JSR 334 : Small langage ehancements (Project Coin)
  • JSR 335 : Lambda Expression (Projet Lambda)
  • JSR 336 : Java SE 7
  • JSR 337 : Java SE 8

Mark reprécise l’ordre des priorités concernant Java :

  1. : Maintenir Java comme le numéro un
  2. : Générer des revenus indirects
  3. : Générer des revenus directs
  4. : Réduire les couts

Le projet Open JDK prend de plus en plus d’importance notamment avec l’implication d’IBM et Apple.

 

La keynotes State of the web par Dion Almer et Ben Galbraith

Ben Galbraith et Dion Dalmaer nous proposent une seconde keynotes sur l’état du web avec en ligne de mire les apports d’HTML 5 et de ce qu’il va apporte dans un futur proche.

HTML 5 propose de nombreuses fonctionnalités : CSS3, géolocalisation, web workers, web storage, web sockets, canvas, Web GL, …

Les sites web ont évolués et évoluent encore, la preuve avec les sites web d’Apple et de Disney à la fin des années 90.

La montée en puissance d’HTML 5 est accélérée par l’accroissement des plateformes mobiles et donc des applications mobile. HTML 5 se présente comme la solution multiplateforme. Même Microsoft l’a bien compris avec son repositionnement de Silverlight, lui préférant HTML 5 pour les applications web.

 

Reflection Madness par Heinz Kabutz

Heinz Kabutz diffuse des articles périodiquement sur le site javaspecialists.eu : leur lecture est particulièrement enrichissante.

Heinz nous offre une session technique sur l’utilisation avancée de la reflection.

La reflection est parfois décriée notamment pour ses performances mais elle permet une flexibilité et de faire certaines choses impossible autrement. Le reflection n’est aussi pas utilisable sans risques (code complexe, performance, détections de certains problèmes uniquement au runtime).

Heinz nous propose quelques cas d’utilisation, pour certains potentiellement dangereux, avec du code en live :

  • accès à une variable private
  • violer l’intégrité des objets de type Integer
  • Exemple :

    Field value = Integer.class.getDeclaredField(« value ») ;
    Value.setAccessible(true);
    Value.set(42, 43);
    System.out.printf(“Six times seven = ”, 6*7);
    // affiche Six times seven = 43
  • déterminer la taille d’un objet en utilisant la classe Instrumentation
  • déterminer la classe appelante en utilisant la classe sun.reflect.Reflection
  • utiliser la stacktrace d’une exception pour créer dynamiquement un logger pour la classe
  • modifier le contenu d’un champ déclaré final
  • modifier le contenu d’un champ déclaré static final (sur une JVM sun) en utilisant la classe sun.reflect.ReflectionFactory
  • créer dynamiquement une nouvelle valeur dans une énumération
  • créer un objet sans invoquer le constructeur (sur une JVM Sun) en utilisant la classe sun.misc.Unsafe

Cette session est surement une des plus avancée techniquement auxquelles j’ai pu assister.

 

The next big JVM language par Stephen Colbourne

Stephen Colbourne nous propose sur une réflexion sur ce que devrait avoir le prochain langage phare de la JVM.

Java a 15 ans, plus de 10 millions de développeurs l’utilise et est largement répandu en entreprise. Ces principaux buts lors de sa création étaient : simple, orienté objet, robuste, sécurisé, portable, interprété, multithread et dynamique : il est largement inspiré de C, C++, Smalltalk, Modula, … dont les enseignements ont été pris en compte dans Java (pas d’héritage multiple, pas de surcharge des opérateurs, utilisation des exceptions, …)

Parmi les principales fonctionnalités, on retrouve : OO, typage static, les interfaces, les packages, les exceptions checked, unicode, la reflexion, les classloaders, les threads, …

Les concepts de la JVM ne sont pas nouveaux mais ils assurent le succès de Java : portabilité, sécurité, gestion de la mémoire, ...

Mais Java souffre de son ancienneté : certains choix historiquement bon ne le sont plus forcement maintenant, par exemple :

  • les exceptions checked (bonne idée théorique mais mauvaise en pratique car le code ne peut pas savoir si l’appelant sera en mesure de gérer l’exception)
  • les primitives : utilisées pour des questions de performance
  • arrays
  • les monitors (utilisés avec le mot clé synchronized) : une approche simple mais maintenant peu adaptée
  • static
  • surcharge des méthodes : difficile pour les développeurs et le compilateur
  • wildcards dans les generics : avec une implémentation qui utilise le concept d’erasure pour maintenir la compatibilité ascendante
  • patterns : il y en a énormément dans Java (Javabeans, reflexion, immutability, factory, ...)

Java évolue difficilement car il faut maintenir la compatibilité même si elles sont possibles (voir Java SE 7 et 8)

Le prochain langage majeur de JVM devrait prendre compte les enseignements tirés de Java : avoir des propriétés, les closures, function type, method references, gestion des null, être bien outillé, ...

Le prochain langage majeur de la JVM n’est ni Scala, ni Groovy , ni Fantom : il n’est pas encore là mais cela pourrait être un « Java NG » incompatible avec Java.

 

Vaadin – rich web applications in Java without plug-ins or Javascript

Joonas Lehtinen est le fondateur et CEO de Vaadin.

Vaadin repose sur le concept de server-side RIA. Joonas nous expose les points forts et les points faibles de ce concept notamment la montée en charge puisque l’état est conservé côté serveur et qu’une application Vaadin ne puisse pas fonctionner en mode offline.

J’apprécie toujours lorsque l’on parle des points forts mais aussi des points faibles d’un produit, d’un outil ou d’une technologie.

Les points forts sont la vitesse de développement (vraiment démontrée lors de la démo) et la richesse de l’interface qui utilise GWT.

La démo live de 20 minutes m’a bluffé en développement from scratch une application web capable de lister des documents HTML contenus sur le serveur, d’en sélectionner un pour l’afficher ou le modifier.

La présentation m’a vraiment donné envie de regarder Vaadin dont j’entends parler depuis un moment.

 

Performance anxiety par Joshua Bloch

La salle est archi-comble avec de nombreuses personnes devant l’écran assises par terre (j’étais moi-même dans les escaliers). Joshua Bloch et le sujet de la performance font recette.

La présentation courte mais intéressante insiste sur le fait que la mesure de la performance est maintenant très complexe.

Le benchmarking est une activité très complexe. La performance peut revétir plusieurs aspects : disponibilité, temps de réponse, temps de latence, throughput, ...

La mesure de la performance peut prendre différentes unités : instructions par seconde, utilisation des ressources, utilisation de l’énergie, ...

De nombreux facteurs peuvent modifier les résultats de l’exécution d’un benchmark.

Il faut effectuer des séries de mesures et calculer des statistiques sur les résultats. Les benchmarks doivent reposer sur des outils qui mettent en œuvre des best practices comme Google Caliber par exemple.

 

Improve the performance of your Spring App par Costin Leau

Costin Leau nous présente l’intégration et l’utilisation de caches dans la prochaine version de Spring (3.1).

L’utilisation de cache est la solution la plus commune pour améliorer les performances et ce à tous les niveaux : OS, serveurs, applications (ORM, pages web, injection de dépendances, réplication de sessions, …)

Pour aller encore plus loin, notamment en permettant la distribution des caches, il y a les data grids (GemFire, Gigaspaces, GridGain, Terracotta, Coherence, …)

La prochaine version de Spring (3.1) propose de faciliter l’utilisation des caches dans les applications en offrant une abstraction utilisable via les annotations @Cacheable, @CacheEvict.

 

Une journée Java EE 6 à Devoxx 2010

J'ai consacré toute ma seconde journée à Devoxx à Java EE 6.

 

Java EE 6 Tutorial : Reloaded

La matinée a été consacrée à l'université d’Antonio et d’Alexis.

Comme l'année dernière, cette université propose un tour d'horizon de la version 6 de la plate-forme Java EE, un petit moins d'un an après sa sortie.

Pour avoir assisté à leur présentation l'année dernière, j'ai particulièrement apprécié les ajouts fait à leur présentation : couverture de CDI, démos avec Oracle Glassfish v3 bien sûre mais aussi RedHat JBoss AS 6 millestone 5, démos de différentes parties clientes (Java FX, GWT, Android) qui consomment des services web de type Restful.

Antonio termine par un bilan de l'adoption de Java EE 6, un an après sa sortie notamment avec le support en cours par un nombre croissant de serveurs d'applications notamment IBM Websphere, Oracle Weblogic, Apache Geronimo mais aussi Caucho qui travaille sur une implémentation du Web Profile.

Avec 15 démos réussies, une salle quasi remplie et des speakers excellents qui maitrisent bien leur sujet, l'université a été un succès.

 

Entre midi, j'ai profité de la session de dédicaces pour en avoir une du livre "Groovy in Action" par Guillaume Laforge.

 

HOL Java EE 6

L'après midi est consacrée à de la pratique avec Java EE 6 pour un hands-on lab dirigé par Alexis et Antonio.

3 sujets ont été couverts pour permettre d'utiliser Java EE 6 with Glassfish 3.0 et Netbeans 6.9.1 : JSF, JAX-RS et CDI

L'idée des hands-on labs proposée cette année par Devoxx est intéressante car elle permet de mettre les mains sur le clavier et de pratiquer en petit comité en profitant de l’expérience et des informations fournies par le ou les responsables du lab.

 

Java EE 6 tooling

Ludovic Champenois nous propose un rapide aperçu des outils disponible pour mettre en oeuvre Java EE 6.

Deux serveurs d'applications sont disponibles : GlassFish et TMaxSoft. D’autres sont en cours de développement.

Java EE 6 a de gros impacts sur les outils : nouvelles APOI, nouveaux concepts, nouveau packaging.

Les principaux IDE proposent un bon support de Java EE 6 :

_ Netbeans depuis la version 6.8 (decembre 2009) : livré avec Glassfish

_ Eclipse depuis la version 3.6 (juin 2010)

_ IntelliJ depuis la sortie de Glassfish 3.0

JDeveloper n'est pas Java EE 6 compliant pour le moment.

Oracle s'implique fortement dans les outils : glassfish et netbeans bien sûre mais possède aussi de nombreux commiters pour Eclipse et travaille avec JetBrain pour le support de Java EE 6.

Ludovic nous propose une démo avec les trois IDE.

 

Première journée à Devoxx 2010

Pour ma quatrième participation, Devoxx est toujours une conférence incontournable en Europe de part la qualité des présentations et des speakers, du nombre de participants (3000 cette année), de l'organisation bien rodée.

Cette année, le nombre de participants semble plus important que l'année dernière pour les universités mais surtout il y a beaucoup plus de francophones, ce qui est très sympa.

 

Productive programmer

Neal Ford est un très bon orateur qui nous a proposé une présentation inspirée de son livre "Productive programmer".

La première partie "Mechanics" est composée de quatre thèmes :

_ acceleration : pour réaliser ses tâches plus vite en utilisant les raccourcis clavier, utiliser un presse papier multiple, utiliser les commandes pushd et popd pour revenir dans un répertoire, utiliser le clavier plutôt que la souris, rechercher plutôt que naviguer, utiliser des macros et des templates, ...

_ focus : il faut éliminer les distractions pour se concentrer sur sa tâche. Cela passe par des choses simples mais toujours faciles à mettre oeuvre : avoir une chaise ergonomique et confortable, avoir deux écrans et un bon clavier, avoir les droits administrateurs sur son poste, supprimer les distractions (les notifications, les messageries (fermer ses emails et la messagerie instantanée) car un changement de contexte est coûteux), utiliser des bureaux virtuels, ...

_ canonicality : il faut appliquer le principe DRY (Don'r Repeat Yourself). L'ORM est un des pires contre exemple du principe DRY (database schema + xml configuration + pojo > 1) : il est préférable de partir du DDL est de générer le fichier de mapping XML et le code des POJO

_ automation : il faut faire réaliser certaines tâches répétitives par la machine en utilisant par exemple une commande unique pour faire un build, utiliser l'intégration continue avec un gestionnaire de sources, utiliser selenium ide (remarque perso : lorsque cela est possible car c’est difficile avec certains frameworks) pour reproduire un bug (par les utilisateurs ou les développeurs : l'idée est simple mais je n'y avais jamais pensé), développer sa propre boite à outils de préférence avec des langages de développement (support des IDE, test unitaires, refactoring). Il faut automatiser dès que le ROI se justifie.

 

Dans la seconde partie (Pratices), Neal Force nous propose 10 moyens d'améliorer notre productivité

1. Composed Methods

Les méthodes d'une application doivent uniquement réaliser une tâche bien identifiée et contenir le moins de ligne possible. Cela facilite la réutilisabilité et la testabilité du code. Neal Ford nous propose un exemple de refactoring d'une méthode qui se connecter à une base de données pour retourner des données.

2. TDD (Test Driven Development / Test Driven Design)

Le TDD permet notamment de réfléchir à la façon sont les classes vont être utilisées. Ceci implique de mocker les dépendances, de mettre en oeuvre le principe des composed methods, ...

3. Static analysis

Utiliser des outils d'analyse de code (PMD/CPD) et de byte code (findbugs)

4. Good citizenship

Neal Ford nous rappel qu'il ne faut pas générer automatiquement les getters et les setters : getters + setters != encapsulation !

Il faut éviter les singletons puisque qu'il mixte les responsabilités et sont difficilement testables. Ils sont une version objet des variables globales décriées dans d'autres technologies. Il est préférable de créer un pojo qui contient les traitements et une fabrique pour créer l'unique instance du pojo en utilisant l'introspection pour invoquer le constructeur privé du pojo.

Neal nous fournit un exemple de la pire classe du JDK : la classe java.util.Calendar qui est connue pour sa mauvaise conception. Il est préférable d'utiliser d'autres implémentations comme JodaTime.

5. YAGNI (you ain’t gonna need it)

L'idée est de n'utiliser que ce que l'on a besoin.

Les meilleurs frameworks sont ceux qui sont extraits d'une application et pas ceux qui sont développés from scratch.

Comme exemples, Neal Ford nous propose le « Ten top corporate code smells » (dont certains m'ont bien fait rigoler)

  • 1. There is a reason that WSAD isn’t called WHAPPY.
  • 2. The initial estimate must be within 15% of the final cost, the post-analysis estimate must be within 10%, and the post-design estimate must be with 5%
  • 3. We don’t have time to write unit tests (we’re spending too much time debugging)
  • 4. We keep all of our business logic in stored procedures...for performance reasons.
  • 5. The only JavaDoc is the Eclipse message explaining how to change your default JavaDoc template.
  • 6. We have an Architect who reviews all code precheckin and decides whether or not to allow it into version control.
  • 7. We can’t use any open source code because our lawyers say we can’t.
  • 8. We use WebSphere because...(I always stop listening at this point)
  • 9. We bought the entire tool suite (even though we only needed about 10% of it) because it was cheaper than buying the individual tools.
  • 10. We invented our own web/persistence/messaging/caching framework because none of the existing ones was good enough.

6. Question authority

Il faut être capable de remettre en cause certaines choses établies, par exemple :

_ les conventions de nommages des méthodes de tests unitaires (qui sont plus lisibles avec des underscores plutôt qu'avec le Camel Case)

_ mettre en oeuvre le pair programming : cela prend plus de temps mais le code produit contient moins de bugs

_ le chaînage des méthodes plutôt que d'utiliser les setters imposées par la convention JavaBeans : il est préférable d'utiliser les fluent interfaces

7. Slap (Single Level of Abstraction Principle)

8. Polyglot programming

Utiliser le langage le mieux adapté à la tâche à réaliser, par exemple Scala ou jaskell pour les traitements fortement multithreadés, grails ou jruby on rails pour la productivité sur des applications web

9. Every nuance

Il ne faut pas obligatoirement maintenir certaines idées diffusées historiquement, par exemple le fait que l'API Reflection soit lente (vrai dans les années 90 mais plus vrai et vraiment pratique dans certaines circonstances).

10. Anti-objets

Ce sont des objets qui sont à l'opposé de ce qu'ils devraient faire par exemple parce qu'ils sont trop inspirés de la vie réelle.

Je n'ai pas encore lu son livre mais sa présentation m'a vraiment donné envie de l'acheter

Il est possible de télécharger les slides de ces présentations dans différents événements (dont celles de Devoxx cette année) à l'url http://nealford.com/mypastconferences.htm

 

Extreme Productivity with Spring Roo

Ben Alex et Stefan Schmidt nous ont proposé un tour d'horizon de Spring Roo.

Récemment la version 1.1 de Spring Roo a été publiée et elle apporte de nombreuses fonctionnalités par rapport à la version 1.0.

De nombreuses démos nous ont permi de se rendre compte de la productivité de Roo pour développer des applications web soit en utilisant le shell fournit par Roo ou en utilisant l'outil STS de SpringSource qui est téléchargeable gratuitement et offre un support pour Roo.

L'extensibilité est assuré par un système de add-on qui enrichit Roo de fonctionnalités.

 

Tools in action : Mylyn

Oliver Gierke de SpringSource nous propose une rapide présentation du plug-in Mylyn d'Eclipse et des avantages apporté par ce plug-in pour améliorer notre productivité de codeur (focus, productivity, traceability).

Il permet de gérer des tâches fournies par un gestionnaire de sources (généralement un gestionnaire de bug tel que BugZilla, RedMine, Jira, ... )

L'utilisation du plug-in commence par la configuration de ce gestionnaire de sources.

Une fois une tâche activé, celui ci se charge de maintenir un contexte de travail dans Eclipse.

Oliver termine sa présentation en nous parlant de SpringSource Code2Cloud.

 

Devoxx 2010

Pour la quatrième fois, je vais assister à Devoxx du 15 ou 19 novembre 2010 à Anvers en Belgique.

Devoxx 2010

Cette année encore, l'événement s'annonce exceptionnel avec des speakers de renom comme James Gosling, Joshua Bloch, Neal Ford, Linda DeMichiel, Paul Sandoz, Juergen Holler, Roberto Chinnici, Brian Goetz, Alexis Moussine Pouchkine, Antonio Goncalves, Guillaume Laforge, Emmanuel Bernard, Ludovic Champenois, Romain Guy, Adam Bien, ...

La formule bien rodée reste la même : université, conférences, BOF, quickies, tools in action.

J'espère vous rencontrer à Devoxx.

 

Troisième journée et dernière journée à Jazoon 2010

Déjà la dernière journée de conférences.

JSF 2.0 vs Tapestry 5.0 par Igor Drobiazko

La présentation d’Igor Drobiazko, commiter et évangéliste Tapestry 5.0 est intéressante car elle met en avant les points forts (justifiés) de Tapestry au travers de plusieurs fonctionnalités :

  • Architecture générale
  • Paramètres des requêtes
  • Page d’erreurs
  • Navigation (statique et dynamique)
  • Redirect after post
  • Validation des données
  • Composants (composite et non composite)
  • Internationalisation
Igor reste cependant intègre en mettant en avant les nombreuses nouveautés de JSF 2.0. Tapestry semble vraiment intéressant et productif.

 

Essentials of testing par Bettina Polasek et Marco Cicolini

La petite salle de cette session est entièrement pleine avec des personnes assises et debouts dans les escaliers : le sujet du testing interèsse toujours autant.

La gestion de la qualité peut se voir sur plusieurs angles : organisation, processus, personnes et outils. La présentation se concentre sur la partie outillage avec un retour d’expérience sur le choix des outils adaptés à plusieurs besoins : tests statiques, fonctionnels, de charge, de performance, ... et ce dans différentes couches (présentation, métier, persistence, …)

Il existe de nombreux outils pour couvrir ces besoins par exemple :

Analyse du code : PMD/CPD, findbugs, jDepend, checkstyle, sonar, …

Test IHM web : htmlUnit, Selenioum, WebTest, Tellurium, …

Les outils retenus sont : Grinder, Selenium, htmlUnit, Cactus, Glassfish, JPA, JDBC, mocking, SoapUI, PMD et jDepend

Des démos nous présentent rapidement la mise en œuvre de quelques uns de ces outils.

Les speakers insistent sur plusieurs points :

  • One tool, one purpose
  • Les outils doivent rendre les tests plus simple
  • Définir des best practices et de la documentation
  • Former des spécialistes sur les outils
  • Exercer les développeurs à l’utilisation des outils
  • La qualité du code des tests doit être identique à celle du code testé

 

Conversational Web Applications with Spring par Micha Kiener et Jürgen Höller

Un scope définit pour un contexte pour un bean dans lequel il pourra être stocké et utilisé. Un scope permet l’échange de données et une meilleure gestion de la mémoire en gérant une durée de vie pour ce contexte.

Plusieurs scopes existent déjà (application, session , requête, …), mais Spring propose un nouveau scope au niveau Window qui permet plus de possibilités par rapport au contexte request et session. La gestion d’un tel contexte n’est cependant pas trivial : besoin d’un identifiant unique par navigateur et par élément, conserver le même id en cas de rafraichissement de la page, …

Ce nouveau contexte est pris en charge dans Spring 3.1 qui propose le support des conversations dans sa partie Core.

 

Spring ROO - A New Level of Enterprise Java Productivity par Eberhard Wolff

Eberhard Wolff est principal technologist chez VMWare nous propose un aperçu de Spring Roo après un rappel sur Spring Source, VMWare, et les missions de Spring.

Une long démo permet de mettre en avant la productivité de Roo qui s’appuie sur les fonctionnalités de Spring et de l’AOP pour développer rapidement des applications web.

Un présentation rapide nous est faite de Spring Insight qui permet d’avoir une vision sur les performances de chaques requêtes : http, beans, transactions, sql …

Cet outil est fourni avec Spring TC server developer edition

 

Seconde journée à Jazoon : ORM's day

Cette journée est l'occasion de suivre 4 sessions liées à l'ORM.

 

JPA 2.0 par Mike Keith

Cette session est l'ocassion de faire (refaire) un tour d'horizon des nouveautés de la version 2.0 de JPA incluse dans Jave EE 6 :

  • Standardisation de certaines propriétés de la Persistence Unit
  • Enrichissement des possbilités de mapping (@JoinTable, @JoinColumn)
  • Support de collection d’objets (@CollectionTable) et des listes ordonnées (@OrderBy, @OrderColumn)
  • Enrichissement du support des éléments Embeddable (imbrication, peuvent avoir des relations)
  • Possiblité de préciser le mode d’accès : champ ou propriété (@Access)
  • Gestion plus riche des verrous  avec un support des verrous pessimistiques
  • Support standard des fonctionnalités de base du cache de l’EntityManager : Cache.evictAll() est notamment très utile lors des tests.
  • Enrichissement de JPQL (timestamp litéral, collection dans la clause in, opérateur CASE,
  • TypedQuery pour éviter le casting
  • ...

En mileu de présentation, Mike nous propose un petit break culturel sur les horloges suisses et les Inukshuks ;-)

 

What's new in the hibernate sphere par Emmanuel Bernard

Le but de la présentation de faire un présentation générale des nouveautés de la partie Core d’Hibernate et de projets satellites.

Hibernate propose un support complet de la version 2.0 de JPA (standadisation des annotations, API Criteria, modes de verrous, ...). Certaines fonctionnalités étaient déjà implémentées de façon particulière par Hibernate : il est préférable d'utiliser la façon standardisée par JPA lorsque cela est possible.

Hibernate propose quelques nouvelles fonctionnalités intéressantes :

  • Fetch profile nommé (@FetchProfile) pour définir des statégies de récupération de données complexe utilisable via les méthodes enableFetchProfile() et disableFetchProfile() de la Session
  • la possibilité d’exécuter automatiquement des traitements à la lecture ou à l’écriture d’un champ
  • Exemple :

    <property name="creditcard">
    <column name="credit_card_num"
    read="decrypt(credit_card_num)"
    write="encrypt(?)"/>
    </property>
  • Partial generators
  • ...

 

Hibernate est bien plus qu'un simple outil d'ORM : Emmanuel nous propose une présentation rapide de trois sous projets d'Hibernate :

  • Hibernate search : qui permet la recherche full text dans la base de données avec plusieurs nouveautés (massive indexing, API d’intérogation, clustering, ...). Emmanuel est l’auteur d’un livre sur le sujet
  • Hibernate Envers (Entity Version) : permet d’enregistrer des informations d’audit de façon transparente sans modifier le schéma des tables du modèle (utilisation de tables dédiées)
  • Hibernate validator : c'est l'implémentation de la JSR 303 (Bean Validation) dont Emmanuel était le spec leader: Pour plus de détails consulter le chapitre 82 de mon didacticiel

Le présentation d'Emmanuel m'a particulièrement donné envie de regarder Hibernate search et surtout Hibernate Envers qui maintenant est fourni en standard avec la version 3.5 d'Hibernate.

Encore des sujets à ajouter à ma longue liste.

 

Java Persistence Criteria API par Linda DeMichele

Linda est la spec leader de la JSR 317 (JPA version 2.0) : elle donc une des mieux placée pour nous parler de cette partie de la version 2.0 de JPA.

Linda nous propose dans un premier temps :

  • un rappel sur JPQL : requêtes sous la forme de chaînes de caractères, syntaxe inspirée de SQL, static (NamedQuery ou dans le code) ou dynamique par concaténation de chaînes
  • les nouveautés de JPQL dans la version 2.0
  • les points forts (facile à utiliser car proche de SQL, requêtes dynamiques faciles ) et les points faibles (utilisation de String, pas de typage fort, problèmes de sécurité connus par concaténation de chaînes) de JPQL

L'API Criteria de JPA 2.0 permet la définition de requêtes en utilisant une approche OO.

Cette API doit permet de réaliser tout ce que permet JPQL et proposer un type fort.

Cette API s’inspire d’API similaires : Hibernate Criteria, TopLink Expression, Cayenne, OJB, ...

Deux approches sont proposées pour faire référence aux entités et aux champs

  • string based : facilité d'utilisation, plus familier et intuitif
  • object based : complètement OO avec l'utilisation d'un méta model pour un typage fort

Exemple JPQL

SELECT c
FROM Customer c join c.orders o
WHERE c.name = 'Braun'

Exemple API Criteria avec String

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Customer> cq = cb.createQuery(Customer.class);
Root<Customer> customer = cq.from(Customer.class);
Join<Customer, Order> o = customer.join("orders");
cq.where(cb.equal(customer.get("name"), "Braun"))
.select(customer);

Exemple API Criteria avec String

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Customer> cq = cb.createQuery(Customer.class);
Root<Customer> customer = cq.from(Customer.class);
Join<Customer, Order> o = customer.join(Customer_.orders);
cq.where(cb.equal(customer.get(Customer_.name), "Braun"))
.select(customer);

 

Patterns and practices in Hibernate par Patrycja Wegrzynowicz

La présentation au titre accrocheur est intéressante mais peu instructive car les points abordés sont pointus mais finallement connus après quelques temps de pratique d'Hibernate.

Leurs mises en oeuvre n'est cependant pas toujours triviale. Exemple : le choix d'une stratégies pour l'utilisation de l'héritage avec Hibernate

La mise en œuvre d’Hibernate peut se voir sous plusieurs angles : architecture, conception relationnelle, conception OO et programmation.

Après un petit rappel sur la POO (encapsulation héritage, polymorphisme, principes SOLID), ceux-ci sont mis en parallèle de leur utilisation dans les objets du domaine : éviter les modèles du domaine anemique (cd Martin Foler), respect de l’encapsulation, ...

Le thème suivant est celui des transactions et de la gestion des accès concurrents en proposant plusieurs alternatives à un exemple du livre de Gaving King.

Enfin le dernier thème porte sur les stratégies à mettre en œuvre pour l’héritage (table per classe hierarchy, table per subclass, table per concrete class) avec les avantages et les inconvénients d’un point de vu gestion des contraintes, vitesse d’accès et polymorphisme.

Un petit regret de ma part concernant la présentatrice qui se permet de critiquer Gaving King et le livre dont il est co auteur "Java persistance with Hibernate".

 

Mobicents 2.0 The Open Source Communication Platform par Jean Deruelle

Une présentation des plateformes open source de JBoss pour intégrer la VoIP (Voice over Internet Protocol qui ne se limite pas à la voix) dans des applications web.

Les applications possibles sont nombreuses : sécurité, notification par téléphone (messages vocaux et SMS), conférences, CRM, web Banking, ...

Mobitcents 2.0 se compose de plusieurs éléments reposant sur le microcontainer de Jboss

  • JAIN SLEE (Service Logic Execution Environment) : orienté asynchrone et événement
  • SIP Servlets : permet la convergence entre HTTP et SIP (JSR 289)
  • Media server : passerelle pour la diffusion de média
  • Presence Server

Jean nous présente une démo proposant l’utilisation de Mobicents dans un site d’ecommerce : validation de la commande, saisie de la date de livraison souhaitée, ... via un téléphone mobile par le client.

Cette présentation m’a permis de découvrir qu’il existe une plate-forme complète opne source pour intégrer la VoIP dans les applications web.

 

 

Première journée à Jazoon 2010

Pour la seconde fois consécutive, j'assiste à la conférence Jazoon à Zurich en Suisse.

Jazoon 2010

La crise marque ses effets à Jazoon : beaucoup moins d'exposants et de participants (je dirais malheureusement moitié moins à la vue du remplissage de la salle des keynotes).

L'événement reste cependant très intéressant car il conserve la diversité de son contenu (Java EE 6, Osgi, Java FX, sécurité, ), son organisation bien rodée et
le fait d'être à taille humaine.

Oracle est présent pour sponsoriser l'événement en tant que sponsor platinum sponsor et pour animer une dizaine de sessions essentiellement autour de Java EE 6 :

  • Java SE and JavaFX: The Road Ahead par Danny Coward
  • Servlet 3.0 - Asynchronous, extensibility, ease-of-development par Rajiv Mordani
  • Java EE 6 Development with Eclipse, NetBeans, IntelliJ, and GlassFish par Ludovic Champenois
  • JPA 2.0: Filling the Feature Gap par Mike Keith
  • The Java Persistence Criteria API par Linda DeMichiel
  • Java EE 6 and OSGi: yes you can with GlassFish v3 par Jerome Dochez
  • Running your Java EE 6 applications in the Cloud par Arun Gupta
  • Building a high performance directory server in Java: Lessons learned and tips from the OpenDS project par Ludovic Poitou et Matthew Swift 
  • Exploring HTML 5 With Java Server Faces 2 par Roger Kitain
  • Easy to Use, Highly Available, High Performance Java Database Access: Seriously? par Craig Russell


La journée débute par le keynote de Danny Coward (Java SE and JavaFX: The Road Ahead)

Danny est un excellent orateur qui nous a présenté un rapide historique des 15 années de Java

Un petit clein d'oeil au projet Green qui est l'ancètre de Java

Danny nous redonne la même liste des évolutions envisagées pour la prochaine version 7 de Java :

  • modularité : JSR 294 et projet Jigsaw
  • traitements parallèles : ramassette miette G1 et API Fork/Join
  • support multi langages : projet DaVinci
  • meilleur support des annotations : JSR 308
  • évolutions du langage Java : projet Coin (diamond type inference, gestion multi des exceptions, gestion automatique des ressources, support des String dans l'instruction switch)
  • closures : projet Lambda
  • NIO 2 : JSR 203
  • support Unicode 5.2
  • ...

Ces évolutions sont testées dans le JDK 7.

Java FX évolue rapidement avec 4 versions en 18 mois :

  • 1.0 : support desktop uniquement, FX Script, scenegraph, media
  • 1.1 : support des appareils mobile
  • 1.2 : composants graphiques et layouts, performance,
  • 1.3 : support TV avec emulateur, performance de la nouvell stack graphic (Prism)

La démo "standard" de Java FX (l'application réalisée pour les JO de Vancouver) nous est représentée.


Restful SOA

Stefan Tilkov nous a fait une bonne introduction sur les concepts des architecture REST et de leur apports par rapport aux services web de type SOAP.
Stefan défend d'ailleurs les mérites de REST face à SOAP


Enterpise Flex : top or flop

Je retiens quelques idées de cette présentation :

  • Le développement d'applications Flex requiert de multiples compétences (Java, ActionScript, MXML, ...)
  • Catalyst (Flex 4) ne change rien à cet état de fait
  • GraniteDs propose des fonctionnalités intéressantes pour le développement d'applications d'entreprises


 
Patterns et best practices for building large GWT applications /  GWT, CDI & JAX-RS

Heiko Braun, senior software Engineer chez JBoss nous présente certains développements réalisés par JBoss : certaines fonctionnalités sont regroupées et diffusées sous le projet open source Errai

Le projet Errai semble proposer des fonctionnalités utiles.


Servlet 3.0 - asynchronous, extensibility, ease of development

Majiv Mordani et Arun Gupta nous propose un tour des nouvelles fonctionnalités de la version 3.0 de l'API à la base de tous les développements web en Java :

  • facilité de développement : utilisation des annotations (@WebServlet, @WebFilter, @WebListener, ...), web.xml optionnel
  • extensibilité : enregistrement dynamique de nouvelles servlets, modularité du fichier web.xml (web-fragment)
  • support des appels asynchrones (limités)) : API dédiée
  • sécurité : via des annotations
  • ...

 

Le keynote 97 things every programmer should know par Kevlin Henney

Vu les contributeurs à la rédaction de ce livre et les quelques sujets proposés, je devrais ajouter ce livre à la longue liste de ceux que je dois lire.

La journée se termine par le Jazoon Networking Event.

 

Mes sessions préférées ou importantes à Devoxx

J’ai eu la chance de pouvoir assister à Devoxx durant l’intégralité de ses 4,5 jours. Malgré cela, il n’est possible d’assister qu’à 1/5 des sessions puisque5 sessions ont lieu en simultanée  : il faut donc faire un choix. Je vous propose une petite description des sessions que j’ai préférées.

Le keynotes de Robert C.Martin dont le surnom est Uncle Bob : il a l’art des présentations expressives avec une présentation passionnée et souvent drôle sur des problèmes de fond dans notre activité professionnelle. Son livre Clean Code est à lire absolument.

L’université d’Antonio et Alexis sur Java EE 6 et Glassfish v3 (voir mon précédent post)

Lors de la session sur le JDK 7, plusieurs annonces ont été faites :
• La release candidate, qui devait correspondre à la millestone 7 prévue en février 2010, sera la millestone 10 prévue en octobre 2010
• Le retour des closures avec une syntaxe simplifiée non encore clairement définie
Reste que le JDK 7 reste un prototype pour Java SE 7 qui ne possède toujours pas sa JSR.

Le BOF avec les Jug leaders et James Gosling a permis d’évoquer certains sujets d’actualités : l’incertitude sur l’organisation de Java One, le futur de Java notamment vis-à-vis des langages dynamiques, … Les juggers présents se sont ensuite retrouvés pour discuter et boire une bière : c’est l’occasion d’échanger avec les autres jug leaders.

J’ai aussi assisté à plusieurs universités et conférences sur Java FX qui devient, avec sa version 1.2,  mature pour le développement d’applications d’entreprises.

La session « A year of monitoring with Java-Monitor » de Kees Jan Koster nous a fait un retour sur le site http://java-monitor.com/ qui semble très intéressant au vu du contenu présenté lors de la session.

La session « Do you really get class loaders » de Jevgeni Kabanov fondateur et CTO de ZeroTurnAround a permit au travers d’exemples de montrer les différents problèmes qu’il est possible de rencontrer avec un classloader notamment dans une application web.

L’université « Introduction Java generics » d’Eric Steegmans a permis de revoir ce qu’il est possible de faire avec les generics et surtout, bien que cela ne soit pas nécessaire, de se rendre compte des difficultés de leurs mises en œuvre avec Java.

J’ai raté d’autres sessions que j’aurai voulu voir mais je pourrai les voir sur parleys.com.

 

La communauté francophone au Devoxx 2009

Devoxx permet de participer de nombreuses sessions mais aussi de rencontrer énormément de passionnés de technologies Java.
Ces rencontres ont lieux lors de la journée mais aussi et surtout en soirée.

Comme d’habitude le Paris JUG organise une photo avec les francophones présent à Devoxx
 

Jeudi soir, les français avaient rendez vous pour une soirée à l’Axxess avec de nombreux jugguer de Paris, Lorraine, Tours, Nice, Bordeaux, Bretagne, …

 

Java EE 6 au Devoxx 2009

Java EE 6 était à l’honneur cette année à Devoxx avec sa diffusion imminente.
Lors du Keynotes, Roberto Chinnici, le spec leader de la JSR relative à Java EE 6 nous annonce la date de sortie :
Ce sera le 10 décembre.

Même si l’utilisation en production n’est pas encore pour demain, c’est le moment de commencer à regarder ce que propose cette nouvelle version de Java EE.

De nombreuses universités et conférences était consacrées à Java EE 6 et à diverses spécifications.

Au cours des différentes sessions, les fonctionnalités pratiques pour le développeur de Glassfish sont démontrées :
• C’est l’implémentation de référence de Java EE 6 et permettra donc de mettre en œuvre cette plate-forme
• Son cœur Osgi permet un démarrage très rapide
• Le redéploiement à chaud avec conservation des sessions augmente grandement la productivité du développeur
• Les plugins pour Netbeans et Eclipse permettent le « save and deploy »

Une université proposée par Antonio Goncalves et Alexis Messine Pouchkine a permis de parcourir en détails le contenu de la plate-forme.
 

La nouvelle version de la plate-forme Java EE est moins révolutionnaire que sa version 5 mais elle poursuit dans sa lignée et surtout elle propose de nombreuses nouvelles fonctionnalités et évolutions attendues depuis longtemps pour certaines. Voici un résumé des principales d’entres elles :
• Profile : sous ou sur ensemble de Java EE qu’il sera possible d’implémenter et qui évoluera de façon indépendante de la plate-forme Java EE. Le premier profile définit est le web profile mais d’autres seront définis ultérieurement
• EJB 3.1 : EJB lite (pour exécuter des EJB locaux dans une application Java SE ou dans une application web), @Singleton (instance unique d’un EJB), @Startup, @Asynchronous (invocation d’EJB asynchrone), packaging d’EJB locaux dans un war, normalisation des noms JNDI, …
• JSF 2.0 : utilisation des facelets, utilisation d’annotations, support Ajax avec un bibliothèque Javascript fournie par chaque implémentation, simplification du développement de composants, …
• JPA 2.0 :
• Servlet 3.0 : utilisation d’annotations, web.xml optionnel, web fragments pour les frameworks, ressources statiques incluses 
• Context and Dependency Injection et @Inject : pour standardiser l’injection de dépendance et permettre l’utilisation de Managed Bean (à ne pas confondre avec leur homonyme dans JSF)
• JAX-RS 1.1 : pour développer des services web restful. Elle est intégré à la plate-forme
• Bean validation : pour standardiser la validation de données (utilisés notamment par JSF et JPA)
• …
Les fonctionnalités sont donc très nombreuses mais contribuent à enrichir et simplifier la plate-forme qui sera incontournable dans quelques années.

Lors de la conférence d’Antonio, quelques Spring guys se sont incrustés au premier rang

J’ai réussi à avoir une dédicace du livre d’Antonio que je vous recommande.
http://www.apress.com/book/view/9781430219545

 

Résumé de Devoxx 2009

2009 marque la huitième édition de Devoxx (anciennement JavaPolis).

Cette année à Devoxx, je n’ai pas eu beaucoup de temps et les difficultés d’accéder au réseau Wifi ne m’ont pas permis de bloguer durant l’événement. Donc mes posts se feront en différés et voici le premier qui offre un résumé global.

2500 participants et 19 exposants, c’est moins que l’année dernière mais cela reste le plus gros événement européen autour des technologies Java surtout en ses moments de crise économique.
Toujours côté chiffres : 132 sessions, 120 speakers, 36 pays, 56 Jugs (dont Lorraine Jug, Yajug, Paris Jug, …), 737 sociétés, dont une en particulier mise en avant lors du keynotes de Stephan Janssen : mon employeur, Sfeir qui a fait participer 24 collaborateurs à Devoxx (20 de Paris et 4 de Luxembourg).

De nombreux speakers de renom était présents : James Gosling, Alex Buckley, Arjen Poutsma, Brian Goetz, Dick Wall, Holly Cummins, Ivar Jacobson, Kirk Pepperdine, Paul Sandoz, Richard Blair, Robert C. Martin, Roberto Chinnici, Sang Shin, Simon Ritter, …  ainsi que de nombreux francophones : Antonio Goncalves, Alexis Moussine Pouchkine, Emmanuel Bernard, Guillaume Laforge, Jean-François Arcand, Ludovic Champenois, Romain Guy,  ...

Les sujets sont toujours aussi nombreux et passionnants : des sujets autour des technologies, des méthodologies et des outils.

Les inquiétudes de la communauté sur l’avenir de Java resteront intactes puisqu’aucune annonce n’a malheureusement été faite et pour cause c’est impossible avant la finalisation. Le keynotes d’Oracle tente cependant de rassurer en démontrant l’engagement d’Oracle autour de Java et de sa communauté et s’articule autour du fait que Java : c’est une technologie, c’est une plate-forme et c’est une communauté. Et c’est vrai que Java c’est tout cela et pas uniquement un langage.

Grande nouvelle annoncée par Stephan Janssen lors de son keynotes : l’intégralité des universités et conférences seront disponible rapidement dans un espace à souscription de la version 3.0 parleys.com http://beta.parleys.com. Il y a encore deux ans, un DVD était publié. Cette année, toutes les sessions seront consultables pour 49 euros pendant 6 mois : http://devoxx.parleys.com. Le but étant de financer une partie de l’énorme organisation de Devoxx. Cette somme semble modique au vue de l’intégralité du contenu. Pour ceux qui subisse la crise, les sessions seront publiées gratuitement tout au long de l’année sur parleys.com

J’espère vraiment pouvoir retourner pour la quatrième fois l’année prochaine à Devoxx.

 

Rencontres Spring le mercredi 4 novembre 2009 à la Défense

 

Je vais assister mercredi 4 novembre 2009 à Paris / La Défense à l’édition 2009 des rencontres Spring néés d'un partenariat entre SpringSource (créateur du framework Spring) et SFEIR (organisateur des "rencontres GWT" et "rencontres agiles" en particulier).

4 sessions avec des guest star sont prévues :

  • 1er speaker : Adrian Colyer, CTO of SpringSource
  • 2ème speaker : Arjen Poutsma pour une session orientée "SOA" et Spring 3.0
  • 3ème speaker : Javier Soltero pour Hyperic & The Cloud
  • 4ème session : Alexis Moussine-Pouchkine (Sun) et Michaël Isvy (SpringSource) pour une discussion sur Spring au sein de l'écosystème Java EE

Pour plus d’informations, consultez le site rencontres-spring.com

 

Participation au Devoxx 2009

Cette année encore je vais assister au Devoxx (ex Javapolis) qui est le plus grand événement européen autour du monde Java.

devoxx

Jazoon 09 : c'est fini

Jazoon est terminée : voici mon bilan pel mèle.

Le premier constat est que je n'ai pas vu le temps passer ce qui est surement le signe de l'intérêt des sessions, des contacts que j'ai eu et des activités réalisées (parfois jusque tard dans la soirée).

L'organisation a été impeccable, confirmant l'image de qualité et de précision suisse.

Jazoon est un événement à « taille humaine » : environ 1080 participants, ce qui permet de faciliter les rencontres et rend les speakers accessibles durant toute la durée de l'événement.

Pour l'originalité, j'ai apprécié le Jazoon party (une soirée dédiée aux rencontres et échanges entre les participants) et les Jazoon Rookies qui permettent à de jeunes orateurs de faire leur armes en temps qu'orateur sur le sujet de leur choix pour les finalistes de cette compétition.

J'ai deux petits points vraiment négatifs mais qui sont complètement indépendant de l'organisation de Jazoon.

Le premier concerne le climat qui pour la saison n'a vraiment pas été clément : humide, maussade avec des températures plutôt « en dessous des normales saisonnières ».

Le second concerne la participation de mes compatriotes qui, comme pour les autres conférences de ce type, est faible. Cette faible participation a fait l'objet de quelques discussions avec plusieurs Jug Leader français présents et l'idée d'une conférence en France, en français, est sûrement à creuser. Les langues étrangères ne sont pas le fort des français et la langue de Shakespeare est probablement un frein. Typiquement pour moi cela ne m'empêche pas de participer aux conférences mais cela inhibe toute chance de pouvoir intervenir en tant que speaker « because I am not enough fluently in English . I hope you can understand » (comme quoi quatre jours à parler anglais cela laisse des traces).

Malgré la quantité de travail que l'on image, les organisateurs (notamment Christian Frei (à droite) et Thierry Czarnyszka (à gauche) ... en photos avec moi) sont disponibles et sont à l'écoute des participants pour obtenir un feed back.

 

Je leur adresse une nouvelle fois toutes mes félicitations et mes remerciements ainsi qu'à leur équipe de nous avoir proposé cet excellent événement.

Finalement ma conclusion est je pense bien résumée par la photo ci dessous.

 

J'espère pouvoir assister de nouveau l'année prochaine au Jazoon 2010 et pourquoi pas s'y rencontrer.

 

- page 1 de 2