Evénement Jazoon 2009 : l'avenir du monde Java

Publié le 21 septembre 2009 par Mederic

J'ai eu la chance de pouvoir assister à la conférence Jazoon cette année. Tiré du site web officiel, Jazoon se définit comme "where Java people meet" en Europe, en bref une série de conférences autour de Java et de tout ce qui s'y rapporte. Ce billet est un résumé très condensé du déroulement de ces quatre jours avec une sélection des meilleures présentations techniques :
Alexis Moussine-Pouchkin de Sun nous présente en quelques slides ce qu'est GlassFish, un projet démarré en 2005, la première implémentation de JEE5. Aujourd'hui la version stable est la 2.1. La v3 arrive en automne et sera compatible JEE 6. Selon Alexis, s'il ne devait rester qu'une seule raison pour utiliser GlassFish, c'est qu'ils (les contributeurs) s'intéressent autant aux personnes de l'exploitation qu'à nous les développeurs, et on le reverra plusieurs fois dans la journée.
Roberto Chinnici de Sun nous a ensuite présenté JEE 6 et toutes ses nouveautés. On peut retenir:

  • Les profiles qui permettent de rassembler un ensemble minimum d'API nécessaires à certains types d'application. Le premier sera le Web Profile. Les autres devront passer à travers le JCP.
  • Le pruning, en résumé le passage en « deprecated » pour les anciens API (Entity Beans 2.0, JAX-RPC), ils seront supprimés de la version suivante.
  • Des mécanismes d'extensibilité pour faciliter la configuration de frameworks tiers.
  • Des nouvelles versions des composants: EJB 3.1 (nouveaux types de beans @Singleton, @Asynchronous, @Schedule), Servlet 3.0 (annotations, @WebServlet, fonctionnement asynchrone,...), JSF 2.0,...
  • Un déploiement facilité avec la possibilité de mettre des EJB directement dans un WAR
  • Des nouveaux API: Beans Validation et peut-être Web Beans (JSR-299)
  • Au final une release qui va encore dans la direction de la simplification et qui est prévue pour septembre de cette année.


Christian Frei, l’organisateur de Jazoon, et James Gosling, un des pères de Java nous expose quelques chiffres l’expansion de Java, 10 milliards d’appareils compatibles avec Java, 6 millions de développeurs professionnels et 15 millions de téléchargement de JRE par semaine. Java est aujourd’hui utilisé partout dans le monde et dans tous les domaines, santé, industrie, mobiles, jeux vidéo,… Ils nous présentent ensuite un petit panel des points forts et des nouveautés, comme GlassFish v3, NetBeans 6.7, Kenai (la forge qui va remplacer java.net), Java Real Time et JavaFX.


Dierk Konig (Canoo) nous propose Groovy, 7 usages pattern . Le langage Groovy est réellement intéressant mais j’ai toujours eu de la peine à identifier les réels cas d’utilisation envisageable dans le cadre du développement d’applications d’entreprise, cette session était l’occasion de trouver quelques réponses avec ces 7 propositions :

  • Super Glue, utiliser Groovy pour créer des applications basées sur l’infrastructure Java et les fonctionnalités Groovy, par exemple les capacités de réseau de Java, Swing et le parseur XML Groovy pour créer un lecteur RSS en quelques lignes de code.
  • Liquid Heart, un peu l’opposé du précédent, dans une application Java complète, utiliser Groovy juste pour coder certaines règles métier qui risquent de, ou qui vont souvent évoluer.
  • Keyhole Surgery, mettre en place une back-door temporairement dans une application pour y exécuter des scripts Groovy, par exemple pour faire un bug fix rapide facilement testable qui sera par la suite corrigé en Java.
  • Smart Configuration, c’est simple, il s’agit de remplacer le XML par du Groovy, l’avantage étant de pouvoir en plus ajouter de la logique dans les fichiers de configuration.
  • Unlimited Openess, consiste à tout faire en Groovy, c’est ce que propose Grails. L’idée est de s’appuyer uniquement sur l’infrastructure Java et de suivre l’exemple PHP ou Python.
  • House elf, déléguer à Groovy toutes les tâches qui font le quotidien du développeur mais qui ne sont pas du développement, par exemple des scripts de build, de l’intégation continue, du déploiement,…
  • Prototype, créer les prototypes en Groovy et les migrer (ou pas dans certains cas…) en Java par la suite. L’utilisation de Grails permet de créer des prototypes et de faire par exemple valider les objets du modèle de domaine au client très rapidement.


Puis Benjamin Bratkus (Crédit Suisse) et Micha Kiener (mimacom) présentent JSF et Ajax au Crédit Suisse. Le Crédit Suisse a standardisé sa technologie de présentation autour de JSF développant plus de 70 composants utilisé par 90 applications. Aujourd’hui pour répondre à de nouveaux besoins utilisateurs, des solutions ont dû être trouvées avec des technologies de type Ajax ou Ajax Push. La solution retenue est d’utiliser le système « direct-to-dom rendering » implémenté par ICEFaces. Ce système permet de limiter au maximum le JavaScript côté client et de conserver le maximum de traitement côté serveur ce qui sied particulièrement bien aux contraintes de sécurité liées au monde bancaire. Au final il a été possible d’intégrer cette technologie sans aucun impact sur les 70 composants existants, la migration s’est faite en une seule journée (!).


Cette seconde journée s’est terminée sur deux très bonnes présentations de Neal Ford et Ivar Jacobson, l’une traitant du futur du développeur, où plutôt d’essayer de le deviner pour ne pas devenir un dinosaure de l’informatique. Il semblerait bien que le développeur doive devenir polyglotte pour survivre, je crois que je vais commencer à pratiquer Groovy plus activement ! L’autre présentation nous expliquait la différence entre un développeur « unsmart » et un développeur « smart », avec entre autres l’exemple d’un architecte au chaud dans sa tour d’ivoire et un architecte pragmatique confronté à la réalité du projet et du code.


La troisième journée, Danny Coward de Sun, chef architecte de toute la partie cliente de Java (SE, ME, FX,…) nous présente les changements dans JavaFX 1.2 et les nouvelles fonctionnalités à venir dans Java SE 7. Voici son top 5 pour le JDK 1.7 :

  • Modularité, il sera possible de créer des modules et de définir des dépendances sur ces modules en spécifiant des versions. Cela devrait, tout le monde l’espère, normalement adresser la problématique des conflits de versions dans les dépendances de librairies. Peut-être la fin du cauchemar du classpath !
  • Langages multiples, le support de langages tiers (JRuby en priorité) sera amélioré et surtout optimisé.
  • Ajouts dans le langage (Project Coin), quelques nouveautés au niveau du langage lui-même comme le switch supportant les chaines de caractères ou une meilleure gestion des types génériques lors des instanciations (diamond).
  • Un nouvel API I/O qui propose par exemple des facilités d’accès au système de fichier, de la notification de changement ou des opérations asynchrones.
  • Un nouveau garbage collector, déjà disponible en RC dans JSE 6 Update 14, qui permet d’assurer des pauses de GC courtes et prédictibles.

Le top 5 pour JavaFX 1.2:

  • S’exécute sur plus de plateformes qu’auparavant, incluant Linux, OpenSolaris, un téléviseur LG et des téléphones portables de développement (HTC Diamond) dont les versions commerciales devraient arriver sous peu.
  • Plus de composants qui permettent maintenant de créer plus facilement des applications de gestion et des formulaires.
  • Des layouts qui permettent de positionner facilement ces nouveaux composants.
  • Des performances en hausse, jusqu’à 40%.
  • Plus de moyens d’accéder à des données, support des formats RSS, lecture asynchrone de données et un API de stockage local de données.

Il nous a fait plusieurs démos lors de sa session et il faut bien dire que JavaFX semble tranquillement, mais sûrement, rattraper son retard sur ses concurrents, espérons que l’outillage suivra !


Dan Bergh Johnsson (Omegapoint) nous expose The Power of Value - Domain Driven Design and Value Objects. Cette présentation, extrêmement bien animée par ailleurs, nous a montré à quel point l’utilisation de Value Objects intelligents (et on ne parle pas ici de DTO) peut diminuer la complexité du code métier, faciliter la gestion de la concurrence et améliorer la lisibilité des API des services et la testabilité. Avec l’exemple tout simple du numéro de téléphone qui doit respecter un certain pattern, il nous a montré comment refactorer une fonctionnalité end-to-end de la couche de présentation à la persistance et quels gains sont obtenus. Il est ensuite allé plus loin avec un refactoring plus poussé sur un exemple de paiement par carte de crédit mettant en œuvre des Value Object composite. Une présentation vraiment très intéressante et pleine de bonnes idées à retenir. D'autres informations sur le sujet sur le blog de Dan.


La présentation Metro Web Services Security Usage Scenarios par Harold Carr (Sun) nous décrit plusieurs moyens de sécuriser des Web Services. Metro propose plusieurs profils de sécurité qu’il est possible d’activer et de configurer depuis NetBeans. Sa présentation, bien que très technique, était remplie d’informations et de schémas qui m’ont permis de mieux appréhender les innombrables possibilités de sécurisation disponibles pour les WS. A conserver précieusement dans les ressources sur le sujet.


La dernière session était Jazoon Rookies, un concours organisé pour permettre à des « Java Rookies » de venir présenter, devant la communauté, un projet sur lequel ils ont travaillé. Je retiendrai surtout la présentation de João Arthur Brunet Monteiro, DesignWizard: A Tool that Gives Support to Automatically Check Your Code Against Design Rules. Cet outil permet de définir des règles de design à respecter et de les exécuter en tant que tests JUnit. On peut par exemple définir une règle qui contrôle que seules les classes du package service utilisent les classes du package dao et cela très simplement. Plus d’informations sur le site officiel DesignWizard.


La keynote d’ouverture du dernier jour est présentée par Adrian Colyer, CTO de SpringSource. Après avoir fait une rapide analogie entre l’industrie logiciels et une forêt tropicale (quelques géants qui dominent le paysage, la difficulté de percer pour ceux qui sont dessous et de temps en temps une clairière qui permet à des nouveaux de grandir), Adrian estime que l’on est à l’aube d’une nouvelle ère et que beaucoup de choses vont émerger ces prochaines années. Tout d’abord il parle de l’arrivée des nouveaux langages comme Groovy, Scala, Ruby, qui peuvent être vus comme des alternatives et/ou des compléments à Java. Ces langages montrent des forces selon deux axes, l’augmentation de productivité avec des outils comme Grails ou JRuby et la facilité de gérer la programmation concurrente, ce point sera particulièrement important ces prochaines années avec la multiplication des cœurs intégrés dans les processeurs. Il retient particulièrement Groovy de par sa facilité d’intégration avec Java, ce qui parait logique dans la mesure où SpringSource emploie maintenant les principaux contributeurs de Groovy. Ce qui est certain, c’est qu’aujourd’hui plus que jamais un développeur doit être ouvert à plusieurs langages et utiliser le meilleurs disponible en fonction de la problématique à adresser.


Dans la présentation What's New and Exciting in JPA 2.0 de Mike Keith (Oracle) porte sur les principales nouveautés de JPA 2.0 qui sort bientôt (en septembre avec l’arrivée de JEE 6). Il insiste sur le fait que la version 1.0 répondait à la majorité des attentes qu’ont généralement les développeurs avec les outils d’ORM. Cette version 2.0 va répondre à certains cas d’utilisations plus spécifiques, elle a été construite sur les nombreux retours de la communauté. Voici les principales fonctionnalités :

  • Plus de propriétés communes pour configurer les entity managers
  • Une plus grande flexibilité pour le mapping de Map et de List
  • De nouvelles capacités pour les objets Embeddable avec la possibilité de créer des compositions
  • La possibilité de mélanger les modes d’accès aux champs d’une classe
  • De nouveaux API, notamment pour la gestion d’un cache partagé
  • Un système de lock pessimiste
  • Et finalement le nouvel API Criteria qui permet de construire des requêtes en Java à la place d’utiliser le query language. Cet API fonctionne soit d’une manière très proche de celui d’Hibernate avec des chaines de caractères pour définir les critères, soit avec un système fortement typé qui permet d’assurer un contrôle de type complet à la compilation. Si ce système offre un contrôle plus élevé, il nécessite d’écrire ou de générer un meta-modèle des entités et le code écrit pour définir une query et beaucoup moins lisible qu’une requête JP QL.


Dalibor Topic (Sun) nous présente le projet OpenJDK, notamment les buts déjà atteints comme la disponibilité de portages OpenJDK 6 sur plusieurs distributions Linux (Fedora, RHEL, Debian,...). Des portages sont également en cours pour BSD. Il faut savoir que le projet OpenJDK est l'endroit où se construit le JDK 7, toutes les nouvelles fonctionnalités de la prochaine version majeure de Java sont développées ici en tant que sous-projets. Plusieurs Milestones du JDK 7 sont déjà disponibles et ils ciblent le premier trimestre 2010 pour la version finale.


Pour clore ces 4 jours, les organisateurs ont invité Linda Cureton, CIO de la NASA, elle nous a présenté Web 2.0 @ NASA, session durant laquelle elle a insisté sur l'importance des réseaux sociaux pour une agence comme la NASA. Il est intéressant de noter qu'ils ont mis en place un Spacebook interne dont le but est de faciliter la communication et le partage de l'information au sein de l'agence. Et ce Spacebook a été développé sur la base de Liferay, portail open-source Java.
Jazoon’09 était une conférence riche en informations que je recommande chaudement à toutes les personnes qui travaillent quotidiennement avec cette technologie. L'édition 2010 est déjà annoncée par Christian Frei. Pour ceux qui aimeraient plus de détails, il faut savoir que toutes les slides des présentations sont disponibles en téléchargement sur le site officiel, de plus certains enregistrements vidéo sont disponibles sur parleys.com.
A l’année prochaine !

Article par Frédéric Chopard