Troisième jour de Jazoon 2009. Journée fort active avec beaucoup de sessions qui ont titillé notre intérêt.

Au menu :

  • The Changing Nature of Enterprise Java Application Development
  • Portlet 2.0 One year later
  • What’s New and Exciting in JPA 2.0
  • Applying Activity Based Costing (ABC) from Code Profiling up to Performance & Cost Management of Cloud Computing
  • You call that full stack ? First class JavaEE and JavaFX integration
  • Entreprise Integration with Spring Integration

Keynote

The Changing Nature of Enterprise Java Application Development

Adrian Colyer, CTO de SpringSource, nous livre sa vision des changements à venir dans le monde des applications d’entreprise. Le discours est vraiment intéressant sur le fond, parfois métaphorique à l’excès (la forêt pluviale, les nouvelles espèces, le soleil -Sun-), mais malheureusement traîne sérieusement en longueur.

Finalement, il passe quelques grandes idées exprimées explicitement, et aussi quelques idées entre les lignes :

  • « Le soleil se couche. Sun va mourir à petit feu, étouffé par Oracle. »
  • « Le JCP (Java Community Process) est poussif. »
  • [entre les lignes] « Oracle is evil. La communauté est en danger. Nous [SpringSource] sommes les sauveurs. »
  • « Il y a un printemps des nouveaux langages pour la JVM (JRuby, Groovy, Clojure, Scala, Erlang) et des nouveaux frameworks dynamiques (Rails, Grails, etc.). »
  • « Le langage Groovy et le framework Grails [SpringSource] seront les seuls véritablement adoptés. »
  • « Le développement, le déploiement, et l’exploitation vont être de plus en plus intégrés. »
  • « OSGi est une réponse générale. »
  • « dm Server [SpringSource] est une réponse concrète. »

Fond intéressant, mais la présentation un peu tristounette ne rend pas grâce au flamboyant et enthousiasmant portefeuille de Spring.

Matin

Portlet 2.0 One year later

Thomas Heute de JBoss nous présente un retour d’expérience, un an après la sortie de JBoss Portal, qui supporte la spécification Portlet 2.0. Il fait un tour d’horizon des nouvelles fonctionnalités de Portlet 2.0, telles que la communication entre Portlets. Pour lui, toutes les nouvelles fonctionnalités ne seraient pas toujours utilisées à bon escient ; les développeurs les appliquent souvent à des problèmes pour lesquels elles ne sont pas conçues. Thomas évoque aussi la confusion qui peut exister entre les termes Portlets, gadgets, widgets, et comment ils peuvent êtres utilisés ensemble.

What’s New and Exciting in JPA 2.0

Mike Keith nous parle des nouveautés en cours de développement dans la spécification JPA 2.0 (Java Persistence API) :

  • mapping évolué, indispensable pour les schémas de bases de données legacy, souvent exotiques,
  • gestion du cache,
  • gestion évolué du verrouillage (optimiste et pessimiste),
  • améliorations diverses de JPQL (Java Persistence Query Language),
  • nouvelle API de requête (Criteria API), qui permet de formuler des requêtes sous forme de code Java.

Des nouveautés qui vont substantiellement améliorer notre quotidien avec JPA.

Sans conteste, la Criteria API est l’ajout le plus volumineux. Enthousiaste sur le sujet, j’avais suivi les travaux, et les dialogues entre Linda de Michel, et Gavin King, notamment. Les API de ce type n’ont jamais été une grande réussite dans les ORM en général, et j’en espérais beaucoup. Peut-être trop. Le parallèle entre une requête exprimée en JPQL et la même en Criteria API n’est pas vraiment en faveur du second en termes de lignes de code. La Criteria API permet cependant une approche fortement typée. C’est un avantage certain.

Nous avons longuement conversé avec Mike Keith qui a répondu avec beaucoup de gentillesse aux nombreuses questions. Thank you Keith. Mike Keith est également l’auteur d’un extraordinaire (et je pèse mes mots) ouvrage de référence sur JPA, Pro EJB3 Java Persistance API. La mise à jour pour JPA 2.0 est disponible en bêta.

Applying Activity Based Costing (ABC) from Code Profiling up to Performance & Cost Management of Cloud Computing

Pour Willam Louth de Jinspired, nous allons bientôt commencer à recevoir des factures pour des services de cloud computing. Elle proviendront d’Amazon, Google et consorts. D’où la nécessité de bien gérer sa consommation de services.

Une première partie très intéressante de la présentation se concentre sur une analogie entre la gestion de la consommation domestique (en particulier du lave-linge), d’une part, et les applications déployés sur le cloud, d’autre part. Associer un coût au lavage d’un type de linge revient ainsi à associer un coût à chaque application. Les coûts du lavage, du rinçage et de l’essorage sont ainsi analogues aux coûts de l’activité du logiciels (entrées, sorties, calcul…). Les coûts de détergent et d’eau correspondent eux aux coûts logiciels et de stockage sur le cloud.

Dans une deuxième partie, nous avons droit à une démonstration d’un framework permettant de spécifier et mesurer différentes métriques, de les combiner, puis de leur associer des coûts à des fins d’analyse. L’outil a recours à des techniques d’AOP pour effectuer des mesures à l’exécution. Il ne nécessite donc pas de modifier le code source de l’application.

Après-midi

You call that full stack ? First class JavaEE and JavaFX integration

Ed Burns de Sun nous présente rapidement JavaFX, et nous fait part de sa conviction que JavaFX se destine d’abord aux applications d’entreprise. Il présente divers patterns d’intégration entre Java EE et JavaFX. Intéressant ! Mais, on a l’impression que tout n’est pas encore au point du côté de JavaFX. Et pour la première fois dans cette conférence, une démonstration mettant en œuvre un IDE (ni Eclipse, ni NetBeans, ni IntelliJ) … XEmacs ! Et sous Mac OS X, bien sûr !

Entreprise Integration with Spring Integration

Ils nous ont gardé le meilleur pour la fin. Agim Emruli de SpringSource nous présente Spring Integration, un ajout récent (tout est relatif) au portefeuille Spring. Pas de doute, l’orateur est excellent, le produit enthousiasmant, et la présentation fluide et sans faille.

Spring Integration propose un modèle de programmation décliné à partir des patterns de l’ouvrage fondateur Enterprise Integration Patterns (qu’on se saurait suffisamment recommander).

Le framework s’articule autour des 3 grands concepts :

  • le message, la représentation de la donnée échangée,
  • le chanel, le canal d’acheminement du message,
  • le end point, un point d’émission ou de réception d’un message.

En résumé, un message est émis depuis un end point source vers un end point destination via un chanel.

Un message se compose d’un header (entête) et d’un payload (contenu).

Un chanel peut être, entre autres :

  • une communication directe en mémoire,
  • une file d’attente,
  • une file d’attente priorisée,
  • une file de type publish / subscribe.

Un endpoint peut être, entre autres :

  • un traducteur de message (message translator),
  • un activateur de service (service activator),
  • un routeur (router),
  • un fragmenteur (splitter), un aggregateur (aggregator).

Un chanel adapter (adaptateur de canal) fournit l’implémentation d’une extrémité d’un canal, c’est à dire l’entrée (inbound) ou la sortie (outbound). Un chanel adapter peut notamment être implémenté en se fondant sur :

  • JMS,
  • un échange de fichier,
  • un service web,
  • HTTP,
  • RMI,
  • un mail.

Comme à l’habitude avec Spring, l’ensemble du modèle de programmation est non-intrusif, fondé sur des POJO, et paramétrable par annotation ou par XML.

Du bien bel ouvrage !

Épilogue

Départ en trombe, direction l’aéroport ! En chemin, nous avons le temps de revenir sur les meilleurs moments. Franchement, ce Jazoon 2009 est un bon cru.

Au rayon des anecdotes, la densité des MacBooks et des iPhones était proprement impressionnante. Apple était-il un sponsor occulte de Jazoon ?