Paris JUG octobre 2009 : JSF2 et Servlet 3.0

Tout d’abord, une bonne adresse à noter : si vous ratez les rendez-vous du JUG Parisien, vous pouvez désormais les rejouer à cette adresse http://beta.parleys.com/#st=4&id=56644.

JSF 2.0

La présentation JSF2 faite par Damien Gouyette et François Petitit a détaillé, non pas uniquement les nouveautés JSF2, mais une présentation complète du framework en marquant les nouveautés 2.0.

La présentation est intéressante même pour un débutant JSF. Je ne détaillerai ici que les nouveautés de la mouture 2009 du framework d’IHM de la spec JEE.

On note que JSF2 est bien entendu, complètement inclus dans JEE6 (dont Antonio Goncalves rappelle qu’il fera une présentation au Paris JUG de décembre) et est compatible JEE5.

Voici donc les nouveautés :

  • Une déclaration des managed beans de la sorte :

@ManagedBean

@SessionScoped

public class MonBean {

}

La convention dit que ce bean sera accessible dans la vue par son nom de classe ; première lettre en minuscule : ‘monBean’

  • Validation des vues via les annotations Hibernate Validator (ce qui permet une vérification centralisée des contraintes)
  • Un nouveau scope, le ‘view scope’ ayant une durée de vie égale à la durée de vie de la vue. Scope qui s’intercale donc entre request et session
  • Un des principaux apports de cette nouvelle version est le support natif d’AJAX. On ajoute le support Ajax à un composant JSF en insérant le tag <f:ajax>

<h:inputText ….>

<f:ajax render= »autreChamp » />

</h:inputText>

  • Les Jsp sont abandonnées (mais restent compatibles) au profit des Facelets XHTML. Les Facelets apportent notamment le concept de « templating », permettant de réutiliser aisément des sections de la vue.
  • EZComp permet de créer facilement des composants uniquement via les Facelets (plus de Java nécessaire pour des composants simples) en leur déclarant une interface puis un contenu créé de façon similaire à celui des vues qui sont, elles aussi, des Facelets.

Un exemple des plus classiques : ici on a créé un composant qui prend un attribut ‘value’ :

<!DOCTYPE html PUBLIC « -//W3C//DTD XHTML 1.0 Transitional//EN »

« http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd »>

<html xmlns=« http://www.w3.org/1999/xhtml »

xmlns:h=« http://java.sun.com/jsf/html »

xmlns:ezcomp=« http://java.sun.com/jsf/composite »>

<body>

<ezcomp:interface>

<ezcomp:attribute name=« value » required=« true »/>

</ezcomp:interface>

<ezcomp:implementation>

<!– Les mots clés cc.attrs sont réservés par JSF2 pour accéder aux attributs/paramètres passés au composant –>

<h:outputText value=« Hello #{cc.attrs.value} » />

</ezcomp:implementation>

</body>
</html>

Ce composant est déclaré dans ‘WEB-INF/resources/’ puis utilisé tout simplement :

<ez:mycomp value= »world » />

Je vous laisse deviner le résultat …

  • Un autre apport non négligeable est la gestion de profils d’environnement : « prod », « testUnit » …
  • La gestion des ressources statiques est améliorée : on n’a plus besoin de gérer ces ressources dans le WEB-INF de son projet. Elles peuvent être apportées par un jar.

On note donc une évolution de la spec, reprenant de bonnes idées. On retrouve notamment de nombreux concepts apparus dans des frameworks et librairies JEE comme Seam ou ajax4jsf.

Servlet 3.0

Mon retour sera beaucoup plus rapide sur ce sujet qui nous touche quotidiennement … mais de loin puisque les frameworks que nous utilisons nous font travailler à un plus haut niveau.

La présentation de l’API par Rémy Maucherat concernait donc plus particulièrement les personnes développant ces frameworks. Néanmoins un tour d’horizon permet d’apercevoir quelques impacts sur notre façon de travailler avec ces frameworks :

  • Actuellement, lors de l’ajout d’un framework il est nécessaire de configurer le fameux fichier web.xml afin de notifier le conteneur de servlet de la présence de ce framework.Cela sera remplacé par des web-fragments vivant à l’intérieur des jars des frameworks et donc intégrés au web.xml par le conteneur à l’initialisation.
  • Le deuxième point marquant est la gestion de l’exécution asynchrone des Servlets. Actuellement on réserve un processus pour traiter une requête et la gestion asynchrone devait être gérée par ailleurs.
    Servlet 3.0 permet de rendre un traitement asynchrone et donc de libérer des ressources tout en ayant des requêtes longues. En travaillant sur ce point les frameworks devraient gagner en performance.

Fortement lié au contenu de ce post, un post précédent traitait des nouveautés JEE6.

Une réflexion au sujet de « Paris JUG octobre 2009 : JSF2 et Servlet 3.0 »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *