Vous êtes sur la page 1sur 63

INTRODUCTION JAVA EE

Cours Master 2 - Java EE

LA NBULEUSE JAVA
Java

Micro Edition (JME) dapplications embarques

dveloppement Java

Standard Edition (JSE) dapplications classiques

dveloppement Java

Enterprise Edition (JEE) dapplications dentreprise


2

dveloppement

APPLICATIONS DENTREPRISE
rduction des temps et cots de dveloppement portables disponibles scurise maintenables monte en charge
Cours Master 2 - Java EE

sres extensibles intgrables adaptables qualit du code

rpondent aux besoins exprims par les utilisateurs !


3

ARCHITECTURES APPLICATIVES
applications applications

centralises clients / serveurs distribues

applications

LES BESOINS EXPRIMS


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 Besoins

de communication de composants
Cours Master 2 - Java EE

BESOINS DE NORMALISATION
Pour que les applications soient:
intgrables communicantes adaptables maintenables portables
Cours Master 2 - Java EE

/ distribues

BESOINS DABSTRACTION
Pour que les applications soient :
portables maintenables extensibles intgrables adaptables
Cours Master 2 - Java EE

/ distribues

BESOINS DE COMMUNICATION
Pour que les applications soient :
intgrables scurise distribues

Cours Master 2 - Java EE

BESOINS DE COMPOSANTS
Pour que les applications soient :
maintenables sres extensibles adaptables portables disponibles

/ distribues
Cours Master 2 - Java EE

et surtout...

Cours Master 2 - Java EE

10

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


Programmation par contrat:
Prconditions

classe

ne peuvent tre plus fortes dans une sousne peuvent tre plus faibles dans une

Postconditions

sous-classe

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 Des Des Des

paradigmes de programmation patrons de conception frameworks composants

Cours Master 2 - Java EE

18

QUELQUES RAPPELS
Inversion Injection

de contrle de dpendances par aspects

Programmation Design

pattern

19

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
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; } }
21

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
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); } }

23

INJECTION DE DEPENDANCES

public static void main(String[] args) throws Exception { Injector injector = Guice.createInjector(new AsyncWriterModule()); AsyncWriter writer = injector.getInstance(AsyncWriter.class); }

24

PROGRAMMATION PAR ASPECTS


Augmenter la modularit en amliorant la sparation des proccupations

25

PROGRAMMATION PAR ASPECTS


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; } }

26

PROGRAMMATION PAR ASPECTS


public class MonModule extends AbstractModule { @Override protected void configure() { bindInterceptor(Matchers.inPackage(Package.getPackage( "com.ullink.designpattern.test")), Matchers.annotatedWith(Log.class), new LogMethodInterceptor()); } }

27

DESIGN PATTERN
Dnition:
Une solution gnrale et rutilisable dun problme courant

Nous utilisons des patrons de conception sans forcment le savoir!

28

DESIGN PATTERN
Pros:
Abstraction Capitalisation de la connaissance Design Patterns Elements of reusable OO Software

Cons:
Abstraction Diluer dans du code

29

Mais, revenons notre problmatique...

30

LES BESOINS EXPRIMS


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 Besoins

de communication de composants
Cours Master 2 - Java EE

31

OBJECTIF
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

32

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

Principes darchitecture...

Cours Master 2 - Java EE

34

ARCHITECTURE MULTINIVEAUX
Un

niveau par besoin fonctionnel de la cohsion du code

Augmentation Dcouplage Code

fort entre les couches

plus facilement rutilisable

Cours Master 2 - Java EE

35

ARCHITECTURE JEE
Typiquement cest une architecture 3-tiers :
Tiers Tiers Tiers

prsentation : afchage des donnes mtier : gestion du mtier de lapplication donne : persistance des donnes

Cours Master 2 - Java EE

36

ARCHITECTURE JEE

Cours Master 2 - Java EE

37

ARCHITECTURE JEE
Permet une sparation claire entre :
linterface les les

homme-machine

traitements mtiers donnes

Cours Master 2 - Java EE

38

ARCHITECTURE JEE
Base sur des composants qui sont :
distincts interchangeables distribus

Cours Master 2 - Java EE

39

ARCHITECTURE JEE
De nouveaux patrons de conception:
Data Access

Object Object

Data Transfer Session Front

Facade

controller Controleur
40

Modle Vue

Noublions pas une problmatique en entreprise...

Cours Master 2 - Java EE

41

LES CONTRAINTES DE LA PRODUCTION


Rduction

des cots dune version de serveurs dapplications de plusieurs serveurs dapplications

Migration

Maintenance Stabilit

du Systme dInformation

La production a tendance freiner linnovation !


Cours Master 2 - Java EE

42

PRODUCTION VS TUDE

La

production est conservatrice / les tudes sont des acteurs du changement

43

PROBLMATIQUES

Respecter Continuer

les contraintes de la production innover

44

ARCHITECTURE JEE

45

EXEMPLE
Vous

faites du JEE depuis 2003, la production a certi une version dun serveur dapplication compatible JEE 1.3 2008, tant que la production na pas homologu et certi JEE 5, vous ne pouvez pas lutiliser!

En

Bloqu dans lamlioration de votre productivit, dans votre innovation!


46

Pourquoi ne pas inverser la relation entre le container et lapplication ?

47

Ce nest plus le container qui contient lapplication mais lapplication qui contient le container !

48

CONTENEUR LGER

49

CONTENEUR LGER
Gestion

du cycle de vie des objets des relations entre les objets

Description Similaire Les

un serveur dapplication classique

objets ne doivent pas implanter une interface particulire pour tre pris en charge par le framework (diffrence avec les serveurs dapplication JEE / EJB

50

EXEMPLE
La

production a homologu un conteneur de servlet nouvelle version de votre conteneur lger arrive

Une La

production na rien homologuer

Utilisation immdiate sans validation par la production!


51

DE LAGILIT...
Toute la valeur du passage un conteneur lger est l!

52

QUELQUES EXEMPLES
Spring Pico Avalon HiveMind

Cours Master 2 - Java EE

53

Pourquoi vous prsentez SPRING ?

54

Parce que je connais lancien responsable Spring France...

55

.... mais pas seulement !

56

Spring apporte linversion de contrle

Spring apporte la programmation par aspect

Spring apporte une couche dabstraction

JEE apporte aussi ses principes !

57

mais...

Cours Master 2 - Java EE

58

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


Cours Master 2 - Java EE

59

SPRING
Spring apporte beaucoup de choses:
Spring Spring Spring Spring AOP Connecteurs

Batch MVC webow security

JDBC, Hibernate, iBatis, LDPA, ...


60

UN STANDARD DU MARCH

61

SPRING
Simple Standard Tient

de fait

trs bien la charge nos problmatiques!

Rpond

62

SPRING UNE RPONSE AUX BESOINS EXPRIMS


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 Besoins

de communication de composants
Cours Master 2 - Java EE

63