Beruflich Dokumente
Kultur Dokumente
Introduction
Partie 1
1
Plan
Présentation de l’architecture Java EE
Les Servlets
Cycle de vie d’une Servlet
Traitement des données de formulaires
Gestion de l’état (Cookies & Sessions)
API JDBC
Les Java Server Pages (JSP)
Jsp et JavaBeans
EL (Expression Langage)/ JSTL (JSP Standard Tag Library)
Les Java Server Faces (JSF)
API JPA : ORM (hibernate)
Réalisation d’une application 3tiers (MVC2 / Spring / Hibernate …)
2
Présentation du cours
Objectifs
Développement d’applications Web robustes en utilisant un
framework
Pré-requis
Maîtrise du Java SE, HTML/CSS et XML
Système d’information et Base de données
Bases de réseau (Architecture Client/serveur)
3
Introduction
J2EE est l’acronyme de Java2 Entreprise Edition
Cette édition est dédiée à la réalisation d’applications
entreprises ayant une architecture n-tiers (approche
multi-niveaux)
Depuis sa version 5, J2EE a été renommé Java EE (Java
Entreprise Edition)
Java EE est une plate-forme fortement orientée serveur
pour le développement et l'exécution d'applications
distribuées.
Java EE est basé sur Java SE (Java Standard Edition) qui
contient les API de base de Java
4
Introduction
La plateforme Java EE
Elle est développée par the Java Community Process (the JCP),
Son objectif :
fournir au développeurs un ensemble d’API puissant
Moins de Complexité en temps
Plus de Performances
Peu de Ressources
Peu d’Argent (minimum de coût)
JSRs: Java Specification Requests
JSR 366: Java Platform, Enterprise Edition 8 (Java EE 8) Specification
Voir détails : https://www.jcp.org/en/jsr/detail?id=366
5
Historique
Premières applications composées d’une seule « pièce »
dites applications monolithiques.
L’Arrivée des bases de données, Internet, Réseaux
d’entreprise Applications clientes plus génériques.
En évoluant, on a assisté au succès du modèle 3-tiers
des applications client/serveur.
Finalement ce modèle est généralisé en un modèle n-tiers,
découpant l’application en n-parties.
6
Architecture 2-tiers
Navigateur
Présentation
Serveur Web
Traitement
données
Système
de
fichiers
7
Architecture 3-tiers
Navigateur
Présentation
Serveur Web
Traitement
données
Base de
Base de données
données
8
Architecture n-tiers
+ Dimensionnement Navigateur
+ Maintenance
+ Fiabilité Serveur Web
Présentation
+ Disponibilité
+ Extensibilité
Traitement Serveur
+ Gestion du d’applications
développement
données
Base de
- complexité Base de données
données
9
Modèle n-tiers
Est une généralisation du modèle 3-tiers
10
Application multi-tiers
L’interconnexion entre les tiers est sans doute le grand problème
Utilisation des frameworks
Avantages de ce types d’architectures :
Structure propre
Modularité
Facilité d’évolution
Utilisation des frameworks
Gain de temps,…
Inconvénients :
Difficulté de maitriser cette architecture complexe : Avoir une très
bonne connaissance des outils disponibles sur le marché et une très
bonne aptitude à utiliser l’abstraction et les concepts objet.
11
Application en couches
Basé sur une architecture multi-tiers, elle illustre
l’architecture logicielle de l’application
12
Couche Application
C’est le médiateur entre la couche présentation et la couche
métier,
contrôle l’enchainement des tâches,
Gérer l’état des sessions des clients connectés (connecté, en
attente, déconnecté, …)
Si l’état est de type conversationnel cette couche représente le
contrôleur dans le modèle MVC
En java EE, le composant de base utilisé est la Servlet
Traiter la requête,
Faire les appels nécessaires pour récupérer ou enregistrer les
données
Rediriger l’application cliente vers la partie adéquate de la couche
présentation
13
Couche Application
Pour traiter des formulaires : on utilise les servlets
plutôt que les JSP
Les servlets/JSP sont des composants de bas niveaux
Ne permettent pas une interconnexion simple avec les
autres couches
Utilisation des frameworks fournissant les fonctionnalités
d’interconnexion :
Struts basé sur le modèle MVC
JSF : désormais intégré dans la plateforme Java EE
14
Couche Métier (couche business)
La couche principale de toute application, elle s’occupe:
Accès aux différents données qu’à leurs traitements
15
Couche Métier (couche business)
Les composants métiers répartie en deux types :
Les entités beans (entity bean) peuvent être exécutées par un
conteneur léger et permettent de réaliser la persistance des données
à partir des JavaBeans et de Java Persistence API (JPA)
Les Entreprise JavaBeans offrent des possibilités plus riches comme
la gestion des transactions, les accès directes par clients riches ou
encore la gestion automatique des sessions utilisateur, mais sont
exécutés sur un conteneur lourd.
16
Architecture évoluée en Java EE
17
Partie stockage de données
La partie stockage de données, nommée tiers Entreprise
Information System (EIS) est directement liée au tiers
Métier
Correspond dans la majorité des cas
Aux systèmes de gestion de base de données (Derby, MySQL,
PostgreSQL, Oracle, …)
ou
à un Entreprise Resource Planning (ERP), un gros système
transactionnel ou n'importe quel système de stockage évolué.
18
Versions Java EE
19
Versions Java EE
Mai 1998: Java Professional Edition (JPE) naissance du projet
chez Sun Microsystems (racheté par oracle le 20 avril 2009)
Déc 1999: J2EE 1.2 (premières APIs: JDBC, JNDI, Servlets,
JSP, EJB, JMS, JTA, JavaMail)
Sep 2001: J2EE 1.3 (ajout de JAXP, JAAS)
Nov 2003: J2EE 1.4 (améliorations notoires, Web Services,
JMX, …)
Mai 2006: Java EE 1.5 (renommée Java EE5) (améliorations très
importantes, ajout de JAXB, JPA, JSF, JSTL
Déc 2009: Java EE 6 (ajout de JAX-RS , JAXR, JSP 2.2, EL
2.2, …) => comme le reste de la galaxie Java, ajout notoire
d’annotations pour simplifier la configuration
Juillet 2011 : la sortie de Java EE 7
Mars 2014 : version Java EE 8, fonctionne avec JDK SE 8
20
Versions Java EE
21
Versions Java EE: Historique (1/4)
La première version standard J2EE 1.2 : contenait 10
spécifications ou Java Specification Requests (JSR).
Les Enterprises JavaBeans (EJB) permettaient de gérer la
couche métier d'accès aux données
alors que les Servlets et JavaServer Pages (JSP) permettaient de
développer les applications serveur.
22
Versions Java EE: Historique (2/4)
La version J2EE 1.4 : proposait 20 spécifications.
Cette version apportait le support des services Web et des EJB
version 2.1. Mais cette version conséquente était difficile à
utiliser, tester et déployer.
Les développements par couches, de type Modèle Vue
Contrôleur (MVC), ne facilitent pas la compréhension de
l'ensemble, et les technologies Servlet et JSP ne sont pas
adaptées pour un développement rapide.
En réponse à cela, quelques frameworks ou outils spécialisés
voyaient le jour, comme Struts et Spring pour la partie
développement serveur, et Hibernate ou TopLink pour la
persistance.
23
Versions Java EE: Historique (3/4)
La version Java EE 5 : proposait 23 spécifications
Cette version a proposé un outil de développement côté
serveur adapté au design pattern MVC, nommé
JavaServer Faces (JSF).
Cette version était une étape majeure pour la plate-
forme Java EE qui s'orientait vers la simplicité,
en proposant les EJB 3 associés à JPA (Java Persistence API) pour
la persistance des données,
JAX-WS (Java API for XML based Web Services) 2.0 pour les
services Web en lieu et place de JAX-RPC (Java API for XML
based RPC)
24
Versions Java EE: Historique (4/4)
la version Java EE 6 : propose 28 spécifications
Cette version se concentre essentiellement sur la facilité
d'utilisation de la plate-forme pour le développement, les
tests et le déploiement.
propose une simplification des EJB avec la version 3.1,
l'utilisation des annotations pour faciliter le développement
et la sortie de JAX-RS (Java API for RESTful Web Services) 1.1
pour le développement de services Web.
25
L’API Java EE
L'API Java EE peut être subdivisé en trois grandes
catégories :
les composants : Servlet, JSP, EJB
des services d’infrastructure : JDBC, JTA/JTS, JNDI,
JCA, JMX
des services de communication : RMI-IIOP, JMS, Java
Mail, JAAS
26
L’API JEE
Les composants (2 catégories)
Les composants web : Servlets et JSP (Java Server
Pages)
Il s'agit de la partie chargée de l'interface avec l'utilisateur:
logique de présentation
Les composants métier : EJB (Enterprise Java Beans)
Il s'agit de composants chargés de l'interfaçage avec
les bases de données, et des traitements des données
propres à un secteur d'activité : logique métier ou
logique applicative (on parle de la partie Modèle dans MVC)
27
L’API JEE
Les services d'infrastructures
JDBC (Java DataBase Connectivity) est une API d'accès aux bases
de données relationnelles
JNDI (Java Naming and Directory Interface) est une API d'accès
aux services de nommage et aux annuaires d'entreprises tels que
DNS, NIS, LDAP
JTA/JTS (Java Transaction API/Java Transaction Services) est une
API définissant des interfaces standard avec un gestionnaire de
transactions
JCA (JEE Connector Architecture) est une API de connexion au
système d'information de l'entreprise, notamment aux ERP
JMX (Java Management Extension) fournit des extensions
permettant de développer des applications web de supervision
d'applications
28
L’API JEE
Les services de communication
JAAS (Java Authentication and Authorization Service)
est une API de gestion de l'authentification et des
droits d'accès
JavaMail est une API permettant l'envoi de courrier
électronique
JMS (Java Message Service) fournit des fonctionnalités
de communication asynchrone (appelées MOM pour
Middleware Object Message) entre applications
RMI-IIOP est une API permettant la communication
synchrone entre objets
29
Composants J2EE Messagerie Guide de
programmation
Transaction
JavaBeans Mail
Web
Outils BluePrint
Connecteurs
JMS JavaMail
Container J2EE
31
Composants Java EE 8
32
Composants Java EE 8
33
L’API JEE (JPA)
Java Persistence API (JPA) est un standard Java utilisé pour la
persistance des données.
Ce mécanisme de persistance utilise le principe de mapping
objet/relationnel et relationnel/objet afin de permettre de stocker
les objets dans la base de données et inversement de pouvoir lire
les données relationnelles et les transformer en objets.
L'API Java Persistence 2.0 propose les services suivants :
La gestion de la persistance.
Un langage de requêtage évolué : Java Persistence Query Language
(JPQL).
Un mécanisme de mapping objet/relationnel ORM à partir de
métadonnées (fichiers XML ou annotations).
Une API à typage fort pour le requêtage.
34
Conteneurs Java EE
Pour exécuter les composants, Java EE défini des
conteneurs pour chacun de ces composants
Les conteneurs sont des environnement d’exécution Java
permettant d’héberger les composants et de contrôler
leur exécution
Les applications clientes utilisent les services du
conteneur pour un accès indirect aux composants
Les conteneurs implémentent les mécanismes essentiels
aux applications: transactions, persistance, gestion de la
mémoire, sécurité, etc.
35
Conteneurs Java EE
Un conteneur est un composant logiciel système qui
contrôle d’autres composants, dits métier
Tomcat est un exemple de conteneur
Les Servlets n’ont pas de méthode main(), ils sont
contrôlés par le conteneur Tomcat.
Les requêtes ne sont pas adressées aux servlets mais au
conteneur dans lequel ils sont déployés
36
Conteneurs Java EE
Il existe plusieurs types de conteneur Java EE:
Conteneur Web : pour exécuter les servlets et les pages JSP
Conteneur EJB : pour exécuter les composants EJB
Conteneur client : pour exécuter des applications standalone
sur les postes qui utilisent des composants Java EE
Les serveurs d'applications peuvent fournir :
un conteneur web, (conteneur léger) exemple : Tomcat
un conteneur d'EJB (conteneur lourd), exemple : Jboss ou
Jonas
Ou les deux (conteneur hybride), exemple : Websphere ou
Weblogic
37