Anne 2016-2017
1
Programmation par composants
2
Programmation par composants
Elle est motive par la rutilisation des logiciels dj existants et propose de crer
des applications rparties par assemblage de composants logiciels existants.
3
Architectures de programmation
4
Architecture simple tiers
5
Architecture client-serveur
Les applications plus complexes peuvent tirer parti d'une base de
donnes et accder aux informations qu'elle contient en envoyant des
commandes SQL un serveur pour lire et crire les donnes. Dans ce
cas, la base de donnes fonctionne dans un processus indpendant de
celui de l'application, et parfois sur une machine diffrente. Les
composants permettant l'accs aux donnes sont spars du reste de
l'application.
6
Architecture client-serveur
La raison de cette approche est de centraliser les donnes afin de
permettre plusieurs utilisateurs d'y accder simultanment. Les
donnes peuvent ainsi tre partages entre plusieurs utilisateurs de
l'application. Cette architecture est appele client-serveur, qui dans
notre approche peut tre reprsente en deux tiers.
7
Architecture client-serveur
8
Architecture trois-tiers
Pour viter cette confusion, la solution consiste sparer
physiquement les rgles mtier en les plaant sur un serveur o
elles n'auront tre remise jour qu'une seule fois, et non autant
de fois qu'il y a d'applications qui y accde. Cette solution ajoute
un troisime tiers l'architecture client-serveur.
9
Architecture trois-tiers
Selon ce modle, toute la logique mtier est extraite de l'application
cliente. Celle-ci n'est plus responsable que de la prsentation de
l'interface l'utilisateur et de la communication avec le tiers mdian.
Elle n'est plus responsable de l'application des rgles. Son rle est
rduit la couche prsentation.
10
Architectures distribues
11
Architectures distribues
12
Architecture 3 tiers sur le web
13
Architecture multi-tiers (n tiers)
Gnralement, une application d'entreprise est compose de trois couches
fondamentales :
La premire a pour rle d'afficher les donnes pour l'utilisateur et de collecter les
informations qu'il saisit. Cette interface est souvent appele couche de prsentation
car sa fonction consiste prsenter les donnes l'utilisateur et lui permettre de
fournir des informations au systme. La couche prsentation est la partie de
l'application responsable de la cration et du contrle de l'interface prsente
l'utilisateur et de la validation de ses actions.
Sous cette couche de prsentation, on trouve la logique mtier qui permet l'application
de fonctionner et de traiter les donnes. Dans une application de paye, par exemple,
la logique mtier multiplie les heures travailles par le salaire horaire pour dterminer
combien chaque employ doit toucher. La logique mtier est mise en uvre partir
des rgles mtier. Cette partie de l'application constitue l'essentiel du tiers mdian.
Toutes les applications d'entreprise ont besoin d'crire et de lire des donnes. Cette
fonctionnalit est assure par la couche d'accs de donnes, galement appele
couche de persistance, qui assure la lecture, l'criture partir des diffrentes sources.
14
Architecture multi-tiers (n tiers)
15
Architecture multi-tiers (n tiers)
Inconvnients
En gnral, les divers services s'appuient sur des technologies trs varies : ncessite de
grer l'htrognit et l'interoprabilit
Utilisation de framework / outils supplmentaires
Les services tant plus dcoups et distribus, pose plus de problmes lis la distribution
16
Introduction J2EE
1998 : La plateforme J2EE (Java 2 Entreprise Edition) est ne de
besoins grandissant des entreprises pour dvelopper des
applications complexes distribues et ouvertes sur l Internet, le
mobile, etc.
Dfinie par Sun MicroSystems, base sur Java
Site officiel (anciennement java.sun.com )
http://www.oracle.com/technetwork/java/index.html
J2EE est le terme utilis dans les versions avant 2005 (JDK 1.4 ou
antrieur)
J2SE (Java 2 Standard Edition) fournit le langage et la plateforme java sur
lesquels est bti J2EE
J2ME (Java 2 Micro Edition) pour les terminaux mobiles
17
Introduction J2EE
18
Java EE Evolution
19
Que veut dire J2EE ?
20
Que veut dire J2EE ?
21
Que veut dire J2EE ?
22
Quest ce que le Java EE (ou J2EE)
23
Quest ce que le Java EE (ou J2EE)
Pour de nombreux dveloppeurs, J2EE est souvent synonyme de Entreprise
JavaBeans. En fait, J2EE est beaucoup plus que cela. En simplifiant, nous
pouvons dire que J2EE est une collection de composants, de conteneurs et
de services permettant de crer et de dployer des applications distribues
au sein d'une architecture standardise.
J2EE est logiquement destin aux gros systmes d'entreprise. Les logiciels
employs ce niveau ne fonctionne pas sur un simple PC mais require
une puissance beaucoup plus importante. Pour cette raison, les
applications doivent tre constitues de plusieurs composants pouvant tre
dploys sur des plate-formes multiples afin de disposer de la puissance de
calcul ncessaire.
J2EE fournit un ensemble de composants standardiss facilitant le
dploiement des applications, des interfaces dfinissant la faon dont les
modules logiciels peuvent tre interconnects, et les services standards,
avec leur protocole associ, grce auxquels ces modules peuvent
communiquer.
24
Pourquoi choisir Java EE ?
25
Pourquoi choisir Java EE ?
Enfin, la plateforme Java EE est base sur des spcifications, ce qui signifie que
les projets sont portables sur nimporte quel serveur dapplications conforme
(Tomcat, JBoss, WebSphere...) ces spcifications. Cette implmentation est
gratuite et permet de bnficier de la totalit de lAPI sans investissement. La
plateforme Java EE est la plus riche des platesformes Java et offre un
environnement standard de dveloppement et dexcution dapplications
dentreprise multi-tiers.
Le fait que Java EE soit standardis a contribu son adoption par de trs
nombreux diteurs de logiciels/outils informatique. Ces diteurs associs Sun
Microsystems font partie du JCP (Java Community Process). Le Java
Community Process regroupe les entreprises suivantes : Sun, IBM, Oracle,
Borland, Nokia, Sony, la fondation Apache, ObjectWeb... Lobjectif du JCP est
de dfinir les spcifications des technologies bases sur Java. Chaque demande
de modification est appele une JSR (Java Specification Request).
26
Java EE 7 - JSRs
JAX-RS
JSP 2.2 JSF 2.2 2.0
EL 3.0 Concurrency Utilities Updated
(JSR 236)
Portable
Major
Extensions Release
Common Interceptors
CDI 1.1
Annotations 1.1 1.1
Java API for JSON
(JSR 353)
Managed Beans 1.0 EJB 3.2
27
Java EE - Architecture
http Servlets
JSPs
html
Applets rmi DB
rmi
EJBs
rmi
public
EIS
static void
main() { EJB Container
29
Architecture en Java EE
Larchitecture JEE est une architecture dapplication distribue base de
composants. Ces composants sont mis en uvre par lintermdiaire des
conteneurs
Navigateur Serveur
Serveur Web dapplication
Conteneur
Applet Conteneur Conteneur
Internet Web EJB
Serveur de
Composant Client bases de
Composant Web Composant
Applet/ Mtier
donnes
Servlet/JSP
Html/wml Bean
31
Concepts et spcificits de J2EE
Ct client
33
Clients JEE
34
Clients JEE
35
Concepts et spcificits de J2EE
Ct serveur
36
Serveurs d'applications
37
Serveur dapplication
Les serveurs d'applications peuvent fournir :
Un conteneur web uniquement (exemple : Tomcat) ou
Un conteneur d'EJB uniquement (exemple : JBoss, Jonas, ...) ou
Les deux conteneurs (exemple : Websphere, Weblogic, ...).
38
Les serveurs d'application
Le serveur d'application va fournir les services
systmes gnriques :
La scurit
La reprise sur panne
Les services transactionnel entre composants
La gestion des utilisateurs Les serveurs Web Java EE
L'accs aux sources de donnes
Les serveurs Web Java EE permettent d'excuter
Des serveurs d'application Java EE les servlets, JSP, etc.
Ils sont souvent inclus dans les serveurs
d'application. Exemple de serveur Web Java EE :
Des serveurs commerciaux (payants) : Apache Tomcat
BEA WebLogic
IBM WebSphere
Sun Java System App. Server
Oracle Application Server 10g
SAP Netweaver, ...
Des serveurs Open Source (gratuits) :
JBoss
Object Web (OW2) JOnAS
Apache Geronimo 2.0, GlassFish, etc. 39
Les APIs de Java EE
40
Composants
Un composant est un module logiciel autonome, configurable et installable sur plusieurs
plates-formes.
Un composant:
exporte des attributs, proprits et mthodes,
peut tre configurable
Les composants sont les briques de bases configurables dune application par composition.
42
Les composants J2EE
JPA
La persistance des objets en Java a longtemps donn lieu des manipulations fastidieuses.
Aujourd'hui, la Java Persistence API apporte une solution performante et simple utiliser.
S'appuyant sur JDBC (Java DataBase Connectivity), JPA propose une abstraction suffisante pour
que le dveloppeur n'ait, dans la majorit des cas, pas se proccuper du fonctionnement de
JDBC.
Servlets
Les Servlets forment l'un des composants JEE les plus utiliss. Elles permettent de grer des
requtes HTTP et de fournir au client une rponse HTTP et forment ainsi la base de la
programmation Web JEE.
Les Servlets sexcutent toujours dans un moteur de Servlet ou conteneur de Servlet permettant
dtablir le lien entre la Servlet et le serveur Web. Dans ce tutoriel, nous utiliserons Apache Tomcat.
Pages JSP
Les JSP (Java Server Pages) sont des pages HTML qui permettent l'affichage de contenu web
dynamique par l'intgration de fragments de code Java et de directives JSP.
43
Les composants J2EE
JSF
Java Server Faces est un framework Java bas sur la notion de composants o l'tat d'un
composant est enregistr lors du rendu de la page, pour tre ensuite restaur au retour de la
requte. Il utilise JSP par dfaut, mais peut tre utilis avec d'autres technologies, comme
par exemple Facelets ou XUL.
EJB 3.0
Les EJB (Enterprise Java Beans) forment l'une des spcifications majeures de JEE et
utilisent le principe des annotations Java. Ils se dclinent en :
entits (Entity Bean)
sessions (Session Bean)
messages (Message Bean)
44
C'est quoi un Conteneur ?
Un conteneur est un composant logiciel systme qui contrle dautres
composants, dits mtier Tomcat est un exemple de conteneur
Les servlets nont pas de mthode main(), ils sont contrls par le conteneur
Tomcat
Les requtes ne sont pas adresses aux servlets mais au conteneur dans
lequel ils sont dploys
Les conteneurs assurent la gestion du cycle de vie des composants qui
s'excutent en eux. Les conteneurs fournissent des services qui peuvent tre
utiliss par les applications lors de leur excution.
La notion de conteneur se retrouve dans de nombreuses technologies :
Servlet, Applet, MIDlet, Xlet, (*-let ), EJB,
Il existe plusieurs conteneurs dfinit par JEE:
Conteneur web : pour excuter les Servlets et les JSP Conteneur d'EJB :
pour excuter les EJB
Conteneur client : pour excuter des applications stand-alone sur les postes
qui utilisent des composants JEE 45
C'est quoi un Conteneur ?
46
Les conteneurs J2EE
J2EE et la plate-forme Java disposent de conteneurs pour les composants
Web et les composants mtiers. Ces conteneurs possdent des interfaces
leur permettant de communiquer avec les composants qu'ils hbergent.
Les principaux conteneurs J2EE sont notamment ceux ddies aux EJB, aux
JSP, aux servlets et aux clients J2EE.
47
Les conteneurs JEE
48
Conteneurs JEE
49
JEE 4 types de Conteneur
Couche client
Conteneur
d'applet
Couche Web Couche mtier
Applet
Conteneur Web Conteneur d'EJB
Java Java
Conteneur
JDBC
JDBC
JAXP
JAXP
JAVA
JAVA
JMS
JMS
JCX
JCX
JTA
JTA
Mail Mail
du client de
l'application JAF JAF
Client de
Java SE Java SE
l'applicatio
n
Couche SI
JDBC
JAXP
JAVA
JMS
Base de
donnes
Java SE
50
Exemple Rpartition en couches : Cas du 3 Tiers
Considrons une architecture courante, celle trois niveaux:
1 2 3
La couche [1], (User Interface) : dialogue avec l'utilisateur, via une interface. Elle
a pour rle de fournir des donnes provenant de l'utilisateur la couche [2] ou
bien de prsenter l'utilisateur des donnes fournies par la couche [2].
La couche [2], appele ici [Mtier] est la couche qui applique les rgles dites
mtier, c.a.d. la logique spcifique de l'application, sans se proccuper de savoir
d'o viennent les donnes qu'on lui donne, ni o vont les rsultats qu'elle produit.
La couche [3], appele ici [dao] (Data Access Object) est la couche qui fournit
la couche [2] des donnes pr-enregistres et qui enregistre certains des
rsultats fournis par la couche [2].
51
Exemple : Couche accs aux donnes
Il existe diffrentes possibilits pour implmenter la couche accs aux donnes.
Le dveloppeur peut diviser en tiers dots de fonctionnalits spcifiques
Couche daccs
Couche Couche
Couche Mtier aux donnes Base de
Interface (DAO) JDBC donnes
utilisateur 1 2 3
La couche [JDBC] est la couche standard utilise en Java pour accder des
bases de donnes. Elle isole la couche [dao] du SGBD qui gre la base de
donnes. On peut thoriquement changer de SGBD sans changer le code de
la couche [dao].
52
Suite Exemple : Couche accs aux donnes
Pour isoler la couche [dao] des aspects propritaires des SGBD. Une solution est celle du Framework
Hibernate ou (JPA, TopLink dans JEE)
La couche [Hibernate] vient se placer entre la couche [dao] crite par le dveloppeur et la couche [Jdbc]
Hibernate est un ORM (Object Relational Mapping), un outil qui fait le pont entre le modle relationnel des
bases de donnes et celui des objets manipuls par Java
Le dveloppeur ne voit plus la couche [Jdbc] ni les tables de la BD. Il ne voit que l'image objet de BD,
fournie par la couche [Hibernate]. Le pont entre les tables de la BD et les objets manipuls par la couche
[dao] est fait principalement de deux faons :
par des fichiers de configuration de type XML
par des annotations Java dans le code, technique disponible depuis le JDK 1.5
53
Composants web
Un composant web est une entit logicielle qui fournit une rponse une requte.
Les composants web gnrent habituellement l'interface utilisateur d'une application web.
La plate-forme JEE dfinit deux types de composants web :
les servlets ;
les JavaServer Pages (JSP).
JSF (Java Server Face)
Conteneur Web
Servlets
Code java excut sur le serveur
Equivalent du CGI
Gnration de contenu Web dynamique
JSP: Java Server Pages
Mlange de HTML/XML et de code java
Librairies d extension ( taglibs )
Prcompilation en servlet
54
Principes de fonctionnement MVC
I. Le modle MVC2
1.Dcoupage:
Il dcoupe l'application en 3 couches distincts:
La caractristique de l'approche MVC2 est la sparation de code Controller partir de
contenu.
o Couche "Modle" (le M de MVC) : traitement
=> le traitement, le stockage et la mise jour des donnes de l'application.
o Couche "Vue" (le V de MVC) : prsentation
=> l'interaction avec l'utilisateur et la prsentation des donnes (mise en forme, affichage).
o Couche "Contrle" (le C de MVC) : donnes
=> le contrle des actions de l'utilisateur et des donnes (stockage).
55
Principes de fonctionnement MVC
1. Le client envoie une requte l'application qui est prise en charge par la Servet d'entre qui analyse la
requte et roriente celle-ci vers un contrleur
2. Le contrleur demande au modle appropri d'effectuer les traitements.
3. Le contrleur notifie la vue que la requte est traite.
4. Le modle informe la vue de son changement dtat.
5. La vue demande son tat au modle, que ce soit suite une information du modle ou du contrleur.
6. La vue prsente les donnes lutilisateur
56
Implmentation
Architecture 3-tiers 57
Framework
58
Rsum
Lorsquune socit dveloppe une application Java et doit ajouter des fonctionnalits
professionnelles comme la gestion des transactions, la scurit, la concurrence ou la
messagerie, Java EE est attractif. Il est standard, les composants sont dploys dans
diffrents conteneurs qui offrent de nombreux services et fonctionnent avec plusieurs
protocoles. Java EE 7 suit les traces de sa version prcdente en ajoutant la simplicit
dutilisation de la couche web. Cette version est plus lgre, plus simple dutilisation
(plus besoin dinterfaces sur les EJB ou dannotations sur la couche web), plus riche
(elle ajoute de nouvelles spcifications et fonctionnalits) et, enfin, plus portable (elle
inclut un conteneur EJB standardise et autorise les noms JNDI).
59
Rsum
Le serveur web dune application J2EE rend disponible les applications sur le World
Wide Web.
Le conteneur web fournit des services de haut niveau aux composants web en matire de
transactions, accs aux donnes, gestion des tats, scurit et distribution.
Lutilisation de bibliothques de balises personnalises amliore la qualit du code
source et facilite la maintenance des applications.
Le patron de conception Modle-Vue-Contrleur est recommand pour la plupart des
applications web interactives car il permet de crer des applications rutilisables, et
dajouter de nouveaux types de clients, processus et vues facilement.
60
Rsum
Le serveur web dune application est une couche de service neutre, habituellement
conu sur le modle MVC, qui simplifie la cration dapplications web interactives.
Le modle de conception le plus simple a un seul contrleur qui reoit les requtes des
navigateurs, les distribue dans lapplication et affiche les rsultats.
Il est possible dutiliser plusieurs contrleurs web pour grer nativement des clients
web utilisant des protocoles diffrents.
Un mcanisme de modles (templates) permet damliorer la mise en page des crans
de lapplication.
Le mcanisme de modle permet dutiliser un fichier modle pour assembler des vues
individuelles en une vue compose sur lapplication.
61