Par Antoine Sabot-Durand (Ippon Technologies) : Les rendez-vous manqués de Spring Seam : faciliter l'intégration de JSF et EJB...

Et Seam fut...

A la base Seam est un sacré pari, car l'objectif annoncé du framework était de faciliter l'intégration de deux standards mals aimés du monde Java : JSF et EJB. Nous avons déjà évoqué EJB3 dans les lignes précédentes, mais il faut garder à l'esprit que le nom EJB était (et est encore parfois) associé à la calamité des versions 2.1 et précédentes. Donc, EJB3 a mis du temps à percer, handicapé par le fait qu'il partage le patronyme de ses prédécesseurs.


Concernant JSF (Java Server Faces), pour faire court, cette spécification inclut des idées très innovantes (développement d'interfaces Web par composants, et programmation événementielle), mais sa version 1 fut entachée par des partis pris malheureux et des limitations incompréhensibles qui ont fait couler des flots de haine sur pas mal de blogs, comme en témoigne cet article célèbre. Si on additionne ces ratés à la résistance naturelle de toute communauté au changement, autant dire que JSF fut accueilli froidement par la majorité des développeurs Java et qu'aujourd'hui encore l'image de cette technologie est assez négative parmi une grande partie des développeurs qui ne l'ont jamais utilisé.

Seam s'est ouvert aux simples JSP puis plus tard à GWT, Flex ou Wicket

Néanmoins, un certain nombre de personnes décidèrent qu'il y avait "du bon en JSF" et qu'on pouvait travailler à en corriger les défauts sans remette en cause ses principes fondamentaux. Ce fut le cas de Gavin King qui imagina en 2005 un framework pour faciliter l'utilisation des EJB3 avec une application utilisant JSF comme technologie de présentation. JBoss Seam était né.

En route vers la standardisation

Dès le début de Seam (avant la version 1.0), King élargit la portée du framework. L'histoire ne dit pas vraiment comment c'est arrivé ni si tout ça était prévu dès le départ, mais on peut deviner qu'en essayant de mieux contrôler les managed bean de JSF, il a étendu Seam au support de composants définis sous forme de simples pojo en plus des EJB, et a finalement ajouté le support de la technologie concurrente : Spring. Puis, constatant la polémique autour de JSF et ne voulant pas hypothéquer le succès de son bébé, il a ouvert Seam à d'autres technologies de front comme les simples JSP puis plus tard, GWT, Flex ou Wicket (pour ce dernier, c'est la communauté Wicket qui étendit Seam pour assurer ce support, JBoss se contenta de l'intégrer officiellement au framework).


La version 1.0 de Seam sort en juillet 2006 mais c'est deux mois avant, en mai 2006 que Red Hat (qui a définitivement racheté JBoss en avril) soumet au JCP le projet de standardisation de Seam sous le nom de Web Beans. C'est le début de la fameuse JSR 299 qui prendra au final le nom de CDI pour sortir en décembre 2009 comme nouveauté dans Java EE 6.

Dès le démarrage de l'Expert Group, Gavin et son équipe commence à travailler sur l'implémentation de référence de CDI sous le nom de Weld.