La plate-forme Java EE
(J2EE)
POLYTECHNIQUE INTERNATIONALEProgrammation par composants
• Limites de la programmation usuelle
• plus adaptée à la programmation de “petits projets” (programming in the small) • tout est à la charge du programmeur:
• la liaison entre les différentes couches de l’application (présentation, application, données), • construction des objets utilisées sur les couches,
• la structure de l’application est peu visible et particulière à chaque application ( pas de généricité)
• l’évolution de l’application est difficile: ajout de fonctionnalités, modification des conditions d’installation, changement de la BD
• le développement, la génération des exécutables et leur déploiement ne sont pas standardisés
• Programmation par composition
(ou constructive)
• Elle est motivée par la réutilisation des logiciels déjà existants et propose de créer des applications réparties par assemblage de composants logiciels existants.
• C’est le concept du “programming in the large” où l’on définit des composants génériques qui sont ensuite réutilisables dans plusieurs applications.
• Architecture simple tiers (monolithique, un seul poste)
• Architecture 2 tiers ou client-serveur
• Architecture 3 tiers
• Architectures n-tiers (multiplication du nombre de couches
fonctionnelles de plus en plus fines)
• On impose pas que toutes les couches d’une application
fonctionnent sur des machines différentes
• Séparation logique fonctionnelle OU séparation physique des
couches ?
Architecture simple tiers
Les applications bureautiques sont conçues pour fonctionner sur un ordinateur unique. Toutes les services fournis par l'application - interface utilisateur, persistance des données (sauvegarde dans des fichiers propriétaires) et logique de traitement de ces données - résident sur la même machine et sont inclus dans l'application. Cette architecture monolithique est appelée simple tiers car toutes les fonctionnalités sont comprises dans une seule couche logicielle.
Architecture client-serveur
Les applications plus complexes peuvent tirer parti d'une base de données et accéder aux informations qu'elle contient en envoyant des commandes SQL à un serveur pour lire et écrire les données. Dans ce cas, la base de données fonctionne dans un processus indépendant de celui de l'application, et parfois sur une machine différente. Les composants permettant l'accès aux données sont séparés du reste de l'application.
La raison de cette approche est de centraliser les données afin de permettre à plusieurs utilisateurs d'y accéder simultanément. Les données peuvent ainsi être partagées entre plusieurs utilisateurs de l'application. Cette architecture est appelée client-serveur, qui dans notre approche peut être représentée en deux tiers.
Un des inconvénient de l'architecture deux-tiers est que la logique
chargée de la manipulation des données et de l'application des règles
métiers afférentes est incluse dans l'application elle-même. Cela pose
problème lorsque plusieurs applications doivent partager l'accès à
une base de données. Il peut y avoir, par exemple, une règle
exprimant qu'un client affichant un retard de paiement de plus de 45
jours verra son compte suspendu. Il n'est pas compliqué
d'implémenter cette règle dans chaque application accédant aux
données client. Toutefois, si la règle change et qu'un délai d'un mois
est appliqué, il faudra mettre à jour toutes les applications.
Architecture trois-tiers
Pour éviter cette confusion, la solution consiste à séparer physiquement les règles métier en les plaçant sur un serveur où elles n'auront à être remise à jour qu'une seule fois, et non autant de fois qu'il y a d'applications qui y accède. Cette solution ajoute un troisième tiers à l'architecture client-serveur.
Selon ce modèle, toute la logique métier est extraite de l'application cliente. Celle-ci n'est plus responsable que de la présentation de l'interface à l'utilisateur et de la communication avec le tiers médian. Elle n'est plus responsable de l'application des règles. Son rôle est réduit à la couche présentation.
Architectures distribuées
• Les applications à architectures distribuées sont des
applications dont les fonctions sont réparties entre
plusieurs systèmes. On les appelle aussi
architectures
multi-tiers
(ou multi-couches)
• Chaque système contient une partie de l’application, les
parties manquantes sont exécutées sur les autres systèmes
participants à l’application et les informations sont
échangées par le réseau
• Une application est composée de 3 couches
fondamentales:
• Couche de présentation
– interface utilisateur...
– Présenter les données à l’utilisateur
• Couche Applicative / Logique métier :
– validation et traitement des données
– modélisation des processus métiers (règles métier)
• Couche d’accès de données / Persistance
Très développée de nos jours
Avec généralement un fonctionnement au dessus du Web
Couche présentation
Navigateur web sur machine cliente Client léger
Affichage de contenu HTML
Couche applicative / métier
Serveur d'applications
Serveur HTTP exécutant des composants / éléments logiciels qui génèrent dynamiquement du contenu HTML
Via des requêtes à des BDD distantes
Couche persistance
Généralement, une application d'entreprise est composée de trois couches fondamentales :
La première a pour rôle d'afficher les données pour l'utilisateur et de collecter les informations qu'il saisit. Cette interface est souvent appelée couche de présentation car sa fonction consiste à présenter les données à l'utilisateur et à lui permettre de fournir des informations au système. La couche présentation est la partie de l'application responsable de la création et du contrôle de l'interface présentée à l'utilisateur et de la validation de ses actions.
Sous cette couche de présentation, on trouve la logique métier qui permet à l'application de fonctionner et de traiter les données. Dans une application de paye, par exemple, la logique métier multiplie les heures travaillées par le salaire horaire pour déterminer combien chaque employé doit toucher. La logique métier est mise en œuvre à partir des règles métier. Cette partie de l'application constitue l'essentiel du tiers médian.
Toutes les applications d'entreprise ont besoin d'écrire et de lire des données. Cette
Rajoute des étages / couches en plus
La couche applicative n'est pas monolithique
Peut s'appuyer et interagir avec d'autres services Composition horizontale
Service métier utilise d'autres services métiers Composition verticale
Les services métiers peuvent aussi s'appuyer sur des services techniques :
Sécurité, Transaction, … etc
Chaque service correspond à une couche, d'où le terme de N-tiers
Intérêts d'avoir plusieurs services / couches (3 ou plus)
Réutilisation de services existants
Découplage des aspects métiers et technique et des services entre eux : meilleure modularité Facilite évolution : nouvelle version de service
Facilite passage à l'échelle : évolution de certains services On recherche en général un couplage faible entre les services
Permet de faire évoluer les services un par un sans modification du reste de l'application
Inconvénients
En général, les divers services s'appuient sur des technologies très variées : nécessite de gérer l'hétérogénéité et l'interopérabilité
Utilisation de framework / outils supplémentaires
Les services étant plus découpés et distribués, pose plus de problèmes liés à la distribution
Introduction J2EE
• 1998 : La plateforme J2EE (Java 2 Entreprise Edition) est née de besoins grandissant des entreprises pour développer des applications complexes distribuées et ouvertes sur l ’Internet, le mobile, etc.
• Définie par Sun MicroSystems, basée sur Java
• Site officiel (anciennement java.sun.com )
http://www.oracle.com/technetwork/java/index.html
• J2EE est le terme utilisé dans les versions avant 2005 (JDK 1.4 ou antérieur)
J2SE (Java 2 Standard Edition) fournit le langage et la plateforme java sur lesquels est bâti J2EE
• Depuis la sortie de la version 5 (en 2005, JDK 1.5), Le terme J2EE a été remplacé par Java EE
• Actuellement (en 2013) Java EE 7
• Autres éditons :
• Java SE 7 (Standard Edition)
• Java ME 3.0 (Micro Edition)
• Java FX 1.3 plateforme pour la création d’application RIA (Rich Internet Application) basé sur le langage Java FX Script
Que veut dire J2EE ?
J2EE représente essentiellement des applications d'entreprise.
Cela inclut le stockage sécurisé des informations, ainsi que leur
manipulation et leur traitement : factures clients, calculs
d'amortissement, réservation de vols, etc.
Ces applications peuvent avoir des interfaces utilisateurs
multiples, par exemple une interface Web pour les clients,
accessible
sur
Internet
et
une
interface
graphique
fonctionnant sur les ordinateurs de l'entreprise sur le réseau
privé de celle-ci.
Elles doivent gérer les communications entre systèmes distants,
s'occuper automatiquement des différents protocoles de
communication, synchroniser les sources avec éventuellement
des technologies différentes, et s'assurer que le système
respecte en permanences les règles de l'activité de
l'entreprise,
appelés
règles
"métier".
Pour
finir,
ces
applications s'occupe également automatiquement de la base
de données sans que le développeur est à intervenir.
Qu’est ce que le Java EE
(ou J2EE)
• La Plateforme JEE désigne les technologies Java utilisées pour le
développement d'applications «d’entreprise » distribuées
(Répartie, multi-couches, n-tiers)
• JEE est une plate-forme fortement orientée serveur. Elle est
composée de deux parties essentielles :
1. un ensemble de spécifications pour une infrastructure dans laquelle s'exécutent les composants écrits en Java : un tel environnement se nomme serveur d'application.
Pour de nombreux développeurs, J2EE est souvent synonyme de Entreprise JavaBeans. En fait, J2EE est beaucoup plus que cela. En simplifiant, nous pouvons dire que J2EE est une collection de composants, de conteneurs et de services permettant de créer et de déployer des applications distribuées au sein d'une architecture standardisée.
J2EE est logiquement destiné aux gros systèmes d'entreprise. Les logiciels employés à ce niveau ne fonctionne pas sur un simple PC mais requière
une puissance beaucoup plus importante. Pour cette raison, les
applications doivent être constituées de plusieurs composants pouvant être déployés sur des plate-formes multiples afin de disposer de la puissance de calcul nécessaire.
J2EE fournit un ensemble de composants standardisés facilitant le déploiement des applications, des interfaces définissant la façon dont les
Il existe actuellement beaucoup d’autres plates-formes de développement qui sont basées sur d’autres langages (C#,PHP5, .NET...). Les principaux avantages d’utiliser Java EE (et donc Java) sont la portabilité, l’indépendance, la
sécurité et la multitude de librairies proposées.
Le développement d’applications d’entreprise nécessite la mise en œuvre d’une infrastructure importante. Beaucoup de fonctionnalités sont utilisées et développées, le but étant de produire des applications sûres, robustes et faciles à maintenir. Certains services sont d’ailleurs récurrents comme : l’accès aux bases de données, l’envoi de mails, les transactions, la gestion de fichiers, la gestion d’images, le téléchargement, le chargement ou upload, la supervision du système...
C’est pour cela que l’architecture Java EE est intéressante car tous les éléments fondamentaux sont déjà en place. Pas besoin de concevoir une architecture , des librairies et des outils spécialement adaptés. Cela nécessiterait un temps et un
Enfin, la plateforme Java EE est basée sur des spécifications, ce qui signifie que les projets sont portables sur n’importe quel serveur d’applications conforme (Tomcat, JBoss, WebSphere...) à ces spécifications. Cette implémentation est gratuite et permet de bénéficier de la totalité de l’API sans investissement. La plateforme Java EE est la plus riche des platesformes Java et offre un environnement standard de développement et d’exécution d’applications d’entreprise multi-tiers.
Le fait que Java EE soit standardisé a contribué à son adoption par de très nombreux éditeurs de logiciels/outils informatique. Ces éditeurs associés à Sun Microsystems font partie du JCP (Java Community Process). Le Java Community Process regroupe les entreprises suivantes : Sun, IBM, Oracle, Borland, Nokia, Sony, la fondation Apache, ObjectWeb... L’objectif du JCP est de définir les spécifications des technologies basées sur Java. Chaque demande de modification est appelée une JSR (Java Specification Request).
Java EE 7 - JSRs
Connector 1.6
Managed Beans 1.0 EJB 3.2 Servlet 3.1 Portable Extensions JSF 2.2 JAX-RS 2.0 JMS 2.0 JPA 2.1 EL 3.0 JTA 1.2 JSP 2.2 Interceptors 1.1 CDI 1.1 Common Annotations 1.1 Concurrency Utilities (JSR 236) Batch Applications (JSR 352)
Java API for JSON (JSR 353)
Java API for WebSocket (JSR 356)
Updated
Major
Release
Java EE - Architecture
Servlets JSPs EJBs WEB Container EJB Container DB EIS Browser Applets http rmi rmi rmi html public static void main(…) {• JEE permet une grande flexibilité dans le choix de l'architecture de l'application en combinant les différents composants.
• L'architecture d'une application se découpe idéalement en au moins trois tiers :
• La partie cliente : permet le dialogue avec l'utilisateur. Elle peut être composée :
• d'une application stand-alone • d'une application web
• d'applets
• La partie métier : encapsule les traitements (dans des EJB ou des JavaBeans)
• La partie données : stocke les données
• L’architecture JEE est une architecture d’application distribuée à base de composants. Ces composants sont mis en œuvre par l’intermédiaire des
conteneurs Conteneur EJB Composant Métier Serveur de bases de données Conteneur Applet Composant Client Applet/ Conteneur Web Composant Web Servlet/JSP Internet
Tiers Interface Tiers
Services Web Tiers Données Tiers Métier Serveur d’application Serveur Web Navigateur
Architecture en Java EE
Concepts et spécificités de J2EE
Côté client
Un client J2EE peut être une application console (texte
seulement) écrite en Java, ou une application dotée d'une
interface graphique développée en Swing. Ce type de client
est appelé client lourd, en raison de la quantité importante de
code qu'il met en œuvre.
Un client J2EE peut également être conçu pour être utilisé à
partir du Web. Ce type de client fonctionne à l'intérieur d'un
navigateur Web. La plus grande partie du travail est reportée
sur le serveur et le client ne comporte que très peu de code.
Pour cette raison, on parle de client léger. Un client léger peut
être une simple interface HTML, une page contenant des
Concepts et spécificités de J2EE
Clients JEE
• La plateforme JEE prévoit que plusieurs types de clients puissent accéder à une même application et interagir avec les mêmes composants côté serveur:
• JEE peut supporter de nombreux types de clients: Web, WAP, stations de travails, téléphones portables, …
• Client web (léger)
• Client web RIA (Rich Internet Application) : Applets, Java Web Start, AJAX, Google Web Toolkit, Flex, JavaFX (autres version JavaFx pour mobile et pour TV)
• Client lourd : des applications clientes s'exécutent dans leur propre conteneur client. Les applications clientes ont des interfaces utilisateurs qui peuvent directement interagir avec le tier EJB en utilisant RMI-IIOP (Remote Methode Invocation over Internet Inter-Orb Protocol) ou encore application C++ utilisant CORBA.
• Clients sans fil (J2ME pour les dispositifs sans fil). WAP (Wireless Application Protocol) , wml (Wireless Markup Language)
Les composants déployés sur le serveur peuvent être classés
en deux groupes. Les composants Web sont réalisés à
l'aide de servlets ou de JavaServer Pages (JSP). Les
composants métiers, dans le contexte J2EE, sont des
Entreprise JavaBeans (EJB).
Concepts et spécificités de J2EE
Serveurs d'applications
Tout comme les bibliothèques d'interfaces graphiques comme
Swing fournissent les services nécessaires au développement
d'application graphiques, les serveurs d'applications mettent à
disposition les fonctionnalités permettant de réaliser des
applications d'entreprise : communication entre ordinateurs, mis
en place de protocole adaptés, gestion des connexions avec une
base de données, présentation de pages Web, gestion des
transactions, etc.
J2EE propose justement un ensemble de bibliothèques avec des
objets de très haut niveau pour mettre en œuvre facilement ses
serveurs d'applications.
• Les serveurs d'applications peuvent fournir :
• Un conteneur web uniquement (exemple : Tomcat) ou
• Un conteneur d'EJB uniquement (exemple : JBoss, Jonas, ...) ou • Les deux conteneurs (exemple : Websphere, Weblogic, ...).
Serveur d‘application
Une plate-forme d'exécution JEE complète, implémentée dans un serveur d'application, propose les services suivants :
• service de nommage (naming service)
• service de déploiement (deployment service)
• service de gestion des transactions (transaction service) • service de sécurité (security service)
Ces services sont utilisés directement ou indirectement par les conteneurs mais aussi Les services proposés par la plate-forme JEE
Le serveur d'application va fournir les services systèmes génériques :
La sécurité
La reprise sur panne
Les services transactionnel entre composants La gestion des utilisateurs
L'accès aux sources de données
Les serveurs d'application
• Des serveurs commerciaux (payants) : BEA WebLogic
IBM WebSphere
Sun Java System App. Server Oracle Application Server 10g SAP Netweaver, ...
Des serveurs d'application Java EE
Les serveurs Web Java EE permettent d'exécuter les servlets, JSP, etc.
Ils sont souvent inclus dans les serveurs
d'application. Exemple de serveur Web Java EE :
Apache Tomcat
• Une API (Application Programming Interface ) est une interface de programmation. C’est un ensemble de fonctions, procédures ou classes mises à disposition des programmes informatiques par une bibliothèque logicielle, un système d’exploitation ou un service.
• Les composants : permet un découpage de l'application et donc une séparation des rôles lors du développement :
Les composants web : Servlet et JSP(Java Server Pages). Les composants métier : EJB (Enterprise Java Beans).
• Les services :
Les services d'infrastructures : JDBC, JNDI, JTA, JCA, JMX Les services de communication : RMI-IIOP, JavaMail, JAAS
Composants
• Un composant est un module logiciel autonome, configurable et installable sur plusieurs plates-formes.
• Un composant:
• exporte des attributs, propriétés et méthodes, • peut être configurable
• Les composants sont les briques de bases configurables d’une application par composition.
Les composants J2EE
• Un composant est une unité logicielle de niveau applicatif. • JEE supporte les types de composants suivants :
• applets,
• application clientes, • JavaBeans
Construction d’application par assemblage de composants
La création d’une application par assemblage de composants se distingue
de l’ingénierie de développement classique car elle permet de:
• réduire les besoins en compétences techniques
• focaliser l’expertise sur les problèmes du domaine (logique métier)
• Réduire les coûts de développement et de maintenance
JPA
La persistance des objets en Java a longtemps donné lieu à des manipulations fastidieuses. Aujourd'hui, la Java Persistence API apporte une solution performante et simple à utiliser. S'appuyant sur JDBC (Java DataBase Connectivity), JPA propose une abstraction suffisante pour que le développeur n'ait, dans la majorité des cas, pas à se préoccuper du fonctionnement de JDBC.
Servlets
Les Servlets forment l'un des composants JEE les plus utilisés. Elles permettent de gérer des requêtes HTTP et de fournir au client une réponse HTTP et forment ainsi la base de la programmation Web JEE.
Les Servlets s’exécutent toujours dans un moteur de Servlet ou conteneur de Servlet permettant d’établir le lien entre la Servlet et le serveur Web. Dans ce tutoriel, nous utiliserons Apache Tomcat.
Pages JSP
Les JSP (Java Server Pages) sont des pages HTML qui permettent l'affichage de contenu web dynamique par l'intégration de fragments de code Java et de directives JSP.
JSF
Java Server Faces est un framework Java basé sur la notion de composants où l'état d'un composant est enregistré lors du rendu de la page, pour être ensuite restauré au retour de la requête. Il utilise JSP par défaut, mais peut être utilisé avec d'autres technologies, comme par exemple Facelets ou XUL.
EJB 3.0
Les EJB (Enterprise Java Beans) forment l'une des spécifications majeures de JEE et utilisent le principe des annotations Java. Ils se déclinent en :
• entités (Entity Bean)
• sessions (Session Bean) • messages (Message Bean)
• Les conteneurs assurent la gestion du cycle de vie des composants qui s'exécutent en eux. Les conteneurs fournissent des services qui peuvent être utilisés par les applications lors de leur exécution.
• La notion de conteneur se retrouve dans de nombreuses technologies : – Servlet, Applet, MIDlet, Xlet, (*-let ), EJB, …
• Il existe plusieurs conteneurs définit par JEE:
– Conteneur web : pour exécuter les Servlets et les JSP – Conteneur d'EJB :
C'est quoi un Conteneur ?
• Un conteneur est un composant logiciel système qui contrôle d’autres
composants, dits métier – Tomcat est un exemple de conteneur
– Les servlets n’ont pas de méthode main(), ils sont contrôlés par le conteneur Tomcat
– Les requêtes ne sont pas adressées aux servlets mais au conteneur dans lequel ils sont déployés
Les conteneurs sont les éléments fondamentaux de l'architecture
J2EE. Les conteneurs fournis par J2EE sont de même type. Ils
fournissent une interface parfaitement définie ainsi qu'un
ensemble
de
services
permettant
aux
développeurs
d'applications de se concentrer sur la logique métier à mettre
en œuvre pour résoudre le problème qu'ils ont à traiter, sans
qu'ils aient à se préoccuper de toute l'infrastructure interne.
Les conteneurs s'occupent de toutes les tâches fastidieuses liées
au démarrage des services sur le serveur, à l'activation de la
logique
applicative,
la
gestion
des
protocoles
de
communication intrinsèque ainsi qu'à la libération des
ressources utilisées.
J2EE et la plate-forme Java disposent de conteneurs pour les composants Web et les composants métiers. Ces conteneurs possèdent des interfaces leur permettant de communiquer avec les composants qu'ils hébergent. Les principaux conteneurs J2EE sont notamment ceux dédiées aux EJB, aux JSP, aux servlets et aux clients J2EE.
Les conteneurs JEE
• Eléments fondamentaux de l’architecture JEE
• Les conteneurs JEE fournissent une interface parfaitement définie ainsi qu’un ensemble de services permettant aux développeurs de se concentrer sur la logique métier.
• Les conteneurs et serveurs implémentent les services et mécanismes de bas niveau utilisés par les applications:
• La communication entre les clients et les serveurs • Le contrôle de la sécurité
• La gestion des transactions
Conteneurs JEE
• Les conteneurs et serveurs implémentent les mécanismes de bas niveau utilisés par les applications:
• transactions, • persistance,
• gestion de la mémoire, • sécurité
• Les spécifications J2EE s’intéressent aux activités d’une application liées: • au développement,
• au déploiement, • à l’exécution
JEE 4 types de Conteneur Conteneur d'applet Java SE Applet Conteneur du client de l'application Client de l'applicatio n JM S JA V A JA X P JDBC Conteneur Web Java SE JM S JA V A JT A Java Mail JSP Servlet JAF JA X P JDBC JCX Conteneur d'EJB Java SE JM S JA V A JT A Java Mail EJB JAF JA X P JDBC JCX Couche client
Couche Web Couche métier
Exemple Répartition en couches : Cas du 3 Tiers
Considérons une architecture courante, celle à trois niveaux:
La couche [1], (User Interface) : dialogue avec l'utilisateur, via une interface. Elle a pour rôle de fournir des données provenant de l'utilisateur à la couche [2] ou bien de présenter à l'utilisateur des données fournies par la couche [2].
La couche [2], appelée ici [Métier] est la couche qui applique les règles dites métier, c.a.d. la logique spécifique de l'application, sans se préoccuper de savoir d'où viennent les données qu'on lui donne, ni où vont les résultats qu'elle produit. La couche [3], appelée ici [dao] (Data Access Object) est la couche qui fournit à
Couche Interface
utilisateur Couche Métier
Couche d’accès aux
données (DAO) Données
Exemple : Couche accès aux données
utilisateur
Il existe différentes possibilités pour implémenter la couche accès aux données. Le développeur peut diviser en tiers dotés de fonctionnalités spécifiques
La couche [JDBC] est la couche standard utilisée en Java pour accéder à des bases de données. Elle isole la couche [dao] du SGBD qui gère la base de données. On peut théoriquement changer de SGBD sans changer le code de la couche [dao].
Couche
Interface Couche Métier
Couche d’accès aux données (DAO) 1 2 3 Couche JDBC donnéesBase de
Couche Hibernate Objets image de la BD Couche d’accès aux données (DAO) Couche JDBC BD
Pour isoler la couche [dao] des aspects propriétaires des SGBD. Une solution est celle du Framework Hibernate ou (JPA, TopLink dans JEE)
La couche [Hibernate] vient se placer entre la couche [dao] écrite par le développeur et la couche [Jdbc] Hibernate est un ORM (Object Relational Mapping), un outil qui fait le pont entre le modèle relationnel des bases de données et celui des objets manipulés par Java
Le développeur ne voit plus la couche [Jdbc] ni les tables de la BD. Il ne voit que l'image objet de BD, fournie par la couche [Hibernate]. Le pont entre les tables de la BD et les objets manipulés par la couche [dao] est fait principalement de deux façons :
• par des fichiers de configuration de type XML
Composants web
• Un composant web est une entité logicielle qui fournit une réponse à une requête.
• Les composants web génèrent habituellement l'interface utilisateur d'une application web. • La plate-forme JEE définit deux types de composants web :
• les servlets ;
• les JavaServer Pages (JSP). • JSF (Java Server Face)
Conteneur Web
• Servlets
Code java exécuté sur le serveur Equivalent du CGI
Génération de contenu Web dynamique • JSP: Java Server Pages
I. Le modèle MVC2
1.Découpage:
Il découpe l'application en 3 couches distincts:
La caractéristique de l'approche MVC2 est la séparation de code Controller à partir de contenu.
o Couche "Modèle" (le M de MVC) : traitement
=> le traitement, le stockage et la mise à jour des données de l'application.
o Couche "Vue" (le V de MVC) : présentation
=> l'interaction avec l'utilisateur et la présentation des données (mise en forme, affichage).
o Couche "Contrôle" (le C de MVC) : données
2.Cycle de vie d'une requête
1. Le client envoie une requête à l'application qui est prise en charge par la Servet d'entrée qui analyse la
requête et réoriente celle-ci vers un contrôleur
2. Le contrôleur demande au modèle approprié d'effectuer les traitements.
3. Le contrôleur notifie à la vue que la requête est traitée.
Framework
• Il existe des frameworks pour lier ces couches entre-elles. Par
exemple
Spring
• Le grand intérêt de Spring est qu'il permet de lier les couches
par configuration et non dans le code
• Avec Java EE , une autre solution existe : implémenter les
couches [metier] et [dao] avec des Ejb3 (Enterprise Java Bean 3)
Lorsqu’une société développe une application Java et doit ajouter des fonctionnalités professionnelles comme la gestion des transactions, la sécurité, la concurrence ou la messagerie, Java EE est attractif. Il est standard, les composants sont déployés dans différents conteneurs qui offrent de nombreux services et fonctionnent avec plusieurs protocoles. Java EE 7 suit les traces de sa version précédente en ajoutant la simplicité d’utilisation de la couche web. Cette version est plus légère, plus simple d’utilisation (plus besoin d’interfaces sur les EJB ou d’annotations sur la couche web), plus riche (elle ajoute de nouvelles spécifications et fonctionnalités) et, enfin, plus portable (elle
Résumé
Le serveur web d’une application J2EE rend disponible les applications sur le World Wide Web.
Le conteneur web fournit des services de haut niveau aux composants web en matière de transactions, accès aux données, gestion des états, sécurité et distribution.
L’utilisation de bibliothèques de balises personnalisées améliore la qualité du code source et facilite la maintenance des applications.
Le patron de conception Modèle-Vue-Contrôleur est recommandé pour la plupart des applications web interactives car il permet de créer des applications réutilisables, et d’ajouter de nouveaux types de clients, processus et vues facilement.
Le serveur web d’une application est une couche de service neutre, habituellement conçu sur le modèle MVC, qui simplifie la création d’applications web interactives.
Le modèle de conception le plus simple a un seul contrôleur qui reçoit les requêtes des navigateurs, les distribue dans l’application et affiche les résultats.
Il est possible d’utiliser plusieurs contrôleurs web pour gérer nativement des clients web utilisant des protocoles différents.
Un mécanisme de modèles (templates) permet d’améliorer la mise en page des écrans de l’application.
Le mécanisme de modèle permet d’utiliser un fichier modèle pour assembler des vues individuelles en une vue composée sur l’application.