Auteur : Laura Zunarelli Etudiante en Master 2ème année professionnel Génie Informatique en apprentissage Mail : [email protected] Synthèse réalisée dans le cadre de l’U.E. : Etude et Projet d’Intergiciels Résumé : De nos jours, il existe de plus en plus d’applications web et celles-ci sont de plus en plus compliquées. C’est pourquoi afin d’aider leur développement, on utilise des frameworks. Ces frameworks permettent d’assurer l’évolution et la fiabilité de ces applications web. Struts et JavaServerFaces (JSF) sont des standards parmi les frameworks de ce type. En s’appuyant sur le modèle MVC ils permettent une meilleure séparation entre les métiers d’informaticiens et ceux d’infographistes. Actuellement, la plupart des applications web utilisent Struts ou JSF voir les deux… Devenus incontournables dans ce domaine, nous allons, au cours de ce document, explorer plus en détails ces deux frameworks. Mots clés : Struts, JavaServerFaces, JSF, framework, modèle MVC, applications web. Abstract: Nowadays, there is more and more web applications and they are more and more complicated. That’s why, to help their development, we use frameworks. These frameworks enable to ensure web application reliability and evolving. Struts and JavaServerFaces (JSF) are standards among these frameworks. Based on the MVC model, they enable a better separation between computer scientists and infographists. Currently, the majority of web applications use Struts or JSF or the two… Became inescapable in this domain, during this document, we explore in more details these two frameworks. Key Words: Struts, JavaServerFaces, JSF, framework, MVC model, web applications. Introduction : Ce document porte sur deux frameworks standards pour la construction d’applications web : Struts et JavaServerFaces. Après une brève introduction sur les frameworks, l’application du modèle MVC dans Struts et dans JavaServerFaces (JSF) sera expliquée. Puis chacun des deux frameworks seront explorés plus en détails. Pour conclure, une constatation sur les principales différences entre ces deux frameworks et sur leur futur sera dressée. 1. Les frameworks Avant l’arrivée des frameworks, le développement d'applications Web était simplement constitué d’une page HTML et d’un navigateur. Aujourd'hui nous sommes confrontés au développement d'applications bien plus complexes. Pour cela nous utilisons des frameworks. Ces frameworks, ou : « cadre de conception » sont des espaces de travail modulaire. Il s’agit d’un ensemble de bibliothèques, d'outils et de conventions permettant le développement rapide d'applications. Leur but est d’accroître la productivité des développeurs dans le développement des interfaces utilisateurs, en fournissant une architecture facilitant leur maintenance. Ils permettent donc d’améliorer la réutilisabilité des applications, d’en accroître la fiabilité, de diminuer les coûts et délais de développement et d’assurer leur évolutivité. Avec leur apparition, de nombreux outils ont vu le jour. Parmi eux, Struts et JavaServerFaces (JSF). Ceux-ci constituent aujourd’hui les deux standards dans le domaine de la conception d’applications web. Ce sont ces deux standards que nous allons donc étudier plus en détails… 2. JSF, Struts, et le Modèle MVC a) Le modèle MVC L’un des principaux atouts de ces deux frameworks est l’utilisation du patron de conception MVC (Modèle, Vue, Contrôleur). Celui-ci, leur permet de mieux dissocier les métiers d’infographistes et d’informaticiens. En effet, ce modèle d’architecture est constitué de trois parties. La première : le contrôleur, reçoit les actions de l’utilisateur et gère la répartition des traitements entre la vue et le modèle. C’est cette partie qui gère toutes les entrées de l’application. Le modèle représente la partie métier de l’application : on y retrouve les états et la logique de l’application. La dernière partie : la vue, est la partie graphique destinée aux infographistes, dans laquelle seul l’affichage est géré. b) L’application du modèle MVC dans Struts et JavaServerFaces Le framework Struts est construit autour d’un puissant contrôleur, tandis que JSF, est principalement dédié à la couche vue. Craig McClanahan est le créateur de Struts et l’un des principaux acteurs de JSF. Il a donc occupé une place importante pour la création de ces deux frameworks, et est bien placé pour dire que JSF et Struts sont différents mais ne sont pourtant pas incompatibles. Il a ainsi suggéré une méthode d’intégration afin de combiner les deux frameworks. Le but étant de combiner les avantages de chacun. Cependant, Struts et JavaServerFaces n’ont pas été conçus de prime abord pour fonctionner ensemble dans une même application. En effet, Struts propose des tags libs pour la gestion des vues et une définition de la navigation au travers des pages. JSF, lui, fournit un manageur des cycles de vie de l’application au travers de servlets de contrôle. 3. Présentation de Struts a) Présentation générale Struts, fut le premier des deux frameworks à arriver sur le marché. Apparu en 1998, il eu beaucoup de succès. Compatible avec la plate-forme J2EE de Sun, Struts fait parti du projet Jakarta (mené par l'ASF, l'Apache Software Foundation). L'adresse officielle de Struts est : http://jakarta.apache.org/struts. Le succès de ce framework repose sur sa capacité à répondre aux besoins des développeurs actuels en termes de création d'applications et en termes de rapidité de mise en œuvre. Struts est une combinaison des servlets Java, des JSP, des balises personnalisées et des ressources messages qui forment une base unifiée. Struts est puissant, répandu, et mature. Dès son arrivée, il a su s’imposer pour les applications de grandes tailles. Cependant son utilisation de nos jours perd tout son sens pour les applications simples. En effet, pour les petites applications, l’application de Struts pourrait prendre bien plus de temps que la construction de l’application elle-même… b) Principes de mise en œuvre de Struts Une application basique de Struts est composée des trois parties du modèle MVC. Ces trois parties sont généralement situées dans trois dossiers différents. Les pages jsp exploitent des balises personnalisées de Struts : Exemple : <%@ taglib prefix="s" uri="/struts-tags" %> Il est cependant conseillé d’utiliser aussi la bibliothèque JSTL. Les servlets sont utilisées de manière transparente via des classes. La structure de l’application web doit être décrite dans un fichier: struts.xml. Ce fichier contient toutes les règles de navigations nécessaires à l’application. Exemple : <action name="HelloWorld" class="example.HelloWorld"> <result>/example/HelloWorld.jsp</result> </action> Dans cet exemple, en tapant l’adresse pour accéder à la page de bienvenue dans le navigateur, une redirection sera effectuée pour consulter la page HelloWorld à la place. c) Les bibliothèques de Struts: Voici un petit résumé des bibliothèques que l’on retrouve dans Struts : Les librairies Struts*.jar: contiennent les classes java distribuées par le projet Struts. Les fichiers commons*.jar sont utilisés par l’implémentation. Les autres fichiers *.jar sont importés par Struts mais proviennent d’autres projets. C’est ainsi le cas de la librairie : struts-jsf-plugin.jar qui est un plug-in jsf pour Struts. Au déploiement de l’application les archives nécessaires sont copiées dans le répertoire WEB-INF/lib. 4. Présentation de JavaServerFaces (JSF) a) Présentation générale JavaServerFaces est paru en 2004 après Struts. JSF a été réalisé par Sun pour J2EE1. L’adresse officielle de JavaServerFaces est : http://java.sun.com/javaee/javaserverfaces/ Beaucoup crurent que l’arrivée de JSF allait écraser son concurrent. En effet, bien intégré aux projets de Sun tels que Java Enterprise Edition (Java EE), JSF a su s’imposer par sa simplicité. La partie Vue de JSF a été bien pensée et est très simple d’utilisation. Ainsi son utilisation s’impose pour les projets de petites tailles. b) Principes de mise en œuvre de JavaServerFaces Une application basique de JSF est constituée de deux dossiers : l’un contient la partie modèle de l’application. Tandis que l’autre contient la partie Vue de l’application ainsi qu’un dossier WEB-INF qui constitue le contrôleur. De manière à permettre aux développeurs web de se concentrer uniquement sur leurs besoins, JSF utilise XML ou des propriétés. Les pages jsp (java server pages) utilisent des balises personnalisées JSF : Exemples : <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> La structure de l’application web doit être décrite dans un fichier: faces-config.xml. Ce fichier contient toutes les règles de navigations nécessaires à l’application. Exemple : <navigation-rule> <description> The decision rules used by the NavigationHandler to determine which view must be displayed after the current view, response.jsp is processed. </description> <from-view-id>/response.jsp</from-view-id> <navigation-case> <description> Indicates to the NavigationHandler that the greeting.jsp view must be displayed if the Action referenced by a UICommand component on the response.jsp view returns the outcome "success". </description> <from-outcome>success</from-outcome> <to-view-id>/greeting.jsp</to-view-id> </navigation-case> </navigation-rule> Dans cet exemple on voit que l’action « success » permet de passer de la page response.jsp à la page greeting.jsp Nous parlerons ici de l’implémentation de référence de Sun mais il faut savoir qu’il existe une autre implémentation de ce framework : Apache MyFaces qui fait parti du projet Jakarta. 1 c) Les bibliothèques de JavaServerFaces: Voici un petit résumé des bibliothèques que l’on retrouve dans Struts : Les librairies jsf-api.jar : contiennent les classes standards de JSF ainsi que les interfaces à satisfaire par les implémentations de JSF. Les archives jsf-ri.jar : représente l’implémentation de référence de Sun pour l’API de JSF. Les librairies jstl.jar & standard.jar contiennent les fichiers JSTL. L’implémentation de référence étant basée sur JSTL. Les fichiers commons*.jar sont utilisés par l’implémentation de référence de Sun. De même que pour Struts, au déploiement de l’application les archives nécessaires sont copiées dans le répertoire WEB-INF/lib. 5. Conclusion a) Struts vs JSF Comparons maintenant ces deux frameworks. L’utilisation des tags rend l’utilisation de JavaServerFaces plus concise, plus puissante et plus simple que celle de Struts. De plus, JSF ne se limite pas à http et html : contrairement à Struts, JSF utilise aussi les formats : XUL, XML et WML… Cependant la documentation de JavaServerFaces si elle est variée, reste néanmoins confuse et pas assez détaillée. Il peut donc être difficile de s’y retrouver. On peut commettre des confusions au niveau des noms des pages utilisant la bibliothèque JSF : les pages se terminent par .jsp alors que leurs url se terminent par .jsf (ou .faces dans le cas l’implémentation d’Apache). Mais leur différences, et en particulier le fait que Struts soit plus centré sur la partie contrôleur que sur la partie Vue contrairement à JSF ont permis aux deux frameworks de coexister. b) Struts Shale… Le futur ? En dehors de Struts et de JavaServerFaces, d’autres framework pour applications web peuvent être utilisé tels que Spring MVC, barracuda, webwork… Cependant, Struts et JSF continuent de dominer les autres frameworks en matière d’applications web. De nos jours, Struts a autant de succès que son principal concurrent : JSF. Les constructeurs de Struts l’ont compris et ont tenté de combiner les avantages de Struts et ceux de JSF au travers de Struts Shale. Apparu en 2005, Struts Shale est un nouveau framework MVC (Modèle Vue Contrôleur), basé sur Javas Server Faces. Cependant, celui-ci se concentre sur la partie Contrôleur tout comme Struts en intégrant de puissants outils pour cette partie. La partie Vue reste déléguée à une implémentation de JSF. Struts Shale est encore un framework très récent, mais en combinant les avantages de chacun des deux standards d’aujourd’hui, il pourrait, en devenant plus mature, les supplanter… Références : Références sur Struts: Document pdf de la société serli informatique réalisés par mickaël Baron en 2007. Titre : « Tutoriel Jakarta Struts » http://tahe.developper.com/java/struts Ce tutoriel permet de découvrir la structure de struts : ses composants et leurs fonctionnements, l’intégration du modèle MVC pour Struts… « Bye-bye Struts, Hello Struts Shale » de Pierre Tran en février 2005 http://www.lemondeinformatique.fr/actualites/lire-bye-bye-struts-hello-struts-shale7856.html Le point sur Struts: entre Struts Shale, et les différentes versions de Struts « Introduction au framework Struts Jakarta » de Sue Spielman en mai 2001 http://projectomega.org/article.php?lg=fr&php=oreilly_jakarta1&p=1 Document sur la rédaction du fichier de configuration de Struts. « The Struts framework project » de la foundation Apache http://struts.apache.org/1.2.7/userGuide/installation.html Ce document official relate le contenu de Struts, en particulier ce qui est distribué pour Struts. Autrement dit, ses bibliothèques. Document pdf de bruno Clément réalisé en 2002 http://www.guepard.asso.fr/ibm/sw2002/Struts.pdf Ce document explique brièvement le modèle MVC, puis parle de l’architecture de Struts. Références sur JavaServerFaces: Tutoriel: « introduction à jsf avec netbeanss » réalisé par Olivier Schmitt en août 2005 : http://schmitt.developpez.com/tutoriel/java/jsf/introduction Ce tutoriel permet de découvrir JavaServerFaces, et surtout de comprendre son fonctionnement au travers d’un exemple simple que l’on peut par la suite complexifier. Cependant cet exemple est mis en place avec netbeans et ce n’est pas forcément la manière la plus simple de réaliser un premier exemple avec JavaServerFaces Document pdf de la société serli informatique réalisés par mickaël Baron en 2007 : « Introduction au frameworf JSF » http://mbaron.developpez.com/javaee/jsf Ce document permet de comparer un peu Struts à JavaServerFaces. Il explique aussi le fonctionnement théorique de JavaServerFaces : son cycle de vie, sa configuration… « JSF en quelques mots » de François Goldgewicht datant de juin 2007 : http://blog.valtech.fr/wordpress/2007/06/28/jsf-en-quelques-mots Ce document présente les concepts de base de JSF : origine, présentation de ses bases… Autres : « Understanding JavaServer Pages Model Architecture » de: Govind Seshadri, JavaWorld.com, 12/29/99: http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html Explique les principes des pages JSP. « The evolution of web application architectures » de McClanahan en août 2005 http://people.apache.org/~craigmcc/oscon_2005_web_architectures.pdf Document comparant différents frameworks. « JavaServerFaces vs Struts » de Roland Barcia paru en septembre 2004 http://homepage1.nifty.com/algafield/barcia.html Evaluation sous différents critères (maturité, navigation, intégration…) de JSF et de Struts