Java EE 6 et CDI par Antonio Goncalves à l’ElsassJUG

Le 20 juin dernier, j’ai assisté à deux présentations d’Antonio Goncalves à l’ElsassJUG : une présentation de générale de Java EE 6 et une présentation dédiée à CDI.

En tant que membre des JSR 316 (Java EE 6), 317 (JPA 2), 318 (EJB 3.1), Antonio est toujours un aussi fervent speaker concernant la plateforme Java EE 6. Sa seconde présentation sur CDI était très pragmatique et intéressante.

L’ElsassJUG est le quatrième JUG dans lequel j’assiste à une présentation et comme pour les autres l’accueil y est très sympa, les informations et les échanges sont toujours très enrichissants. La session a eu lieu dans les locaux d’Alcatel-Lucent Enterprise qui a aussi offert aux présents un buffet sympathique (mignonettes, réductions sucrées et salées, macarons, … et bien sûre des bretzelles) : c’est toujours l’occasion d’avoir des échanges avec d’autres passionnés.

Si vous habitez en Alsace et que vous être passionné par le développement, particulièrement en Java, n’hésitez pas à assister aux prochaines sessions de l’ElsassJUG. Pour les autres régions, renseignez vous car il y a de plus en plus de JUG en France (plus d’une quinzaine actuellement)

En plus, la main innocente d’Antonio m’a désigné pour obtenir une licence d’Intellij IDEA.

Merci à Julien Herr, Sébastien Letélié et tous les membres de l'ElsassJUG pour leur accueil et l'agréable soirée que j'ai passé.

 

Soirée Spring Batch et Integration au Yajug

 

Soirée Stateful is beautiful au Lorraine JUG le 15 juin

Le Lorraine JUG (Java User Group de Lorraine) organie une soirée de conférence initulée «Stateful is beautiful». Dans cette présentation, Antoine Sabot Durant, consultant et architecte chez Ippon Technologies, propose un retour aux sources du Java EE prenant le contre-pied de la tendance actuelle du «tout stateless».

Mercredi 15 juin 2011, 18h30

Ecole Supérieure d'Informatique et Applications de Lorraine

193 av. Paul Muller, 54602 Villers-lès-Nancy (plan d'accès)

Au programme de la soirée :

18:15 - Accueil et enregistrement

18:30 - Stateful is beautiful, Antoine Sabot-Durant (Ippon Technologies)

Retour aux sources de Java EE : Stratégies de stockage des états dans une application Java EE, scope session de l'Api Servlet, CDI, EJB 3.X, sérialisation, passivation et résilience, scalabilité et design patterns...

20:30 - Tombola

1 licence JRebel à gagner, offerte par ZeroTurnaround.

Livres, t-shirts...

21:00 - Barbecue

Après la conférence, l'équipe du Lorraine JUG vous propose de prolonger la soirée par un barbecue sur la terrasse de la cafétéria de l'ESIAL. Si vous souhaitez y participer, envoyez un e-mail à info@lorrainejug.org avant le 13 juin. Une petite participation de 3€ sera demandée aux non-membres.

L'inscription à la conférence est gratuite et le nombre de places est limité alors n'attendez pas !

Inscription sur JUG Event

 

Soirée Scala au Lorraine JUG, le 18 mai 2011

Le Lorraine JUG (Java User Group de Lorraine) vous invite à sa soirée de conférence dédiée au language de programation Scala.

Mercredi 18 mai 2011, 18h30

Ecole Supérieure d'Informatique et Applications de Lorraine

193 av. Paul Muller, 54602 Villers-lès-Nancy (plan d'accès)


Au programme de la soirée :

18:15 - Accueil et enregistrement

18:30 - Scala par la pratique, Romain Maton (Xebia)

Scala est un langage alternatif pour la machine virtuelle Java. Fonctionnel, orienté objet et statiquement typé, ce langage rime avec productivité ! Découvrez ce qu’il faut absolument savoir de Scala, sa philosophie, son outillage, ses frameworks. Familiarisez-vous avec ce langage grâce à des exemples concrets.

19:30 - Drink & tombola des membres

1 licence JRebel à gagner, offerte par ZeroTurnaround.

1 pass pour les conférences Jazoon à gagner, offert par Jazoon.

20:00 - Scala par la pratique, (la suite) Romain Maton (Xebia)

21:30 - Dîner en ville

Après le conférence, l'équipe du Lorraine JUG ira dîner en ville avec les speakers de la soirée. Si vous souhaitez vous joindre à nous, envoyez un e-mail à info@lorrainejug.org. Les détails du dîner seront communiqués ultérieurement.

L'inscription est gratuite et le nombre de places est limité alors n'attendez pas !

Inscription sur JUG Event

 

Soirée annotations au Yajug par Olivier Croisier

 

Soirée «JMS et Bean Validation» au Lorraine JUG le 23 février 2011

Le Lorraine JUG (Java User Group de Lorraine) vous invite à sa soirée de conférence dédiée aux API JMS (Java Message Services) et Bean Validation.

Mercredi 23 février 2011, 18h30

Ecole Supérieure d'Informatique et Applications de Lorraine

193 av. Paul Muller, 54602 Villers-lès-Nancy (plan d'accès)

Au programme de la soirée :

18:15 - Accueil et enregistrement

18:30 - JMS : Java Message Services, Frédéric Renout (Kitry)

JMS (Java Message Services) est une API qui permet aux applications Java de s'échanger des messages asynchrones par le biais d'un MOM (Message Orieneted Middleware). Cette session passera en revue l'API Java Message Services et présentera quelques retours d'expérience sur sa mise en œuvre.

19:30 - JSR-303 : Bean Validation, Xavier Roy (C-Services)

La JSR-303 (alias Bean Validation) propose un mécanisme transversal de validation s'appuyant sur la définition de contraintes (métadonnées) au niveau des entités du domaine. Cette introduction couvre les concepts et l'utilisation de l'API Bean Validation ainsi que l'implémentation de contraintes spécifiques.

20:00 - Assemblée Générale

Présentation du bilan moral et financier du Lorraine JUG. Election du conseil d'administration : Candidatures ouvertes à tout membre de l'association en règle de cotisation, faites-vous connaître en envoyant un e-mail à info@lorrainejug.org.

20:30 - Drink : 2ème anniversaire du Lorraine JUG

L'inscription est gratuite et le nombre de places est limité alors n'attendez pas !

Inscription sur JUG Event

Pour en savoir plus consultez le blog http://blog.lorrainejug.org ou envoyez un e-mail à info@lorrainejug.org.

Stage de Jiu Jitsu Brésilien avec Carlson Gracie Junior à Luxembourg

J'ai eu l'honneur et le plaisir de suivre le stage de Jiu Jitsu Brésilien proposé par Calson Gracie Junior à Luxembourg le 11 décembre 2010.

De nombreux pratiquants de Jiu Jitsu Brésilien ont assisté à ce stage exceptionnel qui s'inscrit dans le cadre de la tournée européenne de Carlson.

Parmi ceux ci, il y avait quelques amis des Arts Martiaux Toulois http://artsmartiauxtoul.unblog.fr/ (notamment Manu, Christophe et Momo) et des PIRAÑIAS JIU JITSU BRESILIEN ACADEMIE de Freming Merlebach (Geoffray et ses élèves).

Ce stage fut aussi l'occasion de rencontrer d'autres pratiquants de la Grande Région notamment luxembourgeois et allemand.

Carlson Gracie Junior était assisté de son élève Ari Galo et Aguilera Bartolome (Fight Team Impact de Luxembourg)

Carlson Gracie Junior a abordé plusieurs thèmes avec pour chacun plusieurs techniques :

  • passages de garde
  • passages de gardes ouvertes
  • renversements à partir d'une garde ouverte : en finissant en immobilisation, étranglement et clé de jambes

Carlson Gracie Junior maitrise parfaitement la pratique du Jiu Jitsu Brésilien dont les membres de sa famille sont à l'origine du développement et de son engouement.

Parmis les messages importants donnés par Carlson je retiendrai que la pratique du BJJ est surtout technique et ne doit pas requérir de force et que le Jiu Jitsu est une grande famille.
D'ailleurs l'accueil qui m'a été reservé restera un souvenir inoubliable bien que n'étant qu'une ceinture noire deuxième de Ju Jitsu traditionnel pratiquant aussi le BJJ.

Suivre l'enseignement de Carlson Gracie Junior est exceptionnel (surtout en Europe) et je garderai un excellent souvenir de ce stage.

 

Soirée NO SQL au Lorraine JUG par Michaël Figuière

Après une intervention au Tours JUG et au Paris JUG, Michaël Figuière (consultant chez Xebia) nous a proposé au Lorraine JUG une très bonne introduction du mouvement NO SQL, le 8 décembre 2010.

NO SQL (Not Only SQL voir Not Only Relational) est un sujet d'actualité comme le confirme le nombre de présentations relatives au sujet à Devoxx.

C'est sujet récent (début au printemps 2009) qui est donc en plein essort avec un paradoxe notable : le sujet n'est pas encore mature et il est en pleine évolution mais il est déjà développé et utilisé par des grands du web (Google, Amazon, Twitter, Linkedin, ...)

Le titre de la présentation de Michaël "Des grands du Web aux entreprises" fournit un bon résumé de sa vision sur ces technologies.

No SQL permet d'avoir une nouvelle approche sur le stockage et la réplication de données. Cette approche ne s'oppose pas au modèle relationnel mais peut être un bon complément dans certaines situations.

No SQL a débuté avec des solutions développées pour besoins dont les solutions relationnelles n'étaient pas satisfaisantes notamment en ce qui concerne la performance, la disponibilité, la scalabilité et la résilience.

Michael nous détaille les concepts de base mis en oeuvre dans les base de données de type No SQL. La compréhension de ces concepts est essentiel avant de vouloir utiliser une solution de type No SQL.

Michael nous donne une sélection des principales solutions du marché par catégorie :

  • BDD orientées clé-valeur : Riak, 
  • BDD orientées document : MongoDB
  • BDD orientées colonnes : Cassandra
  • BDD orientées graphe : Neo4j

Michael nous propose quelques cas d'utilisation dont un vraiment interessant d'une application qui utilise pour chaque fonctionnalité une technologies adaptées :

  • Recherche des produits : Lucene
  • stockage du catalogue des produits : MySQL
  • Stockage des comptes clients : Cassandra
  • Stockage de données de sessions : Redis
  • L'idée est d'utilisé l'outil le mieux adapté au besoin

La présentation de Michael est téléchargeable à l'url :
http://www.slideshare.net/mfiguiere/lorraine-jug-dec-2010-nosql-des-grands-du-web-aux-entreprises

Suite à la présentation, les membres du Lorraine JUG ont été diner avec Michaël pour poursuivre les discutions autour de No SQL

et de quelques cocktails.


La soirée se termine par une visite de la place Stanilas, une des plus belle d'Europe.

 

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.

 

Stage Kyusho Jitsu le 7 novembre au dojo de Bousse

 

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.

 

Open internationnal Ne Waza à Saint Avold le 21 novembre 2010

open ne waza saint avold 2010

 

Rencontres Ju Jitsu de la saison 2010-2011

Chaque mois, une rencontre inter-clubs sur un thème de la pratique du Ju Jitsu, et plus généralement, celui des arts martiaux.

RJJ 2010-2011

L'objectif est de rassembler des enseignants et pratiquants ayant cette volonté d'échanger et de partager leur pratique et leur expérience.

Chaque mois, un thème est retenu et des intervenants présentent leur contribution pour l'animation de la séance.

Les clubs à l'initiative de cette démarche, le Budo Ryu Ay et le JuJitsu Ryu Metzervisse, espérent ainsi créer une dynamique locale et un réseau de pratiquants ayant la même vision des arts martiaux.

 

Soirée "Bonita" - au Lorraine JUG le 18 octobre 2010

Soirée «Spring 3 en production» 18 octobre 2010 | 18h30-21h30 | ESIAL, Villers-lès Nancy 

Le Lorraine JUG (Java User Group de Lorraine) vous invite à sa soirée de conférence dédiée à l'utilisation du framework Spring 3 en production.

Lundi 18 octobre 2010, 18h30

Ecole Supérieure d'Informatique et Applications de Lorraine

193 av. Paul Muller, 54602 Villers-lès-Nancy (plan d'accès)

Au programme de la soirée :

18:15 - Accueil et enregistrement

18:30 - Bonita Open Solution, Aurélien Pupier (BonitaSoft)

Bonita Open Solution est la première solution Open Source complète de Business Process Management (BPM). Basée sur un moteur de workflow robuste, elle fournit tout l'outillage nécessaire pour créer efficacement des applications d’automatisation de processus métier, avec tous les bénéfices de l'approche BPM et une forte connectivité avec les systèmes d'informations existants.

Cette présentation introduira d'abord le concept du BPM et ses objectifs, puis une démonstration de Bonita Open Solution montrera comment elle peut être utilisée pour implémenter des applications métier. Ensuite, nous étudierons les choix et l'architecture techniques et nous verrons comment Bonita tire parti de technologies bien connues et efficaces (Eclipse RCP, Goolge Web Toolkit, Hibernate, Groovy...). Nous pourrons même donner quelques détails sur la manière dont l'équipe de Bonita utilise Scrum pour gérer le cycle de développement du produit..

Aurélien Pupier participe au développement du Studio de Bonita Open Solution chez BonitaSoft depuis plus d’un an. Il est passionné par l’environnement Eclipse, particulièrement des parties PDE, RCP, Modeling (EMF/GMF), Tests (SWTBot) et Performance (MAT, TPTP)

19:15 - Drink & tombola

19:45 - Bonita Open Solution, Julien Dubois

20:30 - Jazoon afterglow, Jean-Michel Doudoux & Wilfried Trombini

Jean-Michel Doudoux, membre de l'équipe du Lorraine JUG, et Wilfried Trombini, heureux gagnant du «Pass Jazoon 2010», nous proposent une petite mise en lumière des sujets qu'ils ont le plus appréciés lors de la conférence zurichoise. Tout juste de quoi nous mettre en appétit avant Devoxx...

L'inscription est gratuite et le nombre de places est limité alors n'attendez pas !

Inscription sur JUG Event

Pour en savoir plus consultez le blog http://blog.lorrainejug.org ou envoyez un e-mail à info@lorrainejug.org.

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.

 

 

- page 2 de 4 -