You are on page 1of 63

INTRODUCTION JAVA EE

Cours Master 2 - Java EE


1
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
APPLICATIONS DENTREPRISE
rduction des temps et cots de dveloppement
qualit du code
portables
adaptables
monte en charge
sres
scurise
intgrables
disponibles
Cours Master 2 - Java EE
3
extensibles
maintenables
rpondent aux besoins exprims par les utilisateurs !
ARCHITECTURES
APPLICATIVES
4

applications centralises

applications clients / serveurs

applications distribues
LES BESOINS EXPRIMS
5

Besoins de normalisation

Etablir un ensemble de rgles ayant pour objet de simplier et de


rationaliser la production

Besoins dabstraction

Opration de dsolidariser un objet de son contexte

Besoins de communication

Besoins de composants
Cours Master 2 - Java EE
BESOINS DE NORMALISATION

intgrables

communicantes / distribues

adaptables

maintenables

portables
6
Pour que les applications soient:
Cours Master 2 - Java EE
BESOINS DABSTRACTION

portables

maintenables

extensibles

intgrables / distribues

adaptables
7
Pour que les applications soient :
Cours Master 2 - Java EE
BESOINS DE
COMMUNICATION

intgrables

scurise

distribues
8
Pour que les applications soient :
Cours Master 2 - Java EE
BESOINS DE COMPOSANTS

maintenables

sres

extensibles

adaptables

portables

disponibles / distribues
9
Pour que les applications soient :
Cours Master 2 - Java EE
10
et surtout...
Cours Master 2 - Java EE
Comment rduire les temps et les cots de
dveloppement et dvolutions dune
application ?
Cours Master 2 - Java EE
11
Quelques principes....
Cours Master 2 - Java EE
12
PRINCIPE DOUVERTURE/
FERMETURE
Les composantes dune application doivent tre ouvertes
extension mais fermes modication !
Cours Master 2 - Java EE
13
PRINCIPE DE SUBSTITUTION
DE LISKOV
Si S est un sous-type de T, alors les objets de type T peuvent tre
remplacs avec des objets de type S
Cours Master 2 - Java EE
14
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
UNE SEULE RESPONSABILIT
Chaque objet ne doit avoir quune seule responsabilit !
Cours Master 2 - Java EE
16
Comment respecter ces grands principes ?
Cours Master 2 - Java EE
17
UNE PARTIE DE LA
SOLUTION...

Des paradigmes de programmation

Des patrons de conception

Des frameworks

Des composants
Cours Master 2 - Java EE
18
QUELQUES RAPPELS
19

Inversion de contrle

Injection de dpendances

Programmation par aspects

Design pattern
INVERSION DE CONTRLE
Le code gnrique/rutilisable contrle lexcution du code
spcique
Dont call us, we call you!
Cours Master 2 - Java EE
20
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;
}
}
INJECTION DE DPENDANCES
Une manire automatique et directe de fournir une
dpendance externe dans un composant logiciel
Cours Master 2 - Java EE
22
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);
}
}
INJECTION DE DEPENDANCES
24
public static void main(String[] args) throws Exception {
Injector injector = Guice.createInjector(new AsyncWriterModule());
AsyncWriter writer = injector.getInstance(AsyncWriter.class);
}
PROGRAMMATION PAR
ASPECTS
Augmenter la modularit en amliorant la sparation des
proccupations
25
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;
}
}
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());
}
}
DESIGN PATTERN
28
Une solution gnrale et rutilisable dun problme courant
Dnition:
Nous utilisons des patrons de conception sans forcment le savoir!
DESIGN PATTERN
29
Pros:
Cons:
Abstraction
Capitalisation de la connaissance
Design Patterns Elements of reusable OO Software
Abstraction
Diluer dans du code
30
Mais, revenons notre problmatique...
LES BESOINS EXPRIMS
31

Besoins de normalisation

Etablir un ensemble de rgles ayant pour objet de simplier et de


rationaliser la production

Besoins dabstraction

Opration de dsolidariser un objet de son contexte

Besoins de communication

Besoins de composants
Cours Master 2 - Java EE
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
DFINITION
Java Enterprise Edition est une norme propose par
Sun visant dnir un standard de dveloppement
dapplications dentreprises multi-niveaux bases sur
des composants.
Cours Master 2 - Java EE
33
34
Principes darchitecture...
Cours Master 2 - Java EE
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
ARCHITECTURE JEE

Tiers prsentation : afchage 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
ARCHITECTURE JEE
Cours Master 2 - Java EE
37
ARCHITECTURE JEE
Permet une sparation claire entre :

linterface homme-machine

les traitements mtiers

les donnes
Cours Master 2 - Java EE
38
ARCHITECTURE JEE

distincts

interchangeables

distribus
Cours Master 2 - Java EE
Base sur des composants qui sont :
39
ARCHITECTURE JEE

Data Access Object

Data Transfer Object

Session Facade

Front controller

Modle Vue Controleur


40
De nouveaux patrons de conception:
41
Noublions pas une problmatique en
entreprise...
Cours Master 2 - Java EE
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 freiner
linnovation !
PRODUCTION VS TUDE
43

La production est conservatrice / les tudes sont des acteurs


du changement
PROBLMATIQUES
44

Respecter les contraintes de la production

Continuer innover
ARCHITECTURE JEE
45
EXEMPLE
46

Vous faites du JEE depuis 2003, la production a certi une


version dun serveur dapplication compatible JEE 1.3

En 2008, tant que la production na pas homologu et certi


JEE 5, vous ne pouvez pas lutiliser!
Bloqu dans lamlioration de votre
productivit, dans votre innovation!
47
Pourquoi ne pas inverser la relation entre le
container et lapplication ?
48
Ce nest plus le container qui contient
lapplication mais lapplication qui contient le
container !
49
CONTENEUR LGER
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 les
serveurs dapplication JEE / EJB
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 la
production!
52
Toute la valeur du passage un conteneur
lger est l!
DE LAGILIT...
QUELQUES EXEMPLES
53
Cours Master 2 - Java EE

Spring

Pico

Avalon

HiveMind
54
Pourquoi vous prsentez SPRING ?
55
Parce que je connais lancien responsable Spring France...
56
.... mais pas seulement !
57
Spring apporte linversion de contrle
Spring apporte la programmation par aspect
Spring apporte une couche dabstraction
JEE apporte aussi ses principes !
58
mais...
Cours Master 2 - Java EE
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 production
dapplications
59
60
SPRING

Spring Batch

Spring MVC

Spring webow

Spring security

AOP

Connecteurs JDBC, Hibernate, iBatis, LDPA, ...


Spring apporte beaucoup de choses:
UN STANDARD DU MARCH
61
SPRING
62

Simple

Standard de fait

Tient trs bien la charge

Rpond nos problmatiques!


SPRING UNE RPONSE AUX
BESOINS EXPRIMS
63

Besoins de normalisation

Etablir un ensemble de rgles ayant pour objet de simplier et de


rationaliser la production

Besoins dabstraction

Opration de dsolidariser un objet de son contexte

Besoins de communication

Besoins de composants
Cours Master 2 - Java EE

You might also like