INTRODUCTION À JAVA EE

Documents pareils
Cours en ligne Développement Java pour le web

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Tolérance aux Fautes des Grappes d Applications J2EE. Applications Internet dynamiques

Programmation Objet Java Correction

Auto-évaluation Aperçu de l architecture Java EE

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

JOnAS 5. Serveur d application d

Java Aspect Components (JAC)

Auto-évaluation Programmation en Java

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

TP1 : Initiation à Java et Eclipse

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Tutoriel d installation de Hibernate avec Eclipse

TP1 : Initiation à Java et Eclipse

Création d une application JEE

1 JBoss Entreprise Middleware

as Architecture des Systèmes d Information

Plan du cours. Historique du langage Nouveautés de Java 7

Environnements de développement (intégrés)

Cedric Dumoulin (C) The Java EE 7 Tutorial

1. Installation d'un serveur d'application JBoss:

Architecture Orientée Service, JSON et API REST

JOnAS 5 Enterprise OSGi javaee compliant

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Corrigé des exercices sur les références

OpenPaaS Le réseau social d'entreprise

Problématiques des développements Java/J2EE

Initiation à JAVA et à la programmation objet.

RFID: Middleware et intégration avec le système d'information Olivier Liechti

Java pour le Web. Cours Java - F. Michel

Environnements de Développement

Java et les bases de données

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Programmation Orientée Objet

Refonte front-office / back-office - Architecture & Conception -

Les processus métiers : concepts, modèles et systèmes

Windows Server Chapitre 1: Découvrir Windows Server 2008

Famille IBM WebSphere Application Server

2 Chapitre 1 Introduction

Synchro et Threads Java TM

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

SITE WEB E-COMMERCE ET VENTE A DISTANCE

Introduction à la plateforme J2EE

Messagerie asynchrone et Services Web

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Nouvelles Plateformes Technologiques

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

La technologie Java Card TM

Programmer en JAVA. par Tama


INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É JAVA. 32 ans - 6 ans d'expérience

Bases Java - Eclipse / Netbeans

LOG4430 : Architecture logicielle et conception avancée

Java - la plateforme

Développement Logiciel

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Semarchy Convergence for Data Integration La Plate-Forme d Intégration pour le MDM Évolutionnaire

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Par Laurent DESECHALLIERS. Mastère Spécialisé en Management de Projets en Milieu Industriel. CESI de Rouen Promotion 2002/2003.

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

IBM Rational Application Developer pour WebSphere Software V8.5 accélère le développement d'applications de haute qualité.

Patrons de Conception (Design Patterns)

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Dis papa, c est quoi un bus logiciel réparti?

Remote Method Invocation (RMI)

SugarCubes. Jean-Ferdinand Susini Maître de Conférences, CNAM Chaire systèmes enfouis et embarqués. Paris, le 9 janvier, 2009

Certificat Big Data - Master MAthématiques

Alfstore workflow framework Spécification technique

Premiers Pas en Programmation Objet : les Classes et les Objets

Architecture applicative et Cartographie

Traitement de données

Bases de données et environnements distribués Chapitre I : Architecture logicielle technologies de developpement en environnement

Remote Method Invocation Les classes implémentant Serializable

Notes de cours Practical BigData

Assurances & Mutuelles, Industrie, Santé, Énergie, Transport, Médias / Multimédias, Télécoms, Services

Plan. Department of Informatics

Le cadre des Web Services Partie 1 : Introduction

ACTIVITÉ DE PROGRAMMATION

Remote Method Invocation en Java (RMI)

Consultant MOE/Référent technique JAVA/J2EE JSF, RICH FACES

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

JavaServer Pages (JSP)

IRL : Simulation distribuée pour les systèmes embarqués

Java Licence Professionnelle CISII,

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Applications distribuées: le retour du client "riche"

Urbanisation des systèmes d information

Fiche Technique. Cisco Security Agent

Mise en œuvre des serveurs d application

Applications des patrons de conception

Programme Compte bancaire (code)

Logiciel de gestion d emploi du temps

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

Porte dérobée dans les serveurs d'applications JavaEE

Un ordonnanceur stupide

RMI le langage Java XII-1 JMF

Transcription:

INTRODUCTION À JAVA EE Cours JEE - Master 2 1 Université de Marne-la-Vallée

LA NÉBULEUSE JAVA Java Micro Edition (JME) développement d applications embarquées Java Standard Edition (JSE) développement d applications classiques Java Enterprise Edition (JEE) développement d applications d entreprise Cours JEE - Master 2 2 Université de Marne-la-Vallée

APPLICATIONS D ENTREPRISE peu coûteuse en temps et en budget portables disponibles sécurisée maintenables montée en charge sûres extensibles intégrables adaptables de qualité répondent aux besoins exprimés par les utilisateurs! Cours JEE - Master 2 3 Université de Marne-la-Vallée

ARCHITECTURE APPLICATIVE application centralisée application clients / serveurs application distribuée 4

APPLICATION CENTRALISÉE 5

APPLICATION CLIENTS / SERVEURS 6

APPLICATION DISTRIBUÉE 7

LES BESOINS EXPRIMÉS Besoins de normalisation Etablir un ensemble de règles ayant pour objet de simplifier et de rationaliser la production Besoins d abstraction Opération de désolidariser un objet de son contexte Besoins de communication Besoins de composants 8

BESOINS DE NORMALISATION Pour que les applications soient: intégrables communicantes / distribuées adaptables maintenables portables 9

BESOINS D ABSTRACTION Pour que les applications soient : portables maintenables extensibles intégrables / distribuées adaptables 10

BESOINS DE COMMUNICATION Pour que les applications soient : intégrables sécurisée distribuées 11

BESOINS DE COMPOSANTS Pour que les applications soient : maintenables sûres extensibles adaptables portables disponibles / distribuées 12

et surtout... 13

Comment réduire les temps et les coûts de développement et d évolutions d une application? 14

Quelques principes... 15

PRINCIPE D OUVERTURE/ FERMETURE Les composantes d une application doivent être ouvertes à extension mais fermées à modification! 16

PRINCIPE DE SUBSTITUTION DE LISKOV Si S est un sous-type de T, alors les objets de type T peuvent être remplacés avec des objets de type S 17

PRINCIPE DE SUBSTITUTION DE LISKOV Programmation par contrat: Pré-conditions ne peuvent être plus fortes dans une sous-classe Post-conditions ne peuvent être plus faibles dans une sous-classe 18

UNE SEULE RESPONSABILITÉ Chaque objet ne doit avoir qu une seule responsabilité! 19

Comment respecter ces grands principes? 20

UNE PARTIE DE LA SOLUTION... Des paradigmes de programmation Des patrons de conception Des frameworks Des composants 21

QUELQUES RAPPELS Inversion de contrôle Injection de dépendances Programmation par aspects Patron de conception 22

INVERSION DE CONTRÔLE Le code générique/réutilisable contrôle l exécution du code spécifique Don t call us, we call you! 23

INVERSION DE CONTRÔLE 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; } } 24

INJECTION DE DÉPENDANCES Une manière automatique et directe de fournir une dépendance externe dans un composant logiciel 25

INJECTION DE DÉPENDANCES 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); } } 26

INJECTION DE DEPENDANCES public static void main(string[] args) throws Exception { Injector injector = Guice.createInjector(new AsyncWriterModule()); AsyncWriter writer = injector.getinstance(asyncwriter.class); } 27

PROGRAMMATION PAR ASPECTS Augmenter la modularité en améliorant la séparation des préoccupations 28

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

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

DESIGN PATTERN Définition: Une solution générale et réutilisable d un problème courant Nous utilisons des patrons de conception sans forcément le savoir! 31

DESIGN PATTERN Pros: Abstraction Capitalisation de la connaissance Design Patterns Elements of reusable OO Software Cons: Abstraction Diluer dans du code 32

Revenons à notre problématique... 33

LES BESOINS EXPRIMÉS Besoins de normalisation Etablir un ensemble de règles ayant pour objet de simplifier et de rationaliser la production Besoins d abstraction Opération de désolidariser un objet de son contexte Besoins de communication Besoins de composants 34

OBJECTIF Avoir une «plateforme» pour développer des applications d entreprise rapidement, de qualitées, sûres, sécurisées, portables, performantes, disponibles, maintenables, extensibles et ce... à moindre coûts! 35

DÉFINITION Java Enterprise Edition est une norme proposée par Sun visant à définir un standard de développement d applications d entreprises multi-niveaux basées sur des composants. 36

Principes d architecture 37

ARCHITECTURE MULTI- NIVEAUX Un niveau par besoin fonctionnel Augmentation de la cohésion du code Découplage fort entre les couches Code plus facilement réutilisable 38

ARCHITECTURE JEE Typiquement c est une architecture 3-tiers : Tiers présentation : affichage des données Tiers métier : gestion du métier de l application Tiers donnée : persistance des données 39

ARCHITECTURE JEE 40

ARCHITECTURE JEE Permet une séparation claire entre : l interface homme-machine les traitements métiers les données 41

ARCHITECTURE JEE Basée sur des composants qui sont : distincts interchangeables distribués 42

ARCHITECTURE JEE De nouveaux patrons de conception: Data Access Object Data Transfer Object Session Facade Front controller Modèle Vue Controleur 43

N oublions pas une problématique en entreprise... 44

LES CONTRAINTES DE LA PRODUCTION Réduction des coûts Migration d une version de serveurs d applications Maintenance de plusieurs serveurs d applications Stabilité du Système d Information La production a tendance à freiner l innovation! 45

PRODUCTION VS ÉTUDE La production est conservatrice / les études sont des acteurs du changement 46

PROBLÉMATIQUES Respecter les contraintes de la production Continuer à innover 47

ARCHITECTURE JEE 48

EXEMPLE Vous faites du JEE depuis 2003, la production a certifié une version d un serveur d application compatible JEE 1.3 En 2008, tant que la production n a pas homologué et certifié JEE 5, vous ne pouvez pas l utiliser! Bloqué dans l amélioration de votre productivité, dans votre innovation! 49

Pourquoi ne pas inverser la relation entre le container et l application? 50

Ce n est plus le container qui contient l application mais l application qui contient le container! 51

CONTENEUR LÉGER 52

CONTENEUR LÉGER Gestion du cycle de vie des objets Description des relations entre les objets Similaire à un serveur d application classique Les objets ne doivent pas implanter une interface particulière pour être pris en charge par le framework (différence avec les serveurs d application JEE / EJB 53

EXEMPLE La production a homologué un conteneur de servlet Une nouvelle version de votre conteneur léger arrive La production n a rien à homologuer Utilisation immédiate sans validation par la production! 54

DE L AGILITÉ... Toute la valeur du passage à un conteneur léger est là! 55

QUELQUES EXEMPLES Spring Pico Avalon HiveMind 56

Pourquoi vous présentez SPRING? 57

Spring apporte l inversion de contrôle Spring apporte la programmation par aspect Spring apporte une couche d abstraction JEE apporte aussi ses principes! 58

mais... 59

Spring apporte l inversion de contrôle Spring apporte la programmation par aspect Spring apporte une couche d abstraction Spring apporte aussi pleins de connecteurs! Spring améliore la qualité et les coûts de production d applications 60

SPRING Spring apporte beaucoup de choses: Spring Batch Spring MVC Spring webflow Spring security AOP Connecteurs JDBC, Hibernate, ibatis, LDPA,... 61

UN STANDARD DU MARCHÉ 62

SPRING Simple Standard de fait Tient très bien la charge Répond à nos problématiques! 63

SPRING UNE RÉPONSE AUX BESOINS EXPRIMÉS Besoins de normalisation Etablir un ensemble de règles ayant pour objet de simplifier et de rationaliser la production Besoins d abstraction Opération de désolidariser un objet de son contexte Besoins de communication Besoins de composants 64