Avec du retard et avec l'ouverture de ce blog, je mets comme premier billet mon carnet de voyage du salon JavaOne 2006.
JavaOne 2004 était marqué par Java 5, JavaOne 2005, par l’AJAX, JavaOne 2006 ne semble pas avoir eu une dominante particulière… Mais avec plus de 15000 personnes présentes, JavaOne montre que le langage Java est maintenant omniprésent et dans tous les secteurs de développement : banque, télécom, services…
Beaucoup de nouveautés, avec pour discours de fond pour l’ensemble des éditeurs, l’Open Source. Jonathan Schwartz, le nouveau CEO de SUN, a annoncé la mise en open source du cœur de Java (JVM). Cette annonce fait suite à la mise à disposition du code source de beaucoup de logiciels de l’éditeur avec entre autre :
- Java System Portal Server 7, (la version 6 est utilisée pour intralignes v2)
- Java Studio Creator
- Le moteur BPEL, de SeeBeyond, racheté par Sun dernièrement,
- Le serveur d’application GlassFish, implémentation de référence pour JEE 5.0
J’aborderai dans ce carnet de voyage les points principaux suivants :
- JEE 5,
- AJAX, Web2.0,
- le client Riche
- SOA
JEE 5
Beaucoup de sessions intéressantes détaillent le contenu de cette nouvelle version de JEE 5 qui comprendra :
- EJB 3.0 : cette version va simplifier rééllement le développement d’applications d’entreprise avec gestion de la persistance, des transactions, de l’asynchrone sur de simples classes Java. L’utilisation d’Hibernate nous permet une simplification de la persistance mais maintient une complexité avec les fichiers de mapping XML, alors que les EJB 3.0 avec les annotations dans le code simplifient encore l’écriture.
- L’intégration des JSF 1.2. Cette intégration d’un framework Web à l’intérieur de la spécification JEE devrait faire de plus en plus d’ombre aux multiples autres frameworks web Open source et notamment à Struts. Le passage technologique à JSF pour remplacer notre existant Struts + Welcom (librairie de tags JSP) pourra se faire à l’occasion du passage à JEE 1.5
- De nombreuses spécifications WebServices, analysées et testées à l’occasion du projet KAOJAII (le numéro entre parenthèses fait référence à la spécification) :
o Implementing Enterprise Web Services (JSR 109) : facilite le déploiement avec un fichier de déploiement XML normalisé.
o Java API for XML-Based Web Services (JAX-WS) 2.0 (JSR 224) : beaucoup d’apport avec cette librairie majeure WebServices permettant de simplifier la mise en oeuvre. Elle statut sur les annotations de code permettant de transformer une simple classe en service Web
o Java API for XML-Based RPC (JAX-RPC) 1.1 (JSR 101) : nouvelle version mineure du framework qui devrait être remplacé progressivement par JAX-WS
o Java Architecture for XML Binding (JAXB) 2.0 (JSR 222) : facilite la conversion object vers XML
o SOAP with Attachments API for Java (SAAJ) (JSR 67)
o Streaming API for XML (JSR 173) : lecture des flux XML accélérée
o Web Service Metadata for the Java Platform (JSR 181)
JSF
Les JSF continuent malgré leur intégration dans JEE 5 à être contreversés. Seam, le framework de Jboss, réalisé par Gavin King, l’auteur d’Hibernate (http://www.jboss.com/products/seam) propose une intégration différente de la specification entre JSF et EJB. Une JSR (Java Specification Request), du nom de Web Beans, propose une normalisation de cette solution.
AJAX – Web 2.0
L’AJAX continue à s’infiltrer dans tous les produits. Yahoo!, Google, Eclipse proposent maintenant leur frameworks. Ils ont tous leurs particularités. Les IDE commencent à intégrer un environnement de déploiement ou à intégrer la complexité de l’AJAX dans les tags JSF.
TIBCO propose un produit intéressant TIBCO General Interface avec de nombreux drag & drop possibles accélerant le développement AJAX.
Les interfaces de plus en plus évoluées réalisables avec AJAX permettent de n'envisager l'utilisation de client riche-lourd que pour des IHM vraiment complexes (drag and drop, zoom, diagrammes réactifs, etc.)
Client Riche lourd
La guerre pour la plateforme du client riche lourd continue avec l’énorme effort qu’a fait SUN cette année autour de Netbeans 5. La version 5.5 apporte encore des nouveautés. Eclipse RCP était également bien représenté avec notamment une session de l’OSGi. Cette alliance regroupant 35 sociétés, des éditeurs et des sociétés utilisatrices (tels que EDF, BMW….) propose une normalisation pour une plateforme commune de services. Eclipse RCP repose sur cette norme.
SOA
Beaucoup de présentations sur le SOA, avec l’émergence confirmée de l’architecture SCA (Service Component Architecture). BEA, IBM, IONA, Oracle, SAP, Siebel Systems, and Sybase travaillent à l’intégration de cette spécification normalisant le SOA. Une implémentation SCA open source, du nom de Tuscany (http://incubator.apache.org/tuscany/index.html), se développe rapidement dans la communauté Apache. Oracle intégre également SCA dans son moteur BPEL.
Seul SUN reste à l’écart de la spécification et continue à proposer JBI (Java Business Integration) qui standardise plus l’écriture de l’ESB (Enterprise Service Bus) que la façon dont doivent s’orchestrer les services contrairement à SCA. J’espère qu’une intégration à terme des 2 normes pourra faire avancer le monde SOA en Java et concurrencer plus facilement l’offre Indigo de Microsoft. Le désaccord des éditeurs logiciels du monde Java fragilise leurs discours.
Il est à noter que TIBCO va respecter la JSR JBI dans son prochain produit Matrix, mais pas SCA.
Une session très intéressante présente l’interopérabilité des WebServices avec Web Services Intererability Technology (WSIT). Ce framework de SUN, sous-projet de JAX-WS (intégré dans JEE5), facilitera l’intégration .Net/Java. IBM reste à l’écart de ses efforts d’interopérabilité notamment sur les questions de WebServices sécurité.
Miscallenous
Spring : framework J2EE
La session « Spring Update », m’a permis de voir l’utilisation de Spring dans de nombreux projets critiques (eBay, Ministère de l’économie (déclaration des impôts)…) et son intégration dans certains serveurs d’application (WebLogic de BEA)
Spring 2.0 pourra continuer à fonctionner avec un J2EE 1.3 malgré toutes ses nouvelles fonctionnalités : intégration de JPA (Java Persitence API, le socle des EJB 3.0), intégration encore plus forte de l’AOP (programmation orientée aspect) avec AspectJ.
Plusieurs modules semblent intéressants à tester :
- Spring-Mock : facilite les tests d’application J2EE avec gestion de bouchons.
- Spring WebFlow : diagramme d’état Web
Spring devient aussi incontournable que Struts avant l’arrivée des JSF. La sortie de JEE 5 devrait peut être limiter son importance et sa diffusion mais l’intégration réalisée dans Spring de nombreux OpenSource devrait maintenir son interêt.
CMS (Content Management System)
Une spécification importante, la JSR 170 Java Content Repository, utilisée dans de plus en plus de produits CMS et GED, devrait simplifier à terme notre gestion documentaire. En effet, cette API facilitant le stockage, la recherche, et la navigation entre documents va être intégrée dans la nouvelle gamme de produit IBM Workplace et devrait permettre l’accès aux bases Notes. Les Wikis, tel que Xwiki, s’orientent également dans cette direction.
Trois implémentations open source de cette spécifications existent :
- Exo Platform : (http://www.exoplatform.com/company/faces/public/company/home/products/jcr-intro) Exo est également utilisé à Air France comme portail de développement et de tests pour les portlets JSR 168. Son offre ECM (Enterprise Content Management) propose un GED complet en Opensource
- Apache JackRabbit : (http://jackrabbit.apache.org/)
- Alfresco, société issu d’anciens de Dcoumentum, proposant en open source un ECM (utilisant Spring, JSF, Hibernate, Lucene, JBOSS, MySQL…)
L’offre d’un outil de GED en open source commence à devenir mature.
En dehors de toutes les sessions techniques, JavaOne est l’occasion de partager avec un grand nombre d’experts techniques.