EE 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
3. Introduction JEE 6 Seam 3 JSF Conclusion
Pr´esentation
Patrick Guillerm, d´eveloppeur JEE
Backoffice de l’Assembl´ee des chambres Fran¸caises 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)
YouTestIt (JEE6, Seam 3, JSF2)
4. Introduction JEE 6 Seam 3 JSF Conclusion
Les objectifs
Quels objectifs pour ce Barcamp ?
Casser les id´ees re¸cues sur JEE
Exposer les avanc´ees technologiques de cette norme
Montrer qu’il existe autre chose que Spring
Vous r´econcilier avec les EJB et JSF
Mettre en avant les avantages et inconv´enients.
5. Introduction JEE 6 Seam 3 JSF Conclusion
JEE 6: Qu’est ce que le JEE
Java Entreprise Edition
Ensemble de normes ( JSR )
Des API ( javax.* )
La majorit´e des technologies Web en java
Que doit contenir un projet pour ˆetre un projet JEE ?
Des EJB
Un conteneur de servlet + un conteneur d’EJB
6. Introduction JEE 6 Seam 3 JSF Conclusion
JEE 6: Les origines du JEE
JEE historique
Timeline repr´esentant les sorties de JavaEE ainsi que des principaux frameworks
7. Introduction JEE 6 Seam 3 JSF Conclusion
JEE 6: Quelles diff´erences entre JEE5 et JEE6?
Evolution entre JEE5 et JEE6
Simplification des EJB
Normalisation de l’injection de d´ependances
Davantage de convention
Meilleure testabilit´e (Tests unitaire, Arquillian )
Possibilit´e d’ˆetre utilis´e en Java SE
Normalisation de la configuration de JPA
Les impl´ementations de r´ef´erences
Normes mises en obsol`ete (Entity CMP 2.x, JAX-RCP, ...)
9. Introduction JEE 6 Seam 3 JSF Conclusion
JEE 6: EAR ou WAR ?
Evolution entre JEE5 et JEE6
Architecture d’un EAR Architecture d’un WAR
10. Introduction JEE 6 Seam 3 JSF Conclusion
JEE 6: Nouveaut´es de JEE 6 : JPA 2
Les principales nouvelles normes
Meilleure gestion des collections (@Element-Collection)
Les Map (@MapKeyColumn)
Supression des liaisons orphelines (OneToMany et OneToOne)
Criterias
Lock pessimiste
Order column (tris au moment de l’´ecriture)
Des @Embedded dans des @Embedded
Standardisation du fichier persistance.xml
S´eparation de la norme JPA et des EJB
12. Introduction JEE 6 Seam 3 JSF Conclusion
JEE 6: Nouveaut´es de JEE 6 : JPA 2
EnityManager exemple : NamedNativeQuery
1 @Entity
2 @NamedNativeQuery(name="SELECT_ALL_USER",query="select * from Foobar",resultClass=Foobar.class)
3 public class Foobar implements Serializable {
4 // Entity ...
5 }
Interface listant les Named Query
1 @ConversationScoped @Named
2 public class FoobarAction {
3 @PersistenceContext
4 private EntityManager entityManager;
5
6 public List<Foobar> findAllFoobar() {
7 List<Foobar> result = entityManager.createNamedQuery("SELECT_ALL_USER").getResultList();
8 return result;
9 }
10 }
DAO
13. Introduction JEE 6 Seam 3 JSF Conclusion
JEE 6: Nouveaut´es de JEE 6 : Testabilit´e
Tester les applications JEE sans douleur
EntityManagerFactory (jboss-javaee-6)
EJBContainer (Glassfish embedded)
Aller plus loin dans les tests
Arquillian
Selenium (attention aux ID Html )
14. Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Qu’est que Seam ?
Concurrent direct de Spring
Con¸cu par le cr´eateur d’Hibernate : Gavin King
Unifier le monde JEE (JPA / EJB / JSF)
Framework Stateful orient´e composants
Impl´ementation de r´ef´erence de la norme CDI
Acteurs majeurs de la norme JEE 6
15. Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: les cas d’utilisation ?
Les cas d’utilisations
Les backoffices : grˆace `a son orientation stateful
Middleware : pour sa facilit´e d’int´egration avec les standards JEE (JAX-WS,
JAX-RS,JPA,JMS,JASS,...)
Site `a tr`es haute disponibilit´e : grˆace aux EJB et aux serveurs d’applications.
Site avec des interfaces web tr`es riches : grˆace `a son framework Ajax, les
diff´erents composants et au Page Description Language
Site au domaine fonctionnel complexe : validation simplifi´ee , ´ev`enements
Maintenabilit´e facilit´e : AoX, CoC et transparence entre composants
16. Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: les cas d’utilisation ?
Les avantages
Productivit´e
Unification des briques applicatives
Puissante gestion des formulaires
De l’Ajax sans la contrainte de l’´ecriture de code JavaScript
M´ecanisme de templating tr`es puissant
Framework orient´e composants
Les inconv´enients
Peu de d´eveloppeur connaissent ce framework en France
Beaucoup de pr´ejuger sur Java EE
Il est n´ecessaire de comprendre ce que l’on fait
Le calcul d’une page JSF est un peu plus long
Peu de d´eveloppeurs savent concevoir des composants
17. Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Les principaux modules
JBoss Weld : impl´ementation de
r´ef´erence de la norme JSR-299
Seam Persistence : JPA 2
Seam Faces : JSF2
Seam Validation : extension pour la
norme JSR-303
Seam Security : identification
18. Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Contexts and Dependency Injection
Activation du contexte CDI
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://java.sun.com/xml/ns/javaee"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
5
6 </beans>
resources/META-INF/beans.xml
Le simple fait d’avoir un fichier beans.xml dans le META-INF d’un jar permet
d’ordonner `a Weld d’ajouter les Web beans dans son contexte.
21. Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Les scopes
Les scopes des Web Beans
@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ˆeme
page
@RequestScoped : actif le temps d’une requˆete HTTP
@RenderScoped : actif uniquement durant le
chargement d’une page
@FlashScoped : micro scope destin´e aux notifications
22. Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Ev´enements
Que sont les ´ev´enements ?
24. Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Ev´enements
Exemple d’´ev´enements existants
@Before Avant le d´ebut du cycle de vie JSF
@After Apr`es le d´ebut du cycle de vie JSF
@RestoreView A la phase ”RestoreView”
@Initialized Quand l’application est initialis´ee
@LoggedInEvent Lorsque l’utilisateur s’est identifi´e
@PreLoggedOutEvent D´econnection d’un utilisateur
@DidActivate A l’activation d’une session
@WillPassivate A passivation d’une session
25. Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Bean validator
JSR-303 : Bean validator
Permet la validation par annotations
Unification de la validation ( front et backend )
Diverses annotations pr´e-existantes (@Email,@Size,@Pattern)
Possibilit´e de cr´eer ses propres annotations pour la validation
26. Introduction JEE 6 Seam 3 JSF Conclusion
Seam 3: Restriction des vues
3 points pour la restriction des vues
Cr´eation des rˆoles (Administrateur, contributeurs, etc...)
Cr´eation de la validation des rˆoles
Cr´eation du Pages.java
30. Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2
Qu’est-ce que c’est ?
Framework de pr´esentation orient´e composants
Un ensemble de composants pour g´erer les vues
Permet d’effectuer diff´erents types de rendus (Email, RSS, PDF, ...)
Du XHTML
En opposition avec JSP (et JSTL)
Une interaction transparente avec les Web beans
Les composants et vues ont des ´etats
Des biblioth`eques tr`es riches en composants (Richfaces, Primefaces)
31. Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: les nouveaut´es
Quoi de neuf dans JSF 2 ?
Page Description Language (Facelets)
Composants Composite simplifi´es (ax´es sur de la convention)
Une meilleure gestion des ressources
De l’ajax en natif
Gestion des param`etres GET
Actions en GET
Un ´enorme travail d’optimisation
La normalisation des travaux de JBoss (Seam 2.x)
32. Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Cycle de vie
Le cycle de vie
Cycle de vie de JSF
37. Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Composants Composites
Utilisation d’un composant composite
1 <ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
2 xmlns:project="http://java.sun.com/jsf/composite/project"
3 template="layout/template.xhtml">
4
5 <ui:define name="body">
6
7 <project:panel id="myPanel" title="Hello my JSF component">
8 <p>
9 This content will be include in my custom component.
10 </p>
11 </project:panel>
12
13 </ui:define>
14 </ui:composition>
38. Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Param`etre en GET
f:viewParam
http://localhost:8080/foobar/product.xhtml?productId=42
1 <f:metadata>
2 <f:viewParam name="productId" value="#{bean.productId}"/>
3 </f:metadata>
L’utilisation de PrettyFaces permet un contrˆole affin´e
39. Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Ajax
f:ajax
1 <h:form id="form">
2 <h:panelGrid>
3 <h:inputText value="#{beanAction.text}" id="textDisplay">
4 <f:ajax event="keyup" render="text" listener="#{beanAction.doSomething}"/>
5 </h:inputText>
6 <h:outputText id="text" value="#{beanAction.text}" />
7 </h:panelGrid>
8 </h:form>
Le support de l’ajax est natif en JSF 2. Mais moins puissant que l’utilisation de
Richfaces ou de Primefaces
40. Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Les biblioth`eques de composants
Les diff´erentes biblioth`eques
Richfaces : Soutenu par JBoss, tr`es utile pour l’Ajax et de la validation
(JSR-303)
Primefaces : L´eger, avec beaucoup de composants, et des diagrammes en
HTML 5
Icefaces : Graphiquement riche mais gourmande en ressources.
Apache MyFaces: Largement distanc´ee par Richfaces et Primefaces.
48. Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Primefaces
Exemple de composants et de sites
49. Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Primefaces
Exemple de composants et de sites
Musific
50. Introduction JEE 6 Seam 3 JSF Conclusion
JSF 2: Primefaces
Exemple de composants et de sites
Kupon express
51. Introduction JEE 6 Seam 3 JSF Conclusion
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