JEE et JSF : des technologies qui ont effrayé et fait souffrir bon nombre de développeurs ! Elles auront peut être laissé à certains d’entre vous un goût amer mais ont énormément évolué ces dernières années pour finalement devenir légères et productives. Découvrons en quoi ces solutions peuvent vous aider dans le cadre de vos différents projets et ouvrons un œil neuf sur ces technologies d’avenir.
Programme:
- JEE 6 : historique, nouveautés, testabilité.
- JBoss Seam 3 – Framework de contrôle applicatif : context and dependancies injections, événements, Bean validator, restriction des vues.
- JSF 2 – Framework de présentation graphique : page description language, composants composite, PrettyFaces, Ajax 4 JSF, RichFaces, PrimeFaces.
4. 4
Introduction
Patrick GUILLERM, Architecte Java JEE
Backoffice de l’Assemblée des Chambres Françaises de Commerce et d’Industrie (Seam 2)
Le Guichet Entreprises (JSF)
HEC – K-HUB (Nuxeo, Seam 2)
Intranet de Generali France (Nuxeo, Seam 2)
CADA – Cabinet du 1er Ministre (Nuxeo, Seam 2, Selenium)
You Testlt (JEE6, Seam 3, JSF 2).
Quels objectifs pour ce BarCamp ?
Casser les idées reçues sur JEE
Exposer les avancées technologiques de cette norme
Montrer qu’il existe autre chose que Spring
Réconcilier certains d’entre vous avec les EJB et JSF
Mettre en avant les avantages et inconvénients.
6. 6
JEE 6
Java Entreprise Edition
Ensemble de normes (JSR)
Des API (javax.*)
La majorité des technologies Web en JAVA.
Que doit contenir un projet pour être un projet JEE ?
Des EJB
Un conteneur de SERVLET et un conteneur d’EJB.
JEE historique
7. 7
JEE 6
Evolution entre JEE5 et JEE6
Simplification des EJB
Normalisation de l’injection des dépendances
Davantage de conventions
Meilleure testabilité (Test unitaire, Arquillian)
Possibilité d’être utilisé en JAVA SE
Normalisation de la configuration de JPA
Les implémentations de référence
Normes mises obsolètes (Entity CMP 2.x, JAX-RCP, etc.).
Principales nouvelles normes
JSR-299 : CDI
JSR-330 : @Inject
JSR-303 : Bean Validator
JSR-314 : Java Server Faces 2
JSR-317 : JPA 2
JSR-311 : JAX-RS 1.1
JSR-224 : JAX-WS 2.2
JSR-315 : SERVLET API 3
Etc.
9. 9
JEE 6
JPA 2 : les principales nouvelles normes
Meilleure gestion des collections (@Element-Collection)
Les Map (@MapKeyColumn)
Suppression des liaisons orphelines (OneToMany et OneToOne)
Criterias
Lock pessimiste
Order column (tri au moment de l’écriture)
Des @Embedded dans des @Embedded
Standardisation du fichier persistance.xml
Séparation de la norme JPA et des EJB.
12. 12
JEE 6
Evolution entre JEE5 et JEE6
Entity Manager Factory (jboss-javaee-6)
EJB Container (Glassfish embedded).
Aller plus loin dans les tests
Arquillian
Selenium (attention aux ID HTML).
14. 14
Seam 3
Qu’est ce que Seam?
Concurrent direct de Spring
Conçu par le créateur d’Hibernate : Gavin King
Unifier le monde JEE (JPA / EJB / JSF)
Framework Stateful orienté
Implémentation de référence de la norme CDI
Acteurs majeurs de la norme JEE 6.
Les cas d’utilisation
Les back-offices : grâce à son orientation stateful
Middleware : pour sa facilité d’intégration avec les standards JEE
(JAX-WS, JAX-RS,JPA,JMS,JASS, etc.)
Site à très haute disponibilité : grâce aux EJB et aux serveurs d’applications
Site avec des interfaces web très riches grâce à son framework Ajax, les différents
composants et au Page Description Language
Site au domaine fonctionnel complexe : validation simplifiée, évènements
Maintenabilité facilité : AoX, CoC et transparence
Pour traiter il faut normaliser les évènements
Sécurité des informations
Pas de réponse simple au problème du périmètre des équipes supports/exploitations.
15. 15
Seam 3
Les avantages
Productivité
Unification des briques applicatives
Puissante gestion des formulaires
De l’Ajax sans la contrainte de l’écriture de code JavaScript
Mécanisme de templating très puissant
Framework orienté composants.
Les inconvénients
Peu de développeur connaissent ce framework en France
Beaucoup de préjugés sur Java EE
Il est nécessaire de comprendre ce que l’on fait
Le calcul d’une page JSF est un peu plus long
Peu de développeur savent concevoir des composants.
16. 16
Seam 3
Les principaux modules
JBoss Weld : implémentation référence de la norme JSR-299
Seam Persistence : JPA 2
Seam Faces : JSF2
Seam Validation : extension pour la norme JSR-303
Seam Security : identification.
17. 17
Seam 3
Contexts and Dependency Injection
Le simple fait d’avoir un fichier bean.xm dans le META-INF d’un jar permet d’ordonner à Weld
d’ajouter les Web beans dans son contexte.
20. 20
Seam 3
Les scopes
@ApplicationScoped : actif durant toute la vie de
l’application.
@SessionScoped : actif durant la session HTTP.
@ConservationScoped : actif durant une conversation.
@ViewScoped : actif tant que l’on est sur la même
page.
@RequestScoped : actif le temps d’une requête HTTP.
@RenderScoped : actif uniquement durant le
chargement d’une page.
@FlashScoped : micro scope destiné aux notifications.
23. 23
Seam 3
Exemples d’événements existants
@Before Avant le début du cycle de vie JSF
@After Après le début du cycle de vie JSF
@RestoreView A la phase ”RestoreView”
@Initialized Quand l’application est initialisée
@LoggedInEvent Lorsque l’utilisateur s’est identifié
@PreLoggedOutEvent Déconnexion d’un utilisateur
@DidActivate A l’activation d’une session
@WillPassivate A passivation d’une session.
24. 24
Seam 3
JSR-303 : Bean validator
Permet la validation par annotation
Unification de la validation ( front et backend )
Diverses annotations préexistantes
Possibilité de créer ses propres annotations pour la validation.
Restriction des vues
Création des rôles (Administrateur, contributeurs, etc.)
Création de la validation des rôles
Création du Page.java.
29. 29
JSF 2
Qu’est ce que c’est ?
Framework de présentation orienté composants
Un ensemble de composants pour gérer les vues
Permet d’effectuer différents types de rendu (Email, RSS, PDF, ...)
Du XHTML
En opposition avec JSP (et JSTL)
Une interaction transparente avec les Web beans
Les composants et vues ont des états
Des bibliothèques très riches en composants (Richfaces, Primefaces).
Quoi de neuf dans JSF 2 ?
Page Description Language (Facelets)
Composants Composite simplifiés (axés sur de la convention)
Une meilleure gestion des ressources
De l’ajax en natif
Gestion des paramètres GET
Actions en GET
Un énorme travail d’optimisation
La normalisation des travaux de JBoss (Seam 2.x)
36. 36
JSF 2
Paramètres en GET
http://localhost:8080/foobar/product.xhtml?productId=42
L ’utilisation des PrettyFaces permet un contrôle affiné.
37. 37
JSF 2
AJAX
Le support de l’ajax est natif en JSF 2 mais moins puissant que l’utilisation de Richfaces
ou de Primefaces.
38. 38
JSF 2
Les bibliothèques de composants
Richfaces : Soutenu par JBoss, très utile pour l’Ajax et de la validation (JSR-303).
Primefaces : Léger, avec beaucoup de composants, et des diagrammes en HTML 5.
Icefaces : Graphiquement riche mais gourmande en ressources.
Apache MyFaces: Largement distancé par Richfaces et Primefaces.
Richefaces
49. 49
Conclusion
Liens utiles
http://www.seamframework.org
http://www.jboss.org/richfaces/demos
http://www.primefaces.org/showcase/ui/home.jsf
Jug sur JEE 6 par Antonio Goncalves : http://www.parleys.com/#st=5&id=1754&sl=0
Jug sur Arqulian par Alexis Hassier : http://www.parleys.com/#st=5&id=3315&sl=0
http://www.youtestit.org
http://palo-it.com/blog.