Está en la página 1de 69

Java EE 7

Enterprise Edition

Génie Logiciel
2013-2014

Meryam Belhiah
meryam.belhiah@um5s.net.ma

Objectifs pédagogiques du cours
1. Se familiariser avec les termes et les concepts les plus
importants ;
2. Apprendre davantage sur l’architecture Java EE et les API
(Application Programming Interfaces) ;
3. Passer en revue les bases de développement d’applications
Java EE.

2.1.1.1.2. Systèmes d’Information d’Entreprise .NET Pourquoi Java EE Java EE Application Model Application distribuée multi-tiers 5.2. 2. Composants Web • Servlet • Pages Web 5. 5. 3.1. Client léger 5. Client lourd 5.Outline (1/2) 1.1.Clients Java EE 5. Composants métier 5.2. Serveurs Java EE 5.2. 4.3. Étude de cas Comparaison (presque objective) de quelques aspects entre Java EE et .

Autres outils : • Apache Maven 8.1. Quelques bases de développement d’applications Java EE 7.Outline (2/2) 6. Utilisation des design pattern : • • DAO (Data Access Object ) Singleton 7. Travaux Pratiques . API (Application Programming Interfaces) Java EE 7 6.3. Bean validation / Hibernate Validator 7.2. JPA / Hibernate 6.2. Utilisation des frameworks : • • • • Hibernate MVC 2 JSF 2 Spring MVC 7.1.

1. Étude de cas .

1. Elle doit permettre également à d’autres parties tierces. direction des impôts. les partenaires commerciaux (agences de voyage. hôtels. les employés . etc. comme les autorités de régulation (ex : autorités aéroportuaires. Étude de cas Mandat : Développer une application d’entreprise pour gérer une compagnie aérienne internationale.). etc. caisse de sécurité sociale). d’échanger des données avec la compagnie via le Web. réservations. les fournisseurs et le stock .) . . Cette application doit gérer : • • • • les clients (données clients.

Étude de cas Les parties prenantes : 1. architecte(s). . • externe : un cabinet XYZ (manager(s) de projets. développeurs.1. testeurs). intégrateurs. le client (la compagnie aérienne) . les prestataires : • interne : la Direction des Systèmes d’Information (DSI) de la compagnie aérienne . 2. analyste(s).

le flux. Étude de cas Étape 1 .Élaborer le cahier des charges. les compétences et l’expérience de l’équipe déjà en place .Définir les technologies à utiliser : • • • • • la nature du projet à développer . le (s) modèle (s) de données . les fonctionnalités . Étape 2 . la courbe d’apprentissage pour les nouvelles technologies . . qui est un contrat (au sens légal du terme) et qui définie entre autres : • • • • les interfaces . la compatibilité avec les systèmes déjà en place (l’intégration est importante). l’expérience avec d’autres projets antérieurs ou des projets similaires .1.

1. • Microsoft .NET (Microsoft) . Étude de cas Depuis les années 90. les deux tendances en développement des applications d’entreprises sont : • Java Enterprise Edition (Oracle) .

Comparaison de quelques aspects entre Java EE et Microsoft .NET .2.

NET Environnement de Développement Intégré (IDE) Eclipse : l’IDE le plus populaire pour le développement d’AE.2. Comparaison de quelques aspects entre Java EE et Microsoft . JSF.NET MVC Mapping Objet Relationnel (ORM) Spéc.tiobe.html Observations déc. 2013 (1) Les outils d’ORM sont plus matures en Java EE . Wicket. prévoir du temps pour décider des technologies Les solutions technologiques sont arrêtées UI best practices JSP.php/content/paperinfo/tpci/index. Struts ASP. gratuit VisualStudio.NET Aspects Java EE Microsoft . JPA Framework Hibernate Entity framework NHibernate (1) : http://www.com/index.NET est un IDE complet mais payant Communauté des développeurs Une communauté imposante Microsoft Developers Network (MSDN) Language de programmation #2 : Java #5 : C# Productivité Dans le planning. open source.

Comparaison de quelques aspects entre Java EE et Microsoft .2. • Technologies open source v/s propriétaires .NET • Coût de l’acquisition de l’IDE et des serveurs .

3. Pourquoi Java EE ? .

. • transactionnelles . • sécurisées . Qui en même temps sont : • rapides . • fiables.3. Pourquoi Java EE ? Permettre le développement d’applications critiques pour l’entreprise qui sont: • distribuées . • portables.

Pourquoi Java EE ? Fournir aux développeurs d’applications d’entreprise un ensemble complet d’API pour : • • • • réduire la compléxité des applications . . améliorer les performances. réduire le temps de développement .3. augmenter la productivité .

4. Java EE Application Model .

Architecture distribuée multi-tiers Les services du middle-tier tournent sur des serveurs dédiés et ont accès à tous les autres services de l’entreprise. . Java EE Application Model Middle-tier : un environnement clos qui est entièrement contrôlé par la DSI d’un organisme/entreprise. fig1.4.

Dans le cas de la compagnie aérienne : • la gestion des réservations. Java EE Application Model Ce modèle divise le travail nécessaire à l’implémentation d’une application multitièrce comme suit : • • la présentation et la logique métier incombent aux développeurs.4. répartition de la charge. . reprise sur panne par exemple. des clients . • la gestion des ressources. (le middle-tier) et le UI incombent aux développeurs . les services système standards sont fournis par la plateforme Java EE. aspects standards de la sécurité. sont pris en charge par la plateforme. persistance. etc. les échanges avec les agences de voyage.

2.2.1.2. Serveurs Java EE 5.1.Clients Java EE 5. Client léger 5. Application distribuée multi-tiers 5. Systèmes d’Information d’Entreprise .5.2.3.1.1. Client lourd 5.1. Composants Web • Servlet • Pages Web 5. Composants métier 5.2.

5. Architecture distribuée multi-tiers . Architecture distribuée multi multi--tiers fig2.

L’architecture n-tiers Java EE la plus commune est la 3-tiers : • Clients Java EE . composants métier) .5. • Serveurs Java EE (composants Web. Architecture distribuée multi-tiers Une application distribuée multi-tiers est une application qui est développée et distribuée sur au moins deux couches. • Systèmes d’Information d’Entreprise (EIS). .

n’interroge pas les bases de données et ne se connecte pas aux systèmes hérités (legacy systems).1. Un navigateur Web affiche les pages reçues du serveur. XML.Clients léger Un client léger (thin client) n’exécute pas de règles métier complexes. Clients Java EE . Exemple de client léger : un client Web constitué de pages Web dynamiques contenant différents types de langage de markup (ex : HTML. Les opérations lourdes sont exécutées par des composants métier au niveau du serveur (enterprise beans). .) et qui sont générés par les composants Web s'exécutant au niveau container Web.1.5.

Une application cliente lourde a généralement une GUI (Graphic User Interface). Clients Java EE . . Les applications clientes lourde accèdent directement aux enterprise beans de la couche métier.2.1.Client lourd Un application cliente lourde (fat/thick client) s'exécute sur le client et fournit un moyen pour les utilisateurs de gérer des tâches qui nécessitent une interface utilisateur plus riche.5. Une application cliente lourde peut ne pas être écrite en Java et accéder quand même aux enterprise beans au niveau du serveur Java EE. que ce qui peut être fourni par un langage de balisage.

permettant ainsi de se focaliser sur l'application que l'on développe. sans s'occuper du reste. Serveur Java EE Un serveur d'application fournit les services middleware les plus courants. Serveur Java EE .5. fig3.2. La séparation est nette entre la logique métier et les services middleware.

Serveur Java EE . fig4. banques. Serveur Java EE .composants métier C’est un programme informatique qui résout des problématiques ou répond à des besoins spécifiques à un domaine d’activités particulier. etc.5.Composants Java EE .2. finance.1. Ex: commerce de détail.

Cette architecture permet de : • gérer les sessions et les états : EJB session .5. Composants métier . • accomplir des tâches de manière asynchrone : message driven beans . .2.1. hébérgés sur des serveurs Java EE distribués. • représenter les données : entity beans.Enterprise JavaBeans (EJB) EJB est une architecture de composants logiciels.

EJB session Les EJB session proposent un certain nombre de méthodes à leurs clients.1.5. .2. • stateful: conservent leur état entre deux appels. Composants métier . Il existe deux types d’EJB session : • stateless : ne conservent pas leur état entre deux appels .

• Consommateur JMS (JMS Consumer/receiver) : une application qui reçoit des messages JMS . • Destination : des objets servant à identifier la cible (domaine : queue ou topic) des messages à envoyer ou à recevoir. Architecture JMS .5. fig5. Composants métier .1.MDB Terminologies : • Expéditeur JMS (JMS Producer/sender) : une application qui envoie des messages JMS . • Message JMS : un message qui respecte les spécifications JMS .2.

• L’envoie/réception des messages utilisent l’API JMS qui permet une communication asynchrone entre les expéditeurs (fournisseurs de messages) et les destinataires (consommateurs de messages). reçoie un message et le traite .2. • Le MBD s’inscrie à une Queue.MDB • Un MDB est un composant permettant de traiter les messages arrivant sur une destination .1.5. Composants métier . .

les entity beans utilisent les annotations de l’API JPA pour la persistance. • Etc.1. • @Table : mapper la table d’une BD avec un bean .5. Exemples : • @Entity : définir un bean comme étant de type Entity . des bases de données relationnelles) .2. • @Id : définir un champ comme un identifiant unique . Depuis la version EJB 3. .entity beans Les entity beans sont des objets métier qui servent d’interface entre l’application écrite en Java et le système d’information de l’entreprise (en général. • @Column : mapper le champ d’une table avec une propriété du bean . Composants métier .0.

ils doivent avoir un constructeur sans arguments et doivent implémenter l'interface “Serializable” .1. Composants métier . • Etc. • remove . Exemples : • persist . Selon les spécifications. • find . . les entity beans n’implémentent aucune interface spécifique aux EJB. • createQuery .5.0. La classe “EntityManager” est responsable des opérations de gestion des opérations sur une entité.2.entity beans Depuis la version EJB 3.

5. effectue un traitement et renvoie une réponse dynamique sous forme de page HTML (dans le cas d’un serveur Web). Le fait que les servlets soient écrite en Java leur permet entre autres: la portabilité et l’accèes aux API Java dont JDBC. Généralement en utilisant le protocole HTTP.Composants Web Les composants Web : • Servlets : un programme Java hébérgé dans le serveur d’application. .2. • Pages Web crée en utilisant les technologies JSP (Java Server Pages) ou JSF (Java Server Faces). mais d’autres protocoles peuvent également être utilisés.2. Il reçoit une requête du client. Serveur Java EE .

5.2. . Composants Web -Servlet fig6.2. Un serveur Web fait généralement deux choses: • Intercepte les requêtes du client . • Traite la requête (ex : accède à la base de données. fait des traitements métier) et retourne une réponse bien formattée au client. Cycle de vie d’une servlet La servlet repose sur un modèle de programmation requête-réponse (request-response). C’est une API qui s’exécute sur le serveur Web.

Exemple d’une servlet avec la méthode doGet .2.5.2. Composants Web .Servlet fig7.

2. Composants Web .5.2.Servlet fig7. Exemple d’une servlet avec la méthode doPost .

*.servlet. Le servlet Container est la partie responsable pour fournir une implémentation de l’API javax.2.Servlet La partie d’un serveur reponsable de la gestion du cycle de vie d’une servlet est le Web container ou le servlet Container.5. Composants Web .2. .

Les applications clientes et leur container s’exécutent sur le client . Les enterprise beans et leur container s’exécutent dans le serveur Java EE . 2. Container Web : gère l’exécution des pages Web et des servlets. Il consiste en un navigateur Web et un Plug-in Java qui s’exécutent sur le client. Serveur Java EE : fournit les containers Enterprise JavaBeans (EJB) et les containers Web .5.2. Les composants Web et leur conteneur s’exécutent sur le serveur Java EE . Clients Java EE : • • Container d’applications clientes : gère l’exécution des composants des applications clientes. Composants Web .2. .Servlet Typologie des containers: 1. • • Container EJB : gère l’exécution des enterprise beans pour les applications Java EE. Container pour les applets : gère l’exécution des applets.

Serveur et containers Java EE .2.Servlet Fig 8. Composants Web .5.2.

Les pages JSP se composent de : 1.JSP Java Server Pages (JSP) est une technologie Java qui permet de générer des pages Web dynamique . contenu statique écrit avec des tags HTML . Composants Web . 2.jsp . • Code Java (scriptet) intégré à la JSP Un fichier JSP possède l’extension .2.2. contenu dynamique : • Tags JSP .5.

Exemple de page JSP .2.5.2.JSP Fig 9. Composants Web .

2.2 nécessite un container Web qui implémente l’API JSP 2. • internationalisation . Composants Web . condition.1. • manipulation de documents XML.5. . etc.JSP (Librairie JSTL) JSTL (JSP Standard Tag Library) est une bibliothèque standard qui regroupe des fonctionnalités souvent rencontrées dans les JSP : • structure : itération.2. • manipulation de BD SQL . JSTL 1.

Composants Web .2.5.2.JSP (Librairie JSTL) Fonction Tags Gestion du flux (condition et itération) <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 .

2. Composants Web .JSP (Librairie JSTL) Fonction Tags Définition 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.2. Tags d’internationalisation .5.

JSP (Librairie JSTL) Fonction Tags Définition de la source de données <sql:setDataSource> Exécution de requêtes SQL <sql:query> <sql:transaction > <sql:update> Tableau3. Tags de manipulation de BD avec SQL .5.2. Composants Web .2.

condition) <x:if > <x:forEach> <x:choose> <x:when > <x:otherwise > Transformation XSTL (Extensible Stylesheet Language Transformations) <x:transform > <x:param > Tableau4.2.JSP (Librairie JSTL) Fonction Tag Fondamentale <x:parse> <x:set > <x:out> Gestion du flux (itération.2.5. Composants Web . Tags de manipulation de documents XML .

• les systèmes de bases de données (SGBD) . • les systèmes hérités. .5. Système d’information d’entreprise La couche « Système d’Information d’Entreprise » comporte : • les systèmes d’infrastructure d’entreprise (ex : ERP).3.

2. JPA / Hibernate 6. Quelques API Java EE 7 6.6. Bean validation / Hibernate Validator .1.

Quelques API Java EE 7 Fig 11.6. API Java EE 7 .

JPA / Hibernate JPA (Java Persistence API) est une spécification Java pour la gestion de la persistance. Retrieve. Update. .1. Il permet de combler le vide entre le modèle OO et le modèle des BD relationnelles.6. Delete). en utilisant un mapping objet-relationnel (ORM). Le mapping permet d’assurer la transaformation d’objets vers la BD et vice-versa pour les opérations CRUD (Create.

JPA / Hibernate L’API repose sur : • des entités qui sont des POJOs (Plain Old Java Objects). . déclaré avec l’annotation @Entity et qui possédent au moins une propriété annotée @Id et donc déclarée comme une clé primaire . • un gestionnaire des entités (Entity Manager).6.1.

• Facile à intégrer à plusieurs Frameworks. Bean Validation / Hibernate Validator • Permet d’exprimer les règles de validation de manière standard.2. parmi lesquels Spring MVC. .6. en utilisant les annotations .

Exemple d’utilisation des annotations de l’API Hibernate Validator .2.6. Bean Validation / Hibernate Validator Fig 13.

Utilisation des design pattern : • • DAO (Data Access Object ) Singleton 7.3.2.1. Autres outils : • Apache Maven . Bases de développement d’applications Java EE : 7.7. Utilisation des frameworks : • • • • Hibernate MVC 2 JSF 2 Spring MVC 7.

1. • possibilité d’utiliser des joints et des procédures stockées. .DAO DAO : Objets d’accès à la base de données (Data Access Object) est une stratégie de mapping entre des objets Java et la base de données. Utilisation des design pattern . comme les DAO peuvent être des session beans ou des services Web .7. • séparation de la données (data) et de la logique métier . • possibilité de développer des applications distribuées. Avantages du design pattern DAO : • simple à écrire (une classe POJO + une classe DAO) .

Utilisation des design pattern . La méthode qui crée cette instance doit d’abord s’assurer qu’aucune autre instance n’existe déjà. Avantages : • Optimiser les performances par la réduction du nombre d’objets crées . pendant toute la durée de vie de l’application.7. . il s’agit d’un design pattern qui permet de restreindre l’instanciation d’une classe à un seul objet.1. • S’assurer que des objets similaires et non nécessaires ne vont pas être crées dans la même application.Singleton Singleton : en génie logiciel.

Singleton Fig 13.1.7. Exemple de classe Singleton . Utilisation des design pattern .

7.2. Utilisation des frameworks - Hibernate
Hibernate est un framework de mapping objet-relationnel (ORM).
Depuis la version 3.2, il fournie une implémentation de JPA.
Le mapping avec Hibernate est réalisé :
• 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 d’un framework :
Standardiser et faciliter le
développement d’application
Web avec Java.

Fig 10. Modèle MVC

Répondre à des problèmes communs et
inhérents aux développement
d’applications :
• l'accès aux données ;
• l'internationalisation ;
• la journalisation des événements
(logging) ;
• la sécurité (authentification
identification) ;
• le paramétrage de l'application.

pour construire des applications Web. • Un modèle flexible pour renvoyer les élements à afficher dans différents langages de balisage (HMTL. etc. • Un kit standard pour générer des balises HTML.7. Les composants de la technologie JSF sont : • Un framework de composants GUI . JSF repose sur le modèle MVC 2 (Model View Controller). . XML.JSF JSF (Java Server Faces) : Un framework de la couche présentation orienté composants.) . Utilisation des frameworks .2.

• La conversion de données entre le modèle objet et les composants . • La configuration de la navigation entre les pages.7. Utilisation des frameworks . • La gestion des événements .2.JSF Les composants GUI viennent avec : • La validation des inputs . .

Conversion et validation des données . 4. Extraction des données des différents composants de la page . 5.2. Extraction des données validées et mise à jour du modèle de données (javabean) . Traitements des événements liés à la page .JSF Le cycle de vie d’une requête traitée par une application utilisant la technologie JSF est le suivant : 1. Utilisation des frameworks . .7. Création de l'arbre de composants . 2. 6. 3. Génération du rendu de la réponse.

View : Différentes technologies : JSP.7. .2. etc. Controller : Classes Spring Controller. Utilisation des frameworks .Spring MVC Approche Spring MVC : • • • Model : Objets POJO . .

7.Spring MVC Toutes les requêtes passent à travers la Spring’s Dispatcher Servlet : Request Request Response Spring’s Dispatcher Servlet Model object and view name Controller View name View View Resolver Model Response View Fig 14. Architecture Spring MVC . Utilisation des frameworks .2.

3. Utilisation des frameworks . Écrire les pages qui serviront de vues (en l’occurrence des pages jsp) .7. Écrire le fichier de contexte de Spring “<NOM_DU_CONTROLLEUR>servlet.2. Écrire la classe du (es) modèle(s) de type POJO . 2. . Configurer la Spring’s dispatcher servlet dans le fichier “web.Spring MVC Étapes pour créer une application Spring MVC de base : 1. Écrire la classe du contrôleur . 5.xml” . 4.xml“ et y configurer le View Resolver.

maven. dépendances par rapport à d’autres projets. Autres outils .xml” (Project Object Model) : qui contient les informations nécessaires pour automatiser la production d’un projet : • • • • • nom du projet .3. etc. librairies nécessaires à la compilation (téléchargées à partir de Maven Central Repository : http://search. Avantages : • La standardisation de la structure du projet et donc l’organisation du travail des développeurs . • L’utilisation du fichier de configuration “pom.7. numéro de version.org/). .Maven Maven : outil open source pour la gestion et automatisation de la production de projets en Java (build).

Autres outils . Structure d’un projet Maven Fig 15.7. Aperçu d’un fichier “pom.Maven Fig 14.3.xml” .