JSF en quelques mots

Posté par Romain Linsolas, le 28/06/2007.

Article paru dans la newsletter #20 – Ete 2007

Cet article a pour objectif de présenter les concepts de base de Java Server Faces.

Introduction

La JSR-127 nous répond en une phrase à la question « JSF, c’est quoi ? » : selon ses propres concepteurs, JSF, ou Java Server Faces consiste en “an architecture and APIs which simplify the creation and maintenance of Java Server application GUIs”. Etudions cela de plus près…

Ainsi, JSF est un framework permettant de construire des interfaces utilisateurs (UI) pour des applications Web Java. Il propose un modèle de composants graphiques réutilisables gérés côté serveur, les UI Components, qui repose sur un modèle événementiel.

La technologie JSP ne propose pas une infrastructure de présentation satisfaisante : elle ne sert qu’à générer des pages dynamiques. Des outils de plus haut niveau, comme Struts, sont apparus : il s’agit de frameworks MVC, qui ne proposent pas de véritables modèles événementiels : on était loin des Webforms proposés par Microsoft.

JSF définit une norme par le biais d’une API dont le rôle est de fournir aux développeurs une large palette d’outils leur permettant d’implémenter des applications Web en respectant un modèle bien précis. Ce, quelque soit le type de développeurs (Corporate ou IT), ce qui est une nouveauté.

Précisons que la technologie JSF est développée au sein du Java Community Process :

  • JSR-127 : JSF 1.0 (mars 2004) puis JSF 1.1 (mai 2004).
  • JSR-252 : JSF 1.2 (mai 2006).

Les origines de JSF

Les pages Web deviennent de plus en plus complexes : le modèle qui consiste à voir les pages Web comme des flux de caractères en les générant à l’aide de code Java mélangé à du code HTML a montré ses limites car il y a un conflit de métiers différents :

  • Les graphistes doivent comprendre la logique applicative à l’intérieur des pages.
  • Les développeurs doivent maîtriser l’art de la création graphique en HTML.

Pourtant, une page Web a un comportement similaire à celui d’une application lourde type Swing : un acteur déclenche des événements sur une interface graphique composée de contrôles et le framework propose un socle permettant d’accéder aux différents composants du formulaire à l’intérieur de ces mêmes événements.

D’où l’idée de base de JSF : considérer les pages Web comme un modèle de composants graphiques hiérarchiques, comme Swing.

Présentation de JSF

JSF, c’est une API standard qui permet de manipuler des composants.
L’API de JSF permet de représenter les composants, de gérer leur état et leur comportement. Elle facilite l’écriture d’interfaces utilisateurs en fournissant une bibliothèque de contrôles :

  • Simples : zones de saisie classiques, boutons, liens hypertextes.
  • Complexes : tableaux de données modifiables ou non…

Elle permet même de créer ses propres composants, ou d’enrichir les composants existants.

JSF est basée sur un modèle événementiel simple. L’API de JSF fournit en effet un modèle événementiel simple qui définit comment gérer les événements générés par des actions sur les composants : à un événement généré côté client correspond un code applicatif exécuté côté serveur.

JSF est basée sur un modèle de rendu séparé. JSF sépare la définition et le rendu des composants : JSF fournit un modèle de rendu séparé qui définit comment les composants doivent être générés. Par exemple :

  • Le composant UICommand peut être rendu sous la forme d’un lien hypertexte ou sous la forme d’un bouton.
  • Un certain composant peut être rendu d’une certaine façon pour un client donné et d’une autre façon pour un autre client. Cela permet notamment de prendre en compte proprement les différences entre les navigateurs, mais aussi des clients hétérogènes (HTML, WML, etc.)

Enfin, JSF permet également les fonctionnalités classiques. Son API fournit également ce qu’il faut pour gérer :

  • La validation et le traitement et des formulaires : notion de validators.
  • La conversion des données entre la couche Présentation et la couche Modèle : notion de converters.
  • L’internationalisation des messages.
  • L’accessibilité de l’application.
  • La navigation entre les pages.

JSF, c’est également deux taglibs JSP qui permettent de placer les UI Components dans les pages JSP, mais également de relier les UI Components à des objets côté serveur.

En résumé

On peut donc voir JSF comme un mélange de Struts et de Swing.
Comme Struts, JSF permet la gestion du cycle de vie d’une application Web via une servlet controller.
Comme Swing, JSF fournit un riche modèle de composants avec gestion des événements et du rendu des composants.

François Goldgewicht

Tags:

One Response to “JSF en quelques mots”

  1. Ashley Apalategui Says:

    If you want something you’ve never had, you’ll have to do something you’ve never done.

Leave a Reply