lundi 16 février 2009

Nouveautés de Java EE 6

Java EE 6 est la prochaine version majeure de la plateforme entreprise de Java. Attendue pour l'été 2009, cette version apportera son lot de nouveautés et de simplification comme l'avait fait Java EE 5 à sa sortie.
JEE 6 arrivera notamment avec JSF 2.0, JPA 2.0, EJB 3.1, Servlet 3.0, JSP 2.2, EL 1.2 et JMS 1.1.

Un bon nombre d'anciennes technologies seront supprimées de la spécification afin d'alléger la plateforme et de se tourner vers le futur, soit parce qu'elles sont actuellement remplacée par de nouveaux outils, soit parce qu'elles nous pas rencontré le succès espéré. Les technologies concernées par ce nettoyage sont :
  • EJB 2.x
  • JAX-RPC, remplacé par JAX-WS
  • JAXR
  • Java EE Application Deployment (JSR-88)
  • Java EE Management (JSR-77)
Les nouveautés qui m'ont le plus marqué pour moment sont celles de JPA 2.0, qui proposera une API criteria dans l'esprit de celle d'Hibernate, et celles de JSF 2.0. Cette dernière s'annonce comme beaucoup plus simple que la version 1.2.
Outre l'ajout d'un scope page en plus des scope session et request, la spécification promet un paramétrage sans fichier xml et l'utilisation de facelet comme technologie de présentation par défaut (adieu les JSP dans JSF).

Du côté d'EJB 3.1, Sun continue sur sa lancée de simplification en rendant les interfaces des EJB Session facultatives. Les Session Bean pourront désormais exposer des méthodes asynchrones grâce à l'annotation @Asynchronous, nous ne serons donc plus obligés d'utiliser JMS pour déclencher ce type de traitements.
Un mode singleton sera également proposé ainsi qu'une version allégée des EJB appelée EJB Lite, amputée des fonctions de remoting, de scheduling et de déclenchement par messages JMS.

Un autre sujet brulant de Java EE 6 est celui des WebBeans (dont le nom n'est d'ailleurs pas définitif). Ce nouveau type de composant inspiré du modèle de JBoss Seam permet d'unifier les composants JPA, EJB et JSF.
Un EJB ou une classe Entity JPA déclaré comme WebBean grace à une annotation pourrait donc intégrer les traitements se trouvant habituellement dans un managed bean (ou backing bean) JSF. Un WebBean pourra être appelé en Java ou depuis une EL.
N'ayant pas encore mis en pratique ce nouveau type de composant, je ne prononce pas encore sur la question mais je reste sceptique car la séparation en couche, à savoir avoir un managed bean JSF pour la partie User Interface et un EJB pour les traitements métier et les appels à la couche base de données, a selon moi son utilité et tout mélanger pourrait limiter la réutilisabilité du code...

Enfin, cette version de la plateforme Java EE apportera la notions de profiles. Un profil sera une sous partie de la spécification, couvrant uniquement les fonctionnalités qui correspondent à un besoin particulier. Le profil Web intégrera par exemple Servlet, JSP, JSF, EJB Lite mais pas EJB (Full) ni JMS.

Dans un prochain article je vous parlerai des nouveautés de Java 7 (la plateforme SE et le langage).