Vous êtes sur la page 1sur 69

Java EE 7

Enterprise Edition

Gnie Logiciel
2013-2014

Meryam Belhiah
meryam.belhiah@um5s.net.ma

Objectifs pdagogiques du cours


1. Se familiariser avec les termes et les concepts les plus
importants ;
2. Apprendre davantage sur larchitecture Java EE et les API
(Application Programming Interfaces) ;
3. Passer en revue les bases de dveloppement dapplications
Java EE.

Outline (1/2)
1.
2.
3.
4.
5.

tude de cas
Comparaison (presque objective) de quelques aspects entre Java EE et .NET
Pourquoi Java EE
Java EE Application Model
Application distribue multi-tiers
5.1.Clients Java EE
5.1.1. Client lger
5.1.2. Client lourd
5.2. Serveurs Java EE
5.2.1. Composants mtier
5.2.2. Composants Web

Servlet

Pages Web
5.3. Systmes dInformation dEntreprise

Outline (2/2)
6.

API (Application Programming Interfaces) Java EE 7


6.1. JPA / Hibernate
6.2. Bean validation / Hibernate Validator

7.

Quelques bases de dveloppement dapplications Java EE


7.1. Utilisation des design pattern :

DAO (Data Access Object )


Singleton

7.2. Utilisation des frameworks :

Hibernate
MVC 2
JSF 2
Spring MVC

7.3. Autres outils :


Apache Maven

8.

Travaux Pratiques

1. tude de cas

1. tude de cas
Mandat : Dvelopper une application dentreprise pour grer une
compagnie arienne internationale. Cette application doit grer :

les clients (donnes clients, rservations, etc.) ;


les employs ;
les fournisseurs et le stock ;
les partenaires commerciaux (agences de voyage, htels, etc.).

Elle doit permettre galement dautres parties tierces, comme les


autorits de rgulation (ex : autorits aroportuaires, direction des impts,
caisse de scurit sociale), dchanger des donnes avec la compagnie
via le Web.

1. tude de cas
Les parties prenantes :
1. le client (la compagnie arienne) ;
2. les prestataires :
interne : la Direction des Systmes dInformation (DSI) de la
compagnie arienne ;
externe : un cabinet XYZ (manager(s) de projets, architecte(s),
analyste(s), dveloppeurs, intgrateurs, testeurs).

1. tude de cas
tape 1 - laborer le cahier des charges, qui est un contrat (au sens
lgal du terme) et qui dfinie entre autres :

les interfaces ;
les fonctionnalits ;
le (s) modle (s) de donnes ;
le flux.

tape 2 - Dfinir les technologies utiliser :

la nature du projet dvelopper ;


les comptences et lexprience de lquipe dj en place ;
la courbe dapprentissage pour les nouvelles technologies ;
lexprience avec dautres projets antrieurs ou des projets similaires ;
la compatibilit avec les systmes dj en place (lintgration est
importante).

1. tude de cas
Depuis les annes 90, les deux tendances en dveloppement des
applications dentreprises sont :
Java Enterprise Edition (Oracle) ;
Microsoft .NET (Microsoft)

2. Comparaison de quelques aspects entre Java EE


et Microsoft .NET

2. Comparaison de quelques aspects entre Java


EE et Microsoft .NET
Aspects

Java EE

Microsoft .NET

Environnement de
Dveloppement
Intgr (IDE)

Eclipse : lIDE le plus


populaire pour le
dveloppement dAE, open
source, gratuit

VisualStudio.NET est
un IDE complet mais
payant

Communaut des
dveloppeurs

Une communaut
imposante

Microsoft Developers
Network (MSDN)

Language de
programmation

#2 : Java

#5 : C#

Productivit

Dans le planning, prvoir du


temps pour dcider des
technologies

Les solutions
technologiques sont
arrtes

UI best practices

JSP, JSF, Wicket, Struts

ASP.NET MVC

Mapping Objet
Relationnel (ORM)

Spc. JPA
Framework Hibernate

Entity framework
NHibernate

(1) : http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Observations

dc. 2013 (1)

Les outils dORM sont plus


matures en Java EE

2. Comparaison de quelques aspects entre Java


EE et Microsoft .NET
Cot de lacquisition de lIDE et des serveurs ;
Technologies open source v/s propritaires

3. Pourquoi Java EE ?

3.

Pourquoi Java EE ?

Permettre le dveloppement dapplications critiques pour


lentreprise qui sont:
distribues ;
transactionnelles ;
portables.
Qui en mme temps sont :
rapides ;
scurises ;
fiables.

3.

Pourquoi Java EE ?

Fournir aux dveloppeurs dapplications dentreprise un ensemble


complet dAPI pour :

rduire la complxit des applications ;


rduire le temps de dveloppement ;
augmenter la productivit ;
amliorer les performances.

4. Java EE Application Model

4.

Java EE Application Model


Middle-tier : un environnement clos
qui est entirement contrl par la
DSI dun organisme/entreprise.

fig1. Architecture distribue multi-tiers

Les services du middle-tier tournent


sur des serveurs ddis et ont accs
tous les autres services de
lentreprise.

4.

Java EE Application Model

Ce modle divise le travail ncessaire limplmentation dune


application multitirce comme suit :

la prsentation et la logique mtier incombent aux dveloppeurs;


les services systme standards sont fournis par la plateforme Java
EE.

Dans le cas de la compagnie arienne :


la gestion des rservations, des clients , les changes avec les agences
de voyage, etc. (le middle-tier) et le UI incombent aux dveloppeurs ;
la gestion des ressources, aspects standards de la scurit,
persistance, rpartition de la charge, reprise sur panne par exemple,
sont pris en charge par la plateforme.

5. Application distribue multi-tiers


5.1.Clients Java EE
5.1.1. Client lger
5.1.2. Client lourd

5.2. Serveurs Java EE


5.2.1. Composants mtier
5.2.2. Composants Web

Servlet

Pages Web

5.3. Systmes dInformation dEntreprise

5.

Architecture distribue multi


multi--tiers

fig2. Architecture distribue multi-tiers

5.

Architecture distribue multi-tiers

Une application distribue multi-tiers est une application qui est


dveloppe et distribue sur au moins deux couches.
Larchitecture n-tiers Java EE la plus commune est la 3-tiers :
Clients Java EE ;
Serveurs Java EE (composants Web, composants mtier) ;
Systmes dInformation dEntreprise (EIS).

5.1.1.

Clients Java EE - Clients lger

Un client lger (thin client) nexcute pas de rgles mtier


complexes, ninterroge pas les bases de donnes et ne se connecte
pas aux systmes hrits (legacy systems).
Les oprations lourdes sont excutes par des composants mtier
au niveau du serveur (enterprise beans).
Exemple de client lger : un client Web constitu de pages Web
dynamiques contenant diffrents types de langage de markup
(ex : HTML, XML.) et qui sont gnrs par les composants Web
s'excutant au niveau container Web. Un navigateur Web affiche
les pages reues du serveur.

5.1.2.

Clients Java EE - Client lourd

Un application cliente lourde (fat/thick client) s'excute sur le client


et fournit un moyen pour les utilisateurs de grer des tches qui
ncessitent une interface utilisateur plus riche, que ce qui peut tre
fourni par un langage de balisage.
Une application cliente lourde a gnralement une GUI (Graphic
User Interface).
Les applications clientes lourde accdent directement aux
enterprise beans de la couche mtier. Une application cliente
lourde peut ne pas tre crite en Java et accder quand mme aux
enterprise beans au niveau du serveur Java EE.

5.2. Serveur Java EE


Un serveur d'application fournit les
services middleware les plus courants,
permettant ainsi de se focaliser sur
l'application que l'on dveloppe, sans
s'occuper du reste.
La sparation est nette entre la
logique mtier et les services
middleware.

fig3. Serveur Java EE

5.2.1.

Serveur Java EE - composants mtier


Cest un programme informatique
qui rsout des problmatiques
ou rpond des besoins
spcifiques un domaine
dactivits particulier.
Ex: commerce de dtail,
banques, finance, etc.

fig4. Serveur Java EE - Composants Java EE

5.2.1. Composants mtier - Enterprise JavaBeans (EJB)


EJB est une architecture de composants logiciels, hbrgs sur des
serveurs Java EE distribus.
Cette architecture permet de :
grer les sessions et les tats : EJB session ;
accomplir des tches de manire asynchrone : message
driven beans ;
reprsenter les donnes : entity beans.

5.2.1.

Composants mtier - EJB session

Les EJB session proposent un certain nombre de mthodes leurs


clients.
Il existe deux types dEJB session :

stateless : ne conservent pas leur tat entre deux appels ;

stateful: conservent leur tat entre deux appels.

5.2.1.

Composants mtier - MDB

Terminologies :

Expditeur JMS (JMS Producer/sender) :


une application qui envoie des messages
JMS ;

Consommateur JMS (JMS


Consumer/receiver) : une application qui
reoit des messages JMS ;

Message JMS : un message qui respecte les


spcifications JMS ;

Destination : des objets servant identifier


la cible (domaine : queue ou topic) des
messages envoyer ou recevoir.

fig5. Architecture JMS

5.2.1.

Composants mtier - MDB

Un MDB est un composant permettant de traiter les messages


arrivant sur une destination ;
Le MBD sinscrie une Queue, reoie un message et le traite ;
Lenvoie/rception des messages utilisent lAPI JMS qui permet
une communication asynchrone entre les expditeurs
(fournisseurs de messages) et les destinataires (consommateurs
de messages).

5.2.1.

Composants mtier - entity beans

Les entity beans sont des objets mtier qui servent dinterface
entre lapplication crite en Java et le systme dinformation de
lentreprise (en gnral, des bases de donnes relationnelles) ;
Depuis la version EJB 3.0, les entity beans utilisent les annotations
de lAPI JPA pour la persistance.
Exemples :
@Entity : dfinir un bean comme tant de type Entity ;
@Id : dfinir un champ comme un identifiant unique ;
@Table : mapper la table dune BD avec un bean ;
@Column : mapper le champ dune table avec une proprit du bean ;
Etc.

5.2.1.

Composants mtier - entity beans

Depuis la version EJB 3.0, les entity beans nimplmentent aucune


interface spcifique aux EJB. Selon les spcifications, ils doivent
avoir un constructeur sans arguments et doivent implmenter
l'interface Serializable ;
La classe EntityManager est responsable des oprations de
gestion des oprations sur une entit.
Exemples :
persist ;
remove ;
find ;
createQuery ;
Etc.

5.2.2.

Serveur Java EE - Composants Web

Les composants Web :

Servlets : un programme Java hbrg dans le serveur dapplication. Il


reoit une requte du client, effectue un traitement et renvoie une
rponse dynamique sous forme de page HTML (dans le cas dun serveur
Web). Gnralement en utilisant le protocole HTTP, mais dautres
protocoles peuvent galement tre utiliss.
Le fait que les servlets soient crite en Java leur permet entre autres: la
portabilit et lacces aux API Java dont JDBC.

Pages Web cre en utilisant les technologies JSP (Java Server Pages) ou
JSF (Java Server Faces).

5.2.2.

Composants Web -Servlet

fig6. Cycle de vie dune servlet

La servlet repose sur un modle de


programmation requte-rponse
(request-response).
Cest une API qui sexcute sur le
serveur Web.
Un serveur Web fait gnralement
deux choses:
Intercepte les requtes du
client ;
Traite la requte (ex : accde
la base de donnes, fait des
traitements mtier) et
retourne une rponse bien
formatte au client.

5.2.2.

Composants Web - Servlet

fig7. Exemple dune servlet avec la mthode doGet

5.2.2.

Composants Web - Servlet

fig7. Exemple dune servlet avec la mthode doPost

5.2.2.

Composants Web - Servlet

La partie dun serveur reponsable de la gestion du cycle de vie


dune servlet est le Web container ou le servlet Container.
Le servlet Container est la partie responsable pour fournir une
implmentation de lAPI javax.servlet.*;

5.2.2.

Composants Web - Servlet

Typologie des containers:


1. Serveur Java EE : fournit les containers Enterprise JavaBeans
(EJB) et les containers Web ;

Container EJB : gre lexcution des enterprise beans pour les


applications Java EE. Les enterprise beans et leur container sexcutent
dans le serveur Java EE ;
Container Web : gre lexcution des pages Web et des servlets. Les
composants Web et leur conteneur sexcutent sur le serveur Java EE .

2. Clients Java EE :

Container dapplications clientes : gre lexcution des composants des


applications clientes. Les applications clientes et leur container
sexcutent sur le client ;
Container pour les applets : gre lexcution des applets. Il consiste en
un navigateur Web et un Plug-in Java qui sexcutent sur le client.

5.2.2.

Composants Web - Servlet

Fig 8. Serveur et containers Java EE

5.2.2.

Composants Web - JSP

Java Server Pages (JSP) est une technologie Java qui permet de
gnrer des pages Web dynamique ;
Les pages JSP se composent de :
1. contenu statique crit avec des tags HTML ;
2. contenu dynamique :
Tags JSP ;
Code Java (scriptet) intgr la JSP
Un fichier JSP possde lextension .jsp

5.2.2.

Composants Web - JSP

Fig 9. Exemple de page JSP

5.2.2.

Composants Web - JSP (Librairie JSTL)

JSTL (JSP Standard Tag Library) est une bibliothque standard qui
regroupe des fonctionnalits souvent rencontres dans les JSP :
structure : itration, condition, etc.
internationalisation ;
manipulation de BD SQL ;
manipulation de documents XML.
JSTL 1.2 ncessite un container Web qui implmente lAPI JSP 2.1.

5.2.2.

Composants Web - JSP (Librairie JSTL)

Fonction

Tags

Gestion du flux (condition et itration)

<c:if>
<c:choose>
<c:when>
<c:otherwise >
<c:forEach >
<c:forTokens>

Gestion des URL

<c:param>
<c:redirect >
<c:url>
Tableau1 : Tags de structure

5.2.2.

Composants Web - JSP (Librairie JSTL)

Fonction

Tags

Dfinition de la langue

<fmt:setLocale>

Formatage de messages

<fmt:message>
<fmt:bundle>
<fmt:setBundle>

Formatage de dates et nombres

<fmt:formatNumber>
<fmt:parseNumber>
<fmt:formatDate>
<fmt:parseDate>
<fmt:setTimeZone>
<fmt:timeZone>

Tableau2. Tags dinternationalisation

5.2.2.

Composants Web - JSP (Librairie JSTL)

Fonction

Tags

Dfinition de la source de donnes

<sql:setDataSource>

Excution de requtes SQL

<sql:query>
<sql:transaction >
<sql:update>

Tableau3. Tags de manipulation de BD avec SQL

5.2.2.

Composants Web - JSP (Librairie JSTL)

Fonction

Tag

Fondamentale

<x:parse>
<x:set >
<x:out>

Gestion du flux (itration, condition)

<x:if >
<x:forEach>
<x:choose>
<x:when >
<x:otherwise >

Transformation XSTL (Extensible


Stylesheet Language Transformations)

<x:transform >
<x:param >

Tableau4. Tags de manipulation de documents XML

5.3. Systme dinformation dentreprise


La couche Systme dInformation dEntreprise comporte :
les systmes dinfrastructure dentreprise (ex : ERP);
les systmes de bases de donnes (SGBD) ;
les systmes hrits.

6. Quelques API Java EE 7


6.1. JPA / Hibernate
6.2. Bean validation / Hibernate Validator

6.

Quelques API Java EE 7

Fig 11. API Java EE 7

6.1. JPA / Hibernate


JPA (Java Persistence API) est une spcification Java pour la gestion
de la persistance.
Il permet de combler le vide entre le modle OO et le modle des
BD relationnelles, en utilisant un mapping objet-relationnel (ORM).
Le mapping permet dassurer la transaformation dobjets vers la BD
et vice-versa pour les oprations CRUD (Create, Retrieve, Update,
Delete).

6.1. JPA / Hibernate


LAPI repose sur :
des entits qui sont des POJOs (Plain Old Java Objects),
dclar avec lannotation @Entity et qui possdent au
moins une proprit annote @Id et donc dclare comme
une cl primaire ;
un gestionnaire des entits (Entity Manager).

6.2. Bean Validation / Hibernate Validator


Permet dexprimer les rgles de validation de manire standard,
en utilisant les annotations ;
Facile intgrer plusieurs Frameworks, parmi lesquels Spring
MVC.

6.2. Bean Validation / Hibernate Validator

Fig 13. Exemple dutilisation des annotations de lAPI


Hibernate Validator

7. Bases de dveloppement dapplications Java EE :


7.1. Utilisation des design pattern :

DAO (Data Access Object )


Singleton

7.2. Utilisation des frameworks :

Hibernate
MVC 2
JSF 2
Spring MVC

7.3. Autres outils :

Apache Maven

7.1. Utilisation des design pattern - DAO


DAO : Objets daccs la base de donnes (Data Access Object) est une stratgie
de mapping entre des objets Java et la base de donnes.
Avantages du design pattern DAO :

simple crire (une classe POJO + une classe DAO) ;

sparation de la donnes (data) et de la logique mtier ;

possibilit de dvelopper des applications distribues, comme les DAO


peuvent tre des session beans ou des services Web ;

possibilit dutiliser des joints et des procdures stockes.

7.1. Utilisation des design pattern - Singleton


Singleton : en gnie logiciel, il sagit dun design pattern qui permet de
restreindre linstanciation dune classe un seul objet, pendant toute la dure de
vie de lapplication.
La mthode qui cre cette instance doit dabord sassurer quaucune autre
instance nexiste dj.
Avantages :

Optimiser les performances par la rduction du nombre dobjets cres ;

Sassurer que des objets similaires et non ncessaires ne vont pas tre cres
dans la mme application.

7.1. Utilisation des design pattern - Singleton

Fig 13. Exemple de classe Singleton

7.2. Utilisation des frameworks - Hibernate


Hibernate est un framework de mapping objet-relationnel (ORM).
Depuis la version 3.2, il fournie une implmentation de JPA.
Le mapping avec Hibernate est ralis :
Avec des annotations ;
Avec des fichiers XML.

7.2. Utilisation des frameworks - Hibernate

Fig 12. Exemple de fichier de mapping avec XML

7.2. Utilisation des frameworks - MVC2


Objectifs dun framework :
Standardiser et faciliter le
dveloppement dapplication
Web avec Java.

Fig 10. Modle MVC

Rpondre des problmes communs et


inhrents aux dveloppement
dapplications :
l'accs aux donnes ;
l'internationalisation ;
la journalisation des vnements
(logging) ;
la scurit (authentification
identification) ;
le paramtrage de l'application.

7.2. Utilisation des frameworks - JSF


JSF (Java Server Faces) :
Un framework de la couche prsentation orient composants,
pour construire des applications Web.
JSF repose sur le modle MVC 2 (Model View Controller).
Les composants de la technologie JSF sont :
Un framework de composants GUI ;
Un modle flexible pour renvoyer les lements afficher
dans diffrents langages de balisage (HMTL, XML, etc.) ;
Un kit standard pour gnrer des balises HTML.

7.2. Utilisation des frameworks - JSF


Les composants GUI viennent avec :
La validation des inputs ;
La gestion des vnements ;
La conversion de donnes entre le modle objet et les
composants ;
La configuration de la navigation entre les pages.

7.2. Utilisation des frameworks - JSF


Le cycle de vie dune requte traite par une application utilisant
la technologie JSF est le suivant :
1.
2.
3.
4.
5.
6.

Cration de l'arbre de composants ;


Extraction des donnes des diffrents composants de la page ;
Conversion et validation des donnes ;
Extraction des donnes valides et mise jour du modle de donnes
(javabean) ;
Traitements des vnements lis la page ;
Gnration du rendu de la rponse.

7.2. Utilisation des frameworks - Spring MVC


Approche Spring MVC :

Model : Objets POJO ;


View : Diffrentes technologies : JSP, etc. ;
Controller : Classes Spring Controller.

7.2. Utilisation des frameworks - Spring MVC


Toutes les requtes passent travers la Springs Dispatcher Servlet :
Request

Request

Response

Springs Dispatcher Servlet

Model object and view name

Controller

View name
View

View Resolver

Model
Response

View

Fig 14. Architecture Spring MVC

7.2. Utilisation des frameworks - Spring MVC


tapes pour crer une application Spring MVC de base :
1.
2.
3.
4.
5.

crire la classe du (es) modle(s) de type POJO ;


crire la classe du contrleur ;
crire les pages qui serviront de vues (en loccurrence des pages jsp) ;
Configurer la Springs dispatcher servlet dans le fichier web.xml ;
crire le fichier de contexte de Spring <NOM_DU_CONTROLLEUR>servlet.xml et y configurer le View Resolver.

7.3. Autres outils - Maven


Maven : outil open source pour la gestion et automatisation de la production de
projets en Java (build).
Avantages :
La standardisation de la structure du projet et donc lorganisation du travail
des dveloppeurs ;
Lutilisation du fichier de configuration pom.xml (Project Object Model) :
qui contient les informations ncessaires pour automatiser la production
dun projet :

nom du projet ,
numro de version,
dpendances par rapport dautres projets,
librairies ncessaires la compilation (tlcharges partir de Maven Central Repository :
http://search.maven.org/),
etc.

7.3. Autres outils - Maven

Fig 14. Structure dun projet Maven

Fig 15. Aperu dun fichier pom.xml