SlideShare ist ein Scribd-Unternehmen logo
1 von 50
BarCamp « Et pourquoi pas JEE ? » 
Octobre 2012 @ Paris 
Patrick GUILLERM 
Architecte Java JEE @PALO IT
2 
Au programme 
Introduction 
JEE 6 
Seam 3 
JSF 
Conclusion
INTRODUCTION
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.
5 
JEE 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 
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.
8 
JEE 6 
Evolution entre JEE5 et JEE6
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.
10 
JEE 6 
Les nouveautés de JEE 6 : JPA 2
11 
JEE 6 
Les nouveautés de JEE 6 : JPA 2
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).
13 
SEAM 3
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 
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 
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 
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.
18 
Seam 3 
Contexts and Dependency Injection
19 
Seam 3 
Contexts and Dependency Injection
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.
21 
Seam 3 
Que sont les événements ?
22 
Seam 3 
Que sont les événements ?
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 
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.
25 
Seam 3 
Restriction des vues
26 
Seam 3 
PrettyFaces : URL Rewriting
27 
Seam 3 
PrettyFaces : URL Rewriting
28 
JSF 2
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)
30 
JSF 2 
Cycle de vie
31 
JSF 2 
Page Description Language
32 
JSF 2 
Page Description Language
33 
JSF 2 
Page Description Language
34 
JSF 2 
Composants Composites
35 
JSF 2 
Composants Composites
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 
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 
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
39 
JSF 2 
Richefaces
40 
JSF 2 
Richefaces
41 
JSF 2 
Richefaces
42 
JSF 2 
Richefaces
43 
JSF 2 
Richefaces
44 
JSF 2 
Primefaces
45 
JSF 2 
Primefaces
46 
JSF 2 
Primefaces
47 
JSF 2 
Primefaces
CONCLUSION
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.
50

Weitere ähnliche Inhalte

Was ist angesagt?

Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Antoine Rey
 
Présentation prime facesfinal
Présentation prime facesfinalPrésentation prime facesfinal
Présentation prime facesfinalAymen Drira
 
Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystémeAlgeria JUG
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)Cyrille Le Clerc
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring bootAntoine Rey
 
Ces outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsCes outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsAntoine Rey
 
Play : Premiers pas par l'exemple le 120613
Play : Premiers pas par l'exemple le 120613Play : Premiers pas par l'exemple le 120613
Play : Premiers pas par l'exemple le 120613SOAT
 
JBoss - chapitre JMX
JBoss - chapitre JMXJBoss - chapitre JMX
JBoss - chapitre JMXFranck SIMON
 
La plateforme de services dynamiques OSGi
La plateforme de services dynamiques OSGiLa plateforme de services dynamiques OSGi
La plateforme de services dynamiques OSGiDidier Donsez
 
Concepts de sauvegarde et de récupération
Concepts de sauvegarde et de récupérationConcepts de sauvegarde et de récupération
Concepts de sauvegarde et de récupérationSoukaina Boujadi
 
Installation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de TomcatInstallation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de TomcatMohamed Ben Bouzid
 

Was ist angesagt? (18)

Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
Présentation prime facesfinal
Présentation prime facesfinalPrésentation prime facesfinal
Présentation prime facesfinal
 
Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystéme
 
#2 Architecture OSGi
#2 Architecture OSGi#2 Architecture OSGi
#2 Architecture OSGi
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
Spring 3.0
Spring 3.0Spring 3.0
Spring 3.0
 
Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Présentation OSGI
Présentation OSGIPrésentation OSGI
Présentation OSGI
 
Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010
 
Ces outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsCes outils qui vous font gagner du temps
Ces outils qui vous font gagner du temps
 
Play : Premiers pas par l'exemple le 120613
Play : Premiers pas par l'exemple le 120613Play : Premiers pas par l'exemple le 120613
Play : Premiers pas par l'exemple le 120613
 
JBoss - chapitre JMX
JBoss - chapitre JMXJBoss - chapitre JMX
JBoss - chapitre JMX
 
La plateforme de services dynamiques OSGi
La plateforme de services dynamiques OSGiLa plateforme de services dynamiques OSGi
La plateforme de services dynamiques OSGi
 
Concepts de sauvegarde et de récupération
Concepts de sauvegarde et de récupérationConcepts de sauvegarde et de récupération
Concepts de sauvegarde et de récupération
 
Tp java ee.pptx
Tp java ee.pptxTp java ee.pptx
Tp java ee.pptx
 
JSF 2.0
JSF 2.0JSF 2.0
JSF 2.0
 
Installation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de TomcatInstallation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de Tomcat
 

Andere mochten auch

Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1Addi Ait-Mlouk
 
Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)Alphorm
 
La cuisine japonaise: Sushi, Sashimi et Maki
La cuisine japonaise: Sushi, Sashimi et MakiLa cuisine japonaise: Sushi, Sashimi et Maki
La cuisine japonaise: Sushi, Sashimi et MakiProjetsDeCom2013 INALCO
 
Presentation Back to Basics 8
Presentation Back to Basics 8Presentation Back to Basics 8
Presentation Back to Basics 8Yoann Maingon
 
Edmodo daniel slideshare
Edmodo daniel slideshareEdmodo daniel slideshare
Edmodo daniel slideshare16764
 
Proyec redes sociales t final
Proyec redes sociales t finalProyec redes sociales t final
Proyec redes sociales t finalNidia Simo
 
Phdelosojos 130903110847- docx
Phdelosojos 130903110847- docxPhdelosojos 130903110847- docx
Phdelosojos 130903110847- docxYadirithap
 
Sistema inmune y linfatico
Sistema inmune y linfaticoSistema inmune y linfatico
Sistema inmune y linfaticoMario Rios
 
presentation of widgets and plugins
presentation of widgets and pluginspresentation of widgets and plugins
presentation of widgets and pluginsanelgonzalez96
 
Philosophie analytique-et-théologie-chrétienne1
Philosophie analytique-et-théologie-chrétienne1Philosophie analytique-et-théologie-chrétienne1
Philosophie analytique-et-théologie-chrétienne1Yann Bringaud
 
Presentación sobre las tic´s
Presentación sobre las tic´sPresentación sobre las tic´s
Presentación sobre las tic´smelferfer2
 
Presentacion laura palacios
Presentacion laura palaciosPresentacion laura palacios
Presentacion laura palacios960809
 

Andere mochten auch (20)

JCache Using JCache
JCache Using JCacheJCache Using JCache
JCache Using JCache
 
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1
 
Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)
 
La cuisine japonaise: Sushi, Sashimi et Maki
La cuisine japonaise: Sushi, Sashimi et MakiLa cuisine japonaise: Sushi, Sashimi et Maki
La cuisine japonaise: Sushi, Sashimi et Maki
 
Presentation Back to Basics 8
Presentation Back to Basics 8Presentation Back to Basics 8
Presentation Back to Basics 8
 
Edmodo daniel slideshare
Edmodo daniel slideshareEdmodo daniel slideshare
Edmodo daniel slideshare
 
Entrevista 1
Entrevista 1Entrevista 1
Entrevista 1
 
Proyec redes sociales t final
Proyec redes sociales t finalProyec redes sociales t final
Proyec redes sociales t final
 
Cuisine et Saisons en Corée
Cuisine et Saisons en CoréeCuisine et Saisons en Corée
Cuisine et Saisons en Corée
 
Historiadegenero
HistoriadegeneroHistoriadegenero
Historiadegenero
 
La cuisine arménienne(1)
La cuisine arménienne(1)La cuisine arménienne(1)
La cuisine arménienne(1)
 
Phdelosojos 130903110847- docx
Phdelosojos 130903110847- docxPhdelosojos 130903110847- docx
Phdelosojos 130903110847- docx
 
Sistema inmune y linfatico
Sistema inmune y linfaticoSistema inmune y linfatico
Sistema inmune y linfatico
 
Guadalupe
GuadalupeGuadalupe
Guadalupe
 
presentation of widgets and plugins
presentation of widgets and pluginspresentation of widgets and plugins
presentation of widgets and plugins
 
Philosophie analytique-et-théologie-chrétienne1
Philosophie analytique-et-théologie-chrétienne1Philosophie analytique-et-théologie-chrétienne1
Philosophie analytique-et-théologie-chrétienne1
 
Presentación sobre las tic´s
Presentación sobre las tic´sPresentación sobre las tic´s
Presentación sobre las tic´s
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Presentacion laura palacios
Presentacion laura palaciosPresentacion laura palacios
Presentacion laura palacios
 
El bosco
El boscoEl bosco
El bosco
 

Ähnlich wie Et pourquoi pas JEE ?

Et pourquoi pas JEE ?
Et pourquoi pas JEE ?Et pourquoi pas JEE ?
Et pourquoi pas JEE ?PALO IT
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPYouness Boukouchi
 
Présentation de JavaServer Faces
Présentation de JavaServer FacesPrésentation de JavaServer Faces
Présentation de JavaServer FacesJS Bournival
 
Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124Mejdeddine Bouzouita
 
Soutenance Stage Licence
Soutenance Stage LicenceSoutenance Stage Licence
Soutenance Stage LicenceMathias Kluba
 
Jee007 formation-jee-jboss-seam
Jee007 formation-jee-jboss-seamJee007 formation-jee-jboss-seam
Jee007 formation-jee-jboss-seamCERTyou Formation
 
JEE_Chapter4_JSF_VF (1).pdf
JEE_Chapter4_JSF_VF (1).pdfJEE_Chapter4_JSF_VF (1).pdf
JEE_Chapter4_JSF_VF (1).pdfMahmoudiOussama
 
Cyjboss formation-le-framework-jboss-seam
Cyjboss formation-le-framework-jboss-seamCyjboss formation-le-framework-jboss-seam
Cyjboss formation-le-framework-jboss-seamCERTyou Formation
 
Lyon JUG 2018 - Java le changement c'est maintenant
Lyon JUG 2018 - Java le changement c'est maintenantLyon JUG 2018 - Java le changement c'est maintenant
Lyon JUG 2018 - Java le changement c'est maintenantJean-Michel Doudoux
 
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - CoursENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - CoursHoracio Gonzalez
 
Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Tugdual Grall
 
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01Eric Bourdet
 

Ähnlich wie Et pourquoi pas JEE ? (20)

Et pourquoi pas JEE ?
Et pourquoi pas JEE ?Et pourquoi pas JEE ?
Et pourquoi pas JEE ?
 
Presentation jsf2
Presentation jsf2Presentation jsf2
Presentation jsf2
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
Java Server Faces 2
Java Server Faces 2Java Server Faces 2
Java Server Faces 2
 
2
22
2
 
Présentation de JavaServer Faces
Présentation de JavaServer FacesPrésentation de JavaServer Faces
Présentation de JavaServer Faces
 
Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124
 
Soutenance Stage Licence
Soutenance Stage LicenceSoutenance Stage Licence
Soutenance Stage Licence
 
Presentation Spring
Presentation SpringPresentation Spring
Presentation Spring
 
Jee007 formation-jee-jboss-seam
Jee007 formation-jee-jboss-seamJee007 formation-jee-jboss-seam
Jee007 formation-jee-jboss-seam
 
Drools et les moteurs de règles
Drools et les moteurs de règlesDrools et les moteurs de règles
Drools et les moteurs de règles
 
JEE_Chapter4_JSF_VF (1).pdf
JEE_Chapter4_JSF_VF (1).pdfJEE_Chapter4_JSF_VF (1).pdf
JEE_Chapter4_JSF_VF (1).pdf
 
Java j2ee
Java j2eeJava j2ee
Java j2ee
 
Cyjboss formation-le-framework-jboss-seam
Cyjboss formation-le-framework-jboss-seamCyjboss formation-le-framework-jboss-seam
Cyjboss formation-le-framework-jboss-seam
 
Lyon JUG 2018 - Java le changement c'est maintenant
Lyon JUG 2018 - Java le changement c'est maintenantLyon JUG 2018 - Java le changement c'est maintenant
Lyon JUG 2018 - Java le changement c'est maintenant
 
Jboss Seam
Jboss SeamJboss Seam
Jboss Seam
 
OW2 JASMINe
OW2 JASMINeOW2 JASMINe
OW2 JASMINe
 
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - CoursENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
 
Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)
 
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
 

Mehr von PALO IT

The Agile Transformation Hell - PALO IT BarCamp
The Agile Transformation Hell - PALO IT BarCampThe Agile Transformation Hell - PALO IT BarCamp
The Agile Transformation Hell - PALO IT BarCampPALO IT
 
Design & Develop Disruptive Software
Design & Develop Disruptive SoftwareDesign & Develop Disruptive Software
Design & Develop Disruptive SoftwarePALO IT
 
Growth Mindset & Psychological Safety - High Performing Teams in Software Dev...
Growth Mindset & Psychological Safety - High Performing Teams in Software Dev...Growth Mindset & Psychological Safety - High Performing Teams in Software Dev...
Growth Mindset & Psychological Safety - High Performing Teams in Software Dev...PALO IT
 
BigText, compréhension et inférence avancées sur les textes
BigText, compréhension et inférence avancées sur les textesBigText, compréhension et inférence avancées sur les textes
BigText, compréhension et inférence avancées sur les textesPALO IT
 
Explorez l’Employee eXperience grâce au Design Thinking
Explorez l’Employee eXperience grâce au Design ThinkingExplorez l’Employee eXperience grâce au Design Thinking
Explorez l’Employee eXperience grâce au Design ThinkingPALO IT
 
Self-Organisation & Transparency: Delegation Poker
Self-Organisation & Transparency: Delegation PokerSelf-Organisation & Transparency: Delegation Poker
Self-Organisation & Transparency: Delegation PokerPALO IT
 
Framework de Digitalisation par les Organisations Exponentielles
Framework de Digitalisation par les Organisations ExponentiellesFramework de Digitalisation par les Organisations Exponentielles
Framework de Digitalisation par les Organisations ExponentiellesPALO IT
 
Project Managers, our World is Changing!
Project Managers, our World is Changing!Project Managers, our World is Changing!
Project Managers, our World is Changing!PALO IT
 
The Future of User Experience
The Future of User ExperienceThe Future of User Experience
The Future of User ExperiencePALO IT
 
Developers are from Mars, Designers are from Venus
Developers are from Mars, Designers are from VenusDevelopers are from Mars, Designers are from Venus
Developers are from Mars, Designers are from VenusPALO IT
 
Self-Organization in Agile & Digital Transformation
Self-Organization in Agile & Digital Transformation Self-Organization in Agile & Digital Transformation
Self-Organization in Agile & Digital Transformation PALO IT
 
Blockchain présenté aux Développeurs
Blockchain présenté aux Développeurs Blockchain présenté aux Développeurs
Blockchain présenté aux Développeurs PALO IT
 
Pourquoi est-ce si difficile de concevoir une API ?
Pourquoi est-ce si difficile de concevoir une API ?Pourquoi est-ce si difficile de concevoir une API ?
Pourquoi est-ce si difficile de concevoir une API ?PALO IT
 
Emerging Innovation: an exploratory journey into Design Thinking and why it m...
Emerging Innovation: an exploratory journey into Design Thinking and why it m...Emerging Innovation: an exploratory journey into Design Thinking and why it m...
Emerging Innovation: an exploratory journey into Design Thinking and why it m...PALO IT
 
Données animées
Données animéesDonnées animées
Données animéesPALO IT
 
Spark Streaming
Spark StreamingSpark Streaming
Spark StreamingPALO IT
 
Big Data ou comment retrouver une aiguille dans une botte de foin
Big Data ou comment retrouver une aiguille dans une botte de foinBig Data ou comment retrouver une aiguille dans une botte de foin
Big Data ou comment retrouver une aiguille dans une botte de foinPALO IT
 
Sarah : l’Internet des Objets au service de la maison connectée
Sarah : l’Internet des Objets au service de la maison connectée Sarah : l’Internet des Objets au service de la maison connectée
Sarah : l’Internet des Objets au service de la maison connectée PALO IT
 
Product Owner : Gardien du Cap
Product Owner : Gardien du CapProduct Owner : Gardien du Cap
Product Owner : Gardien du CapPALO IT
 
L'Ergonomie pour les Nuls
L'Ergonomie pour les NulsL'Ergonomie pour les Nuls
L'Ergonomie pour les NulsPALO IT
 

Mehr von PALO IT (20)

The Agile Transformation Hell - PALO IT BarCamp
The Agile Transformation Hell - PALO IT BarCampThe Agile Transformation Hell - PALO IT BarCamp
The Agile Transformation Hell - PALO IT BarCamp
 
Design & Develop Disruptive Software
Design & Develop Disruptive SoftwareDesign & Develop Disruptive Software
Design & Develop Disruptive Software
 
Growth Mindset & Psychological Safety - High Performing Teams in Software Dev...
Growth Mindset & Psychological Safety - High Performing Teams in Software Dev...Growth Mindset & Psychological Safety - High Performing Teams in Software Dev...
Growth Mindset & Psychological Safety - High Performing Teams in Software Dev...
 
BigText, compréhension et inférence avancées sur les textes
BigText, compréhension et inférence avancées sur les textesBigText, compréhension et inférence avancées sur les textes
BigText, compréhension et inférence avancées sur les textes
 
Explorez l’Employee eXperience grâce au Design Thinking
Explorez l’Employee eXperience grâce au Design ThinkingExplorez l’Employee eXperience grâce au Design Thinking
Explorez l’Employee eXperience grâce au Design Thinking
 
Self-Organisation & Transparency: Delegation Poker
Self-Organisation & Transparency: Delegation PokerSelf-Organisation & Transparency: Delegation Poker
Self-Organisation & Transparency: Delegation Poker
 
Framework de Digitalisation par les Organisations Exponentielles
Framework de Digitalisation par les Organisations ExponentiellesFramework de Digitalisation par les Organisations Exponentielles
Framework de Digitalisation par les Organisations Exponentielles
 
Project Managers, our World is Changing!
Project Managers, our World is Changing!Project Managers, our World is Changing!
Project Managers, our World is Changing!
 
The Future of User Experience
The Future of User ExperienceThe Future of User Experience
The Future of User Experience
 
Developers are from Mars, Designers are from Venus
Developers are from Mars, Designers are from VenusDevelopers are from Mars, Designers are from Venus
Developers are from Mars, Designers are from Venus
 
Self-Organization in Agile & Digital Transformation
Self-Organization in Agile & Digital Transformation Self-Organization in Agile & Digital Transformation
Self-Organization in Agile & Digital Transformation
 
Blockchain présenté aux Développeurs
Blockchain présenté aux Développeurs Blockchain présenté aux Développeurs
Blockchain présenté aux Développeurs
 
Pourquoi est-ce si difficile de concevoir une API ?
Pourquoi est-ce si difficile de concevoir une API ?Pourquoi est-ce si difficile de concevoir une API ?
Pourquoi est-ce si difficile de concevoir une API ?
 
Emerging Innovation: an exploratory journey into Design Thinking and why it m...
Emerging Innovation: an exploratory journey into Design Thinking and why it m...Emerging Innovation: an exploratory journey into Design Thinking and why it m...
Emerging Innovation: an exploratory journey into Design Thinking and why it m...
 
Données animées
Données animéesDonnées animées
Données animées
 
Spark Streaming
Spark StreamingSpark Streaming
Spark Streaming
 
Big Data ou comment retrouver une aiguille dans une botte de foin
Big Data ou comment retrouver une aiguille dans une botte de foinBig Data ou comment retrouver une aiguille dans une botte de foin
Big Data ou comment retrouver une aiguille dans une botte de foin
 
Sarah : l’Internet des Objets au service de la maison connectée
Sarah : l’Internet des Objets au service de la maison connectée Sarah : l’Internet des Objets au service de la maison connectée
Sarah : l’Internet des Objets au service de la maison connectée
 
Product Owner : Gardien du Cap
Product Owner : Gardien du CapProduct Owner : Gardien du Cap
Product Owner : Gardien du Cap
 
L'Ergonomie pour les Nuls
L'Ergonomie pour les NulsL'Ergonomie pour les Nuls
L'Ergonomie pour les Nuls
 

Et pourquoi pas JEE ?

  • 1. BarCamp « Et pourquoi pas JEE ? » Octobre 2012 @ Paris Patrick GUILLERM Architecte Java JEE @PALO IT
  • 2. 2 Au programme Introduction JEE 6 Seam 3 JSF Conclusion
  • 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.
  • 8. 8 JEE 6 Evolution entre JEE5 et JEE6
  • 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.
  • 10. 10 JEE 6 Les nouveautés de JEE 6 : JPA 2
  • 11. 11 JEE 6 Les nouveautés de JEE 6 : JPA 2
  • 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.
  • 18. 18 Seam 3 Contexts and Dependency Injection
  • 19. 19 Seam 3 Contexts and Dependency Injection
  • 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.
  • 21. 21 Seam 3 Que sont les événements ?
  • 22. 22 Seam 3 Que sont les événements ?
  • 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.
  • 25. 25 Seam 3 Restriction des vues
  • 26. 26 Seam 3 PrettyFaces : URL Rewriting
  • 27. 27 Seam 3 PrettyFaces : URL Rewriting
  • 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)
  • 30. 30 JSF 2 Cycle de vie
  • 31. 31 JSF 2 Page Description Language
  • 32. 32 JSF 2 Page Description Language
  • 33. 33 JSF 2 Page Description Language
  • 34. 34 JSF 2 Composants Composites
  • 35. 35 JSF 2 Composants Composites
  • 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
  • 39. 39 JSF 2 Richefaces
  • 40. 40 JSF 2 Richefaces
  • 41. 41 JSF 2 Richefaces
  • 42. 42 JSF 2 Richefaces
  • 43. 43 JSF 2 Richefaces
  • 44. 44 JSF 2 Primefaces
  • 45. 45 JSF 2 Primefaces
  • 46. 46 JSF 2 Primefaces
  • 47. 47 JSF 2 Primefaces
  • 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.
  • 50. 50