1. Présentation de l'ouvrage▲
1-1. Table des matières▲
Introduction
Chapitre 1 - Démarrer le projet
Exigences en matière logicielle
Configuration matérielle et système d'exploitation
IDE et générateurs de code
Environnement de production
Notoriété des logiciels Open Source
Fiabilité des logiciels Open Source
Support pour des logiciels Open Source
Tomcat 5
Tester des exemples de WAR
Créer un projet d'application Internet dans IDE
Configurer le serveur d'application
Exercices
Chapitre 2 - Spécifications des exigences
Créer rapidement et de manière efficace de la valeur commerciale
Création d'un rapport avec iReport
Rendement du capital (Return on Investment, ROI)
Exercice
Chapitre 3 - Créer un accès à la base de données
Model-View-Contrôleur (MVC)
Concevoir un modèle
Créer un diagramme d'Entity-Relationship (ER)
Configuration de JNDI-DataSource
Exercices
Chapitre 4 - Travailler avec des actions simples
Le "C" dans le contrôleur Model-View
Utiliser des ActionMappings
Ecrire une classe d'action
Configurer le Struts-ActionServlet
Exercice
Chapitre 5 - Travailler avec des JSP et View
Intégrer des balises JSP
JSP 2.0 et JSTL 1.1
Maquette avec des Tiles
Feuilles de style en cascade (CSS)
Navigation par menu
Exercices
Chapitre 6 - Travailler avec des Beans simples
Qu'est-ce qu'un JavaBean ?
Exemple de formulaire
Qu'est-ce qu'un FormBean ?
Un prototype de Bean "réalisable"
Ecrire des macros IDE
Logging
Exercices
Chapitre 7 - Astuces sur le processus de développement
Pouvez-vous contruire un pont (ou une application Internet) ?
Qu'est-ce que la planification de projet ?
Etapes itératives de processus
Programmer conformément au contrat
Quel candidat faut-il engager ?
Stratégie de transfert
Outsourcing sur une base de prix fixe
Politique de projets
Conclusion de la première partie
Chapitre 8 - Créer l'accès aux données
Introduction
Accès à la couche de données - le "M" de MVC
Exemple d'interface DAO
Illustration d'un DAO sur une base de données SQL
Relier le DAO et le DataSource-Pool
Qu'est-ce qui caractérise un bon programmeur ?
Programmation orientée objets
Les avantages de la programmation orientée objets
Faire des DAO réutilisables
Utiliser des objets du DAO-Helper
Exercice
Chapitre 9 - Des Beans réutilisables
Test d'unité
Equiper les Beans
Des MVC pour FormBeans avec DAO
Traiter les données
Des FormBean réutilisables
Méthodes Bean communes
Navigation entre les lignes et l'adapteur d'itération
Exercice
Chapitre 10 - Actions et événements réutilisables
Messages de la page vers les actions
Déboguage des requêtes JSP et des sessions
Grouper des actions
Evénements
Objet événement-action
Etendre l'action
Classe d'actions avec événements
Exercices
Chapitre 11 - Autres actions de traitement des formulaires
Options alternatives de flux MVC
Evénements Insert
Traitement des exceptions
Mise à jour multilignes
Transactions
Traitement Master/Details
Marque-pages sur les actions
Exercices
Chapitre 12 - Validation
Validation des saisies
Messages de validation
Afficher les champs de validation
Validation du côté du client
Exercice
Conclusion de la deuxième partie
Chapitre 13 - Contenu dynamique de site
Contenu dynamique
Gestion de contenu
Implémenter la fonction de recherche
Reproduire une recherche SQL
FormBean pour les résultats de la recherche
Portail de base
Architecture orientée services avec l'Inversion of Control Pattern (IoC)
Traitement asynchrone
E-Commerce et XML
Créer des rapports ad-hoc
Exercice
Chapitre 14 - Sécurité
Sécurité du login avec autorisation du côté du Container
Implémenter la sécurité dans les zones des lignes
Traiter les droits d'accès inhérents
Sécurité des Tiles et des menus
SSL
Identifier les zones IP des utilisateurs
Autres facteurs de sécurité
Exercice
Chapitre 15 - Formulaires complexes et notation par points
Formulaires complexes
Notation par points
Exercice
Chapitre 16 - Eléments déroulants et super-type
Utiliser les regroupements d'options pour les éléments déroulants
Rechercher des valeurs d'options de la base de données
Implémenter un super-type
SQL-Map et DAO pour les super-types
Exercice
Chapitre 17 - Concevoir l'interface utilisateur
XML-RPC
Préparer le contenu au format XML
Exemples de cas : accéder à Excel par des Struts-Beans
Macromedia Flash
Le logiciel en tant qu'utilitaire
Exercice
Chapitre 18 - Gestion de la performance
Surveillance de l'exploitation
Charger les données
Exécuter des tests de charge
Serveur de base de données
Serveur d'application
Processus d'exécution de la requête SQL
Failover
Exercices
Chapitre 19 - Future sécurité de l'application
Release Engineering
Gestion des changements
Ant et Maven - Meilleures pratiques
CVS/SVN
Failover-Recovery
Sélectionner le serveur d'application
Chain-Filter
Design
Qu'est-ce qui est surévalué ?
Erreurs fréquentes
1-2. Le livre vu par l'éditeur▲
Ce livre s'adresse aux développeurs et programmeurs d'applications déjà expérimentés en Java et qui ont besoin de maîtriser Struts rapidement et efficacement.
Le framework Jakarta Struts est devenu un standard Open Source confirmé : sa performance, son indépendance par rapport à des systèmes propriétaires et son efficacité des coûts sont des avantages convaincants.
Résolument concret et pratique, cet ouvrage rassemble des conseils, une multitudes d'exercices, des résumés et tout un savoir-faire tiré de l'expérience professionnelle des deux auteurs.
Ils exposent les méthodes les plus efficaces, les interfaces les plus conviviales, les coûts les moins élevés, le chemin le plus court, en un mot ce que les Anglo-saxons appellent les "Best Practices".
La première partie passe en revue les phases de développement avec Struts 1.2, JSTL 1.1, Servlet 1.4, JSP 2.0, Tomcat 5, Eclipse 3 et PostgreSQL.
La seconde apprend comment construire une infrastructure applicative solide et performante et comment tirer des avantages de la réutilisation de code.
La troisième partie explique comment concevoir une interface utilisateur sûre, et comment sécuriser l'application.
1-3. Mon résumé▲
Cet ouvrage, contrairement à ce qu'affirme l'éditeur, ne me semble pas s'adresser à un public de développeurs expérimentés souhaitant être rapidement opérationnels sur Struts.
Bien au contraire, il s'adresse plutôt à des développeurs, experts techniques et architectes qui disposent déjà de bases concernant Struts et sont à la recherche de pistes de réflexions.
Les auteurs s'efforcent, tout au long du livre, de partager avec le lecteur leur expérience, que ce soit sur le plan technique ou de la gestion de projet.
Ainsi, après quelques généralités diverses et variées, intervient un inattendu chapitre sur l'accès aux données. S'en suivent une trentaine de pages consacrées à Struts en lui-même, la première partie étant conclue par des considérations classiques de gestion de projet.
Les deux autres parties sont ensuite accumulation de conseils / bonnes pratiques suggérées par les auteurs, avec une prédominance de l'accès aux données (illustration à l'aide de l'implémentation iBatis inclue dans la suite de développement Jasic) sans toutefois omettre les autres aspects du développement web et de Struts en particulier.
2. La critique▲
2-1. L'apport de l'ouvrage par rapport à Struts▲
Une chose est sûre, cet ouvrage n'est en aucun cas une présentation de Struts. Le titre de l'ouvrage induit d'ailleurs le lecteur en erreur puisqu'il s'attend légitimement à une présentation de Struts et un guide d'utilisation de ce framework.
Certes, les initiés et les débrouillards sauront exploiter les informations, mais le contenu n'est certainement pas suffisant comme support de formation à ce framework capable de proposer bien plus que ce que la lecture de cet ouvrage pourrait suggérer.
Les auteurs décrivent donc, à chaque fois de manière assez succinte, le fichier de configuration, la notion d'Action, d'ActionForm, l'internationalisation, l'organisation des pages avec Tiles, le Validator. Plus loin, ils se focalisent sur les implémentations d'actions pour suggérer quelques bonnes pratiques en matière d'architecture.
On regrettera par contre l'absence totale de la description des bibliothèques de tags bean et logic, certes remplaçables par la JSTL, mais dont l'existence ne devrait pas à ce point être omise.
2-2. L'absence de fil conducteur▲
L'organisation de cet ouvrage est pour le moins très surprenante. J'ai eu beau chercher, je n'y ai pas trouvé de fil conducteur.
De plus, il n'apparaît pas vraiment axé autour de Struts qui finalement n'en occupe dans l'absolu qu'une faible part.
Par moment, on est même surpris par des paragraphes inattendus résultant du passage du coq à l'âne d'aspects techniques à des considérations de gestion de projet (on a même droit à un paragraphe sur le recrutement de développeurs...).
Certes, le propos est toujours intéressant, mais la lecture en est fortement perturbée.
2-3. Un formidable recueil de conseils▲
Faisons abstraction un moment du titre de l'ouvrage et du contenu annoncé, ainsi que du manque d'organisation et de logique que je viens de souligner.
Il faut tout de même concéder aux auteurs la pertinence et la qualité de leurs conseils, lesquels guideront vos choix d'architecture, votre gestion de projets Struts, et ouvriront vos esprits vers d'autres horizons.
Les auteurs semblent avoir tellement de bonnes pratiques et pistes de réflexion à faire partager, que les 215 pages du livre sont bien trop minces pour tout approfondir. Au lecteur donc de rebondir sur les conseils et pistes pour aller explorer par lui-même ces concepts abordés.
2-4. Illustrations, exercices et ressources▲
Les auteurs illustrent abondamment leur propos par du code. Malheureusement le style (indentation, nom de variables, commentaires, cohérence d'ensemble) adopté pour le code java n'est pas très agréable à la lecture.
De plus, on retrouve dans ces exemples le syndrome de l'absence de fil conducteur mais sous une autre forme. En effet, ils ne se rattachent pas à un besoin utilisateur assez concret et l'absence d'illustration visuelle (page html obtenue) est assez préjudiciable quant à l'efficacité de la compréhension dans certains cas.
Des exercices sont proposés à la fin de chaque chapitre. De cette manière les auteurs insistent sur la mise en pratique des concepts abordés et encouragent le lecteur à ne pas se contenter des seuls exemples présentés dans l'ouvrage.
La couverture de l'ouvrage annonce "Compléments en ligne sur le web", mais il semblerait ni plus ni moins qu'il s'agisse "seulement" des ressources de la communauté concernant les différents outils évoqués et décrits dans le livre. Ni cédérom, ni ressources spécifiquement produites dans le cadre de cet ouvrage ne sont donc disponibles. On se consolera donc avec les ressources intégrées à Jasic qu'il aura auparavant fallu télécharger. Jasic étant édité par les sociétés baseBeans Engineering et Infonoia, dont Vic Cekvenich et Wolfgang Gehner sont respectivement les directeurs, on comprend alors mieux les orientations de l'ouvrage.
3. Remarques▲
3-1. A qui se destine un tel ouvrage ?▲
L'ouvrage est classé par l'éditeur dans la catégorie "Se former", j'ai plutôt l'impression que le style employé et le contenu de l'ouvrage le placent à mi-chemin entre la catégorie annoncée et ce qu'on pourrait considérer comme un retour d'expérience. En tout cas, il serait prétentieux d'affirmer qu'il est l'ouvrage de référence pour se former à Struts.
Ainsi, je ne peux que déconseiller cet ouvrage aux débutants dans le monde du développement Web avec Java, car il manque fondamentalement de pédagogie quant à l'enseignement de Struts, et ne se substitue pas à l'apprentissage préalable des technologies Servlets/Jsp.
Ceux qui disposent de certains pré-requis au développement Web pourront être séduits par cet ouvrage, à condition de ne pas s'attendre à être guidé à travers Struts ... il faudra faire preuve de curiosité pour rechercher des compléments d'informations ci et là sur internet ou dans d'autres ouvrages traitant Struts.
Enfin, ceux qui connaissent déjà Struts y trouveront probablement un intérêt dans la mesure où les auteurs les entraîneront dans leurs réflexions à la fois sur les bonnes pratiques avec Struts, mais également dans le développement Web en général, même si par moment le lecteur pourra être frustré par la faible quantité d'éléments apportés par l'ouvrage pour chaque sujet de réflexion abordé.
3-2. Savoir exploiter les pistes de réflexion▲
En lisant cet ouvrage, il faut donc avoir à l'esprit que nombreuses sont les thématiques que les auteurs vous suggèrent d'approfondir de votre côté. Dommage toutefois que les différents renvois n'aient pas été repris en fin d'ouvrage.
3-3. Quelques regrets en vrac▲
Vous l'aurez compris, si vous attendez de cet ouvrage une description rigoureuse et pédagogique du framework Struts, vous risquez d'être déçus.
Ainsi, j'estime que les descriptions du struts-config.xml et de tiles sont bien trop légères.
Compte tenu de sa date de publication, je suis également assez surpris de l'absence de propos autour de Struts-Layout.
Enfin, les traitements côté client (qu'on aime ou non), intimement liés au confort d'utilisation de l'application et aux problématiques de charge, mériteraient d'être davantage décrits et un ensemble de bonnes pratiques dans ce domaine serait très précieux.
4. Conclusion▲
Cet ouvrage ne répond pas aux attentes qu'on est en mesure d'avoir si on se réfère à son intitulé et à la description faite par l'éditeur. Il ne peut de ce fait pas être considéré comme une référence pour l'apprentissage de Struts.
Cependant, malgré l'absence d'une certaine démarche et d'une cohérence d'ensemble dans la rédaction de l'ouvrage, le retour d'expérience et les conseils prodigués par les auteurs sont très appréciables et sources d'inspiration. Ce livre pourra donc satisfaire le désir de conseils et d'acquisition de bonnes pratiques du lecteur, à condition que celui-ci dispose d'un minimum de connaissances en Java et développement Web, y compris concernant Struts.
Tous mes remerciements vont à khayyam90 pour sa précieuse relecture.