01 introduction a jee

Upload: -

Post on 03-Jun-2018

222 views

Category:

Documents


0 download

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