01 introduction a jee
TRANSCRIPT
-
8/12/2019 01 Introduction a JEE
1/63
INTRODUCTION JAVA EE
Cours Master 2 - Java EE1
-
8/12/2019 01 Introduction a JEE
2/63
LA NBULEUSE JAVA
Java Micro Edition (JME)
dveloppement dapplications embarques
Java Standard Edition (JSE)
dveloppement dapplications classiques
Java Enterprise Edition (JEE)
dveloppement dapplications dentreprise
2
-
8/12/2019 01 Introduction a JEE
3/63
APPLICATIONS DENTREPRISErduction des temps et cots de dveloppement
qualit du code
portables
adaptablesmonte en charge
sres
scurise intgrables
disponibles
Cours Master 2 - Java EE3
extensibles
maintenables
rpondent aux besoins exprims par les utilisateurs !
-
8/12/2019 01 Introduction a JEE
4/63
ARCHITECTURES
APPLICATIVES
4
applications centralises
applications clients / serveurs
applications distribues
-
8/12/2019 01 Introduction a JEE
5/63
LES BESOINS EXPRIMS
5
Besoins de normalisation
Etablir un ensemble de rgles ayant pour objet de simplifier et derationaliser la production
Besoins dabstraction
Opration de dsolidariser un objet de son contexte
Besoins de communication
Besoins de composantsCours Master 2 - Java EE
-
8/12/2019 01 Introduction a JEE
6/63
-
8/12/2019 01 Introduction a JEE
7/63
BESOINS DABSTRACTION
portables
maintenables
extensibles
intgrables / distribues
adaptables
7
Pour que les applications soient :
Cours Master 2 - Java EE
-
8/12/2019 01 Introduction a JEE
8/63
BESOINS DE
COMMUNICATION
intgrables scurise
distribues
8
Pour que les applications soient :
Cours Master 2 - Java EE
-
8/12/2019 01 Introduction a JEE
9/63
BESOINS DE COMPOSANTS
maintenables
sres
extensibles
adaptables portables
disponibles / distribues
9
Pour que les applications soient :
Cours Master 2 - Java EE
-
8/12/2019 01 Introduction a JEE
10/6310
et surtout...
Cours Master 2 - Java EE
-
8/12/2019 01 Introduction a JEE
11/63
Comment rduire les temps et les cots dedveloppement et dvolutions dune
application ?
Cours Master 2 - Java EE
11
-
8/12/2019 01 Introduction a JEE
12/63
Quelques principes....
Cours Master 2 - Java EE
12
-
8/12/2019 01 Introduction a JEE
13/63
PRINCIPE DOUVERTURE/
FERMETURE
Les composantes dune application doivent tre ouvertes extension mais fermes modification !
Cours Master 2 - Java EE
13
-
8/12/2019 01 Introduction a JEE
14/63
PRINCIPE DE SUBSTITUTION
DE LISKOV
Si S est un sous-type de T, alors les objets de type T peuvent treremplacs avec des objets de type S
Cours Master 2 - Java EE
14
-
8/12/2019 01 Introduction a JEE
15/63
PRINCIPE DE SUBSTITUTION
DE LISKOV
Prconditions ne peuvent tre plus fortes dans une sous-classe
Postconditions ne peuvent tre plus faibles dans une
sous-classe
Programmation par contrat:
Cours Master 2 - Java EE
15
-
8/12/2019 01 Introduction a JEE
16/63
UNE SEULE RESPONSABILIT
Chaque objet ne doit avoir quune seule responsabilit !
Cours Master 2 - Java EE
16
-
8/12/2019 01 Introduction a JEE
17/63
Comment respecter ces grands principes ?
Cours Master 2 - Java EE
17
-
8/12/2019 01 Introduction a JEE
18/63
UNE PARTIE DE LA
SOLUTION... Des paradigmes de programmation
Des patrons de conception
Des frameworks
Des composants
Cours Master 2 - Java EE
18
-
8/12/2019 01 Introduction a JEE
19/63
QUELQUES RAPPELS
19
Inversion de contrle
Injection de dpendances
Programmation par aspects
Design pattern
-
8/12/2019 01 Introduction a JEE
20/63
INVERSION DE CONTRLE
Le code gnrique/rutilisable contrle lexcution du codespcifique
Dont call us, we call you!
Cours Master 2 - Java EE
20
-
8/12/2019 01 Introduction a JEE
21/63
INVERSION DE CONTROLE
21
public abstract class WorkerTask< I, O > implements Runnable { protected O doPerform(I input); public void run() { I input = receive(); O output = doPerform(input); send(output);}
public class ReadWorkerTask extends WorkerTask< Input, Output > { @Override protected Output doPerform(Input in) {
InputStream is = in.getInputStream(); is.read(b); Output out = new Output(b); return out; }}
-
8/12/2019 01 Introduction a JEE
22/63
INJECTION DE DPENDANCES
Une manire automatique et directe de fournir unedpendance externe dans un composant logiciel
Cours Master 2 - Java EE
22
-
8/12/2019 01 Introduction a JEE
23/63
INJECTION DE DPENDANCES
23
public class AsyncWriter { @Inject public AsyncWriter(BufferingStrategy strategy) {
this.strategy = strategy; }}
public class AsyncWriterModule extends AbstractModule { @Override
protected void configure() { bind(BufferingStrategy.class).to(JPMBufferingStrategy.class); }}
-
8/12/2019 01 Introduction a JEE
24/63
INJECTION DE DEPENDANCES
24
public static void main(String[] args) throws Exception { Injector injector = Guice.createInjector(new AsyncWriterModule()); AsyncWriter writer = injector.getInstance(AsyncWriter.class);}
-
8/12/2019 01 Introduction a JEE
25/63
PROGRAMMATION PAR
ASPECTS
Augmenter la modularit en amliorant la sparation desproccupations
25
-
8/12/2019 01 Introduction a JEE
26/63
PROGRAMMATION PAR
ASPECTS
26
public @interface Log {}
public class LogMethodInterceptor implements MethodInterceptor { public Object invoke(MethodInvocation i) throws Throwable { System.out.println("Start: " + i.getMethod().getName()); Object ret = i.proceed(); System.out.println("End: " + i.getMethod().getName()); return ret; }}
-
8/12/2019 01 Introduction a JEE
27/63
PROGRAMMATION PAR
ASPECTS
27
public class MonModule extends AbstractModule {
@Override protected void configure() { bindInterceptor(Matchers.inPackage(Package.getPackage( "com.ullink.designpattern.test")),
Matchers.annotatedWith(Log.class),new LogMethodInterceptor());
}}
-
8/12/2019 01 Introduction a JEE
28/63
DESIGN PATTERN
28
Une solution gnrale et rutilisable dun problme courant
Dfinition:
Nous utilisons des patrons de conception sans forcment le savoir!
-
8/12/2019 01 Introduction a JEE
29/63
DESIGN PATTERN
29
Pros:
Cons:
Abstraction
Capitalisation de la connaissance Design Patterns Elements of reusable OO Software
Abstraction
Diluer dans du code
-
8/12/2019 01 Introduction a JEE
30/63
30
Mais, revenons notre problmatique...
-
8/12/2019 01 Introduction a JEE
31/63
LES BESOINS EXPRIMS
31
Besoins de normalisation
Etablir un ensemble de rgles ayant pour objet de simplifier et derationaliser la production
Besoins dabstraction
Opration de dsolidariser un objet de son contexte
Besoins de communication
Besoins de composantsCours Master 2 - Java EE
-
8/12/2019 01 Introduction a JEE
32/63
32
Avoir une plateforme pour dvelopper des
applications dentreprise rapidement, de qualites, sres,scurises, portables, performantes, disponibles,maintenables, extensibles et ce... moindre cots !
Cours Master 2 - Java EE
OBJECTIF
-
8/12/2019 01 Introduction a JEE
33/63
DFINITION
Java Enterprise Edition est une norme propose parSun visant dfinir un standard de dveloppementdapplications dentreprises multi-niveaux bases surdes composants.
Cours Master 2 - Java EE
33
-
8/12/2019 01 Introduction a JEE
34/63
34
Principes darchitecture...
Cours Master 2 - Java EE
-
8/12/2019 01 Introduction a JEE
35/63
35
ARCHITECTURE MULTI-
NIVEAUX Un niveau par besoin fonctionnel
Augmentation de la cohsion du code
Dcouplage fort entre les couches
Code plus facilement rutilisable
Cours Master 2 - Java EE
-
8/12/2019 01 Introduction a JEE
36/63
ARCHITECTURE JEE
Tiers prsentation : affichage des donnes
Tiers mtier : gestion du mtier de lapplication
Tiers donne : persistance des donnes
36
Typiquement cest une architecture 3-tiers :
Cours Master 2 - Java EE
-
8/12/2019 01 Introduction a JEE
37/63
ARCHITECTURE JEE
Cours Master 2 - Java EE
37
-
8/12/2019 01 Introduction a JEE
38/63
ARCHITECTURE JEE
Permet une sparation claire entre :
linterface homme-machine
les traitements mtiers
les donnes
Cours Master 2 - Java EE
38
-
8/12/2019 01 Introduction a JEE
39/63
ARCHITECTURE JEE
distincts interchangeables
distribus
Cours Master 2 - Java EE
Base sur des composants qui sont :
39
-
8/12/2019 01 Introduction a JEE
40/63
ARCHITECTURE JEE
Data Access Object
Data Transfer Object
Session Facade
Front controller
Modle Vue Controleur
40
De nouveaux patrons de conception:
-
8/12/2019 01 Introduction a JEE
41/63
41
Noublions pas une problmatique enentreprise...
Cours Master 2 - Java EE
-
8/12/2019 01 Introduction a JEE
42/63
LES CONTRAINTES DE LA
PRODUCTION
42
Cours Master 2 - Java EE
Rduction des cots
Migration dune version de serveurs dapplications
Maintenance de plusieurs serveurs dapplications
Stabilit du Systme dInformation
La production a tendance freinerlinnovation !
-
8/12/2019 01 Introduction a JEE
43/63
PRODUCTION VS TUDE
43
La production est conservatrice / les tudes sont des acteursdu changement
-
8/12/2019 01 Introduction a JEE
44/63
PROBLMATIQUES
44
Respecter les contraintes de la production
Continuer innover
-
8/12/2019 01 Introduction a JEE
45/63
-
8/12/2019 01 Introduction a JEE
46/63
EXEMPLE
46
Vous faites du JEE depuis 2003, la production a cer tifi uneversion dun serveur dapplication compatible JEE 1.3
En 2008, tant que la production na pas homologu et certifiJEE 5, vous ne pouvez pas lutiliser!
Bloqu dans lamlioration de votreproductivit, dans votre innovation!
-
8/12/2019 01 Introduction a JEE
47/63
47
Pourquoi ne pas inverser la relation entre lecontainer et lapplication ?
-
8/12/2019 01 Introduction a JEE
48/63
48
Ce nest plus le container qui contient
lapplication mais lapplication qui contient lecontainer !
-
8/12/2019 01 Introduction a JEE
49/63
49
CONTENEUR LGER
-
8/12/2019 01 Introduction a JEE
50/63
50
CONTENEUR LGER
Gestion du cycle de vie des objets
Description des relations entre les objets
Similaire un serveur dapplication classique
Les objets ne doivent pas implanter une interface particulire
pour tre pris en charge par le framework (diffrence avec lesserveurs dapplication JEE / EJB
-
8/12/2019 01 Introduction a JEE
51/63
EXEMPLE
51
La production a homologu un conteneur de servlet
Une nouvelle version de votre conteneur lger arrive La production na rien homologuer
Utilisation immdiate sans validation par laproduction!
-
8/12/2019 01 Introduction a JEE
52/63
-
8/12/2019 01 Introduction a JEE
53/63
QUELQUES EXEMPLES
53
Cours Master 2 - Java EE
Spring
Pico
Avalon
HiveMind
-
8/12/2019 01 Introduction a JEE
54/63
54
Pourquoi vous prsentez SPRING ?
-
8/12/2019 01 Introduction a JEE
55/63
55
Parce que je connais lancien responsable Spring France...
-
8/12/2019 01 Introduction a JEE
56/63
56
.... mais pas seulement !
-
8/12/2019 01 Introduction a JEE
57/63
57
Spring apporte linversion de contrle
Spring apporte la programmation par aspect
Spring apporte une couche dabstraction
JEE apporte aussi ses principes !
-
8/12/2019 01 Introduction a JEE
58/63
58
mais...
Cours Master 2 - Java EE
-
8/12/2019 01 Introduction a JEE
59/63
Cours Master 2 - Java EE
Spring apporte linversion de contrle
Spring apporte la programmation par aspect
Spring apporte une couche dabstraction
Spring apporte aussi pleins de connecteurs !
Spring amliore la qualit et les cots de productiondapplications
59
-
8/12/2019 01 Introduction a JEE
60/63
60
SPRING
Spring Batch
Spring MVC
Spring webflow
Spring security
AOP
Connecteurs JDBC, Hibernate, iBatis, LDPA, ...
Spring apporte beaucoup de choses:
-
8/12/2019 01 Introduction a JEE
61/63
UN STANDARD DU MARCH
61
-
8/12/2019 01 Introduction a JEE
62/63
SPRING
62
Simple
Standard de fait
Tient trs bien la charge
Rpond nos problmatiques!
SPRING UNE RPONSE AUX
-
8/12/2019 01 Introduction a JEE
63/63
SPRING UNE RPONSE AUX
BESOINS EXPRIMS Besoins de normalisation Etablir un ensemble de rgles ayant pour objet de simplifier et de
rationaliser la production
Besoins dabstraction
Opration de dsolidariser un objet de son contexte
Besoins de communication
Besoins de composantsCours Master 2 - Java EE