1-Java EE 7.0 - v8
1-Java EE 7.0 - v8
1-Java EE 7.0 - v8
Plan du cours
Problématique - Pourquoi une nouvelle norme J2EE ?
• Limitations des technologies existantes sur le marché :
C/C++, .net, php, VB
Uniformisation des langages de développement de bout en bout pour couvrir
l’ensemble des exigences (métier, techniques, sécurité …)
• Périmètre plus globale :
Périmètre incluant les parties Client et Serveur
Au delà d’un langage de programmation, c’est toute une architecture
• Besoins évolutifs :
Un client finale de plus en plus exigent
Time To Market (TTM)
Norme évolutive
• Contraintes plus exigeantes:
Haute disponibilité
Résilience des solutions
La présentation de J2EE (1/3)
• J2EE est une plate-forme fortement orientée serveur pour le développement et
l'exécution d'applications distribuées. Elle est composée de deux parties
essentielles :
▪ Une API signifie Application Programming Interface. C’est un ensemble normalisé de classes, de
méthodes, de fonctions qui sert de façade par laquelle on offre des fonctionnalités prête à l’emploi sans
devoir les développer à nouveau et se concentrer ainsi sur les développements métiers à forte valeur
ajoutée.
▪ Exemple : JDBC est une API java d’accès aux données d’une base de données relationnelles.
La présentation de J2EE (3/3)
J2EE permet une grande flexibilité dans le choix de l'architecture de l'application en
combinant les différents composants. Ce choix dépend des besoins auxquels doit répondre
l'application mais aussi des compétences dans les différentes API de J2EE. L'architecture d'une
application se découpe idéalement en au moins trois tiers :
➢ la partie cliente (couche Présentation) : c'est la partie qui permet le dialogue avec
l'utilisateur. Elle peut être composée d'une application standalone, d'une application web
ou d'applets.
➢ la partie métier (couche Métier ou Service) : c'est la partie qui encapsule les
traitements (dans des EJB ou des JavaBeans)
➢ la partie données (couche DAO) : c'est la partie qui stocke les données
Les API de J2EE
Les API de J2EE
Les API de J2EE
Java Server Pages Standard Tag Libray (JSTL) 1.2 1.2 1.2
2. SE définit tout, depuis les types de base et les objets du langage de programmation
Java, et il fournit toutes les fonctionnalités de base. La plate-forme Java EE fournit une API
Java EE se compose des EJB,JSP, Servlets, JSF, JMS, JTA,JCA, JAX-WS …..
Zoom sur l’API « JCA » : JavaTM EE Connector Architecture
▪ Java EE Connector Architecture (JCA) définit une architecture standard pour l’accès aux
systèmes externes hétérogènes Enterprise Information Systems (EIS).
▪ Exemples de systèmes EISs : (ERP), transaction central de traitement (TP), bases de
données et systèmes de messagerie. On appelle ça Legacy Applications.
• JCA fournit des fonctionnalités de gestion :Connexions; transactions; Sécurité ; cycle de vie ;
▪ COMMON CLIENT INTERFACE (CCI) : L'interface client commune (CCI) JCA est un
ensemble d'interfaces fournissant un cadre pour l'interaction de base avec un adaptateur de
ressources. Un adaptateur prenant en charge CCI fournira des classes concrètes qui
implémentent ces interfaces. La conception et l'utilisation de CCI ressemblent beaucoup à
celles de JDBC.
Zoom sur l’API « JCA » : JavaTM EE Connector Architecture
Serveur
d’Application
J2EE
destination = (Destination)
context.lookup("topic1");
Requête SOAP
HTTP/HTTPS
Réponse SOAP
End Point Interface
Requête SOAP
HTTP/HTTPS
Réponse SOAP
Web Service SOAP :WSDL
▪ Le WSDL (Web Services Description Language) est une grammaire XML permettant de
décrire un service web, et standardisé par W3C en 2007.
▪ Le WSDL décrit une interface publique d'accès à un service web, notamment dans le cadre
d'architectures de type SOA (Service Oriented Architecture). C'est une description fondée sur
le XML qui indique « comment communiquer pour utiliser le service ».
▪ Le WSDL sert à décrire :
▪ le protocole de communication (SOAP RPC ou SOAP orienté message)
▪ le format de messages requis pour communiquer avec ce service
▪ les méthodes que le client peut invoquer
▪ la localisation du service.
▪ Granularité variable : fonctions, composants,
▪ Interopérabilité des applications
(intra- ou inter-entreprises)
Web Service SOAP :WSDL
Web Service SOAP :API JAX-WS
▪ JAX-WS (Java API for XML based Web Services) est une API qui propose un modèle de
programmation pour produire (côté serveur) ou consommer (côté client) des services web qui
▪ Elle a pour but de faciliter et simplifier le développement des services web notamment grâce à
▪ Le développement d'un service web en Java avec JAX-WS débute par la création d'une classe
annotée avec @WebService du package javax.jws. La classe ainsi annotée définit le Endpoint
du service web.
▪ Le service Endpoint interface (SEI) est une interface qui décrit les méthodes du service :
▪ Axis 2 (Apache eXtensible Interaction System) est un projet open-source du groupe Apache
diffusé sous la licence Apache 2.0 qui propose une implémentation d'un moteur de service web
▪ Son but est de proposer un ensemble d'outils pour faciliter le développement, le déploiement
▪ Axis propose de simplifier au maximum les tâches pour la création et l'utilisation des services
web. Il permet notamment de générer automatiquement le fichier WSDL à partir d'une classe
▪ TCPMonitor : Cet outil agit comme un proxy qui permet de visualiser les requêtes et réponses
▪ JAX-RS est donc une API de programmation pour implémenter rapidement des applications
▪ JAX-RS 2.x est défini par la JSR 339. Comme pour tous les services et toutes API Java EE, il
▪ La notion de ressource : Dans le Web et selon le protocole HTTP , ce qui est désigné par une
▪ Une ressource offre une interface uniforme qui est définie dans HTTP par l’ensemble des
▪ Un client HTTP positionne dans sa requête une méthode pour indiquer le type d’opération que
pom.xml
web.xml
Web Service : API REST JAX-RS
▪ Implémenter des ressources avec JAX-RS
▪ JAX-RS permet d’implémenter des ressources sous la forme de composants Java EE. Une
classe représentant une ressource est identifiée grâce à l’annotation @Path.
▪ @Path : L’annotation @javax.ws.rs.Path indique le chemin d’URI qui identifie la ressource.
Cette annotation est utilisable sur une classe et sur les méthodes.
▪ Utilisée sur une classe, cette annotation permet d’identifier la classe comme une ressource
racine qui devient dès lors un composant géré par le serveur d’application.
▪ Pour l’exemple ci-après, l’instance de la classe GeoLocation retournée par la méthode est
▪ Si la classe GeoLocation utilise elle-même des annotations JAX-RS alors on dit qu’il s’agit
▪ La classe et/ou les méthodes d’une Ressource JAX-RS peuvent utiliser les
annotations @Consumes et @Produces pour indiquer respectivement le type de contenu attendu dans la
requête et le type de contenu de la réponse.
Web Service : API REST JAX-RS
▪ @Consumes / @Produces :
Plutôt que d’écrire : @Produces("application/json")
Il est recommandé d’utiliser les constantes déclarées dans la classe javax.ws.rs.core.MediaType
@Produces(MediaType.APPLICATION_JSON)
Web Service : API REST JAX-RS
▪ DATA Binding
▪ Lorsqu’une méthode d’une ressource retourne une instance d’un objet Java, JAX-RS va tenter
de créer une réponse au format souhaité en fonction de l’annotation @Produces. Il existe un
ensemble de règles par défaut permettant de passer d’un objet Java à un document XML ou
JSON. On appelle l’ensemble de ces règle le DATA binding.
▪ Si la réponse attendue est au format JSON alors JAX-RS va construire une réponse en se
basant sur les accesseurs (les getters) de la classe.
▪ Si on définit une ressource de la façon suivante :
SOAP utilise l'interface de service pour REST utilise l'URI pour exposer la logique métier.
exposer la logique métier Mais comme REST fonctionne sur la base du type
de requête HTTP, le même URI peut donc
fonctionner pour plusieurs types d'opérations
SOAP définit des normes à suivre strictement. REST ne définit pas trop de standards. REST est
SOAP est exigent assez flexible
SOAP définit sa propre couche de sécurité REST hérite des mesures de sécurité des
protocoles de transport sous-jacents
SOAP ne fonctionne qu'avec le format XML REST accepte différents formats de données tels
que Texte brut, HTML, JSON, XML, etc
L'environnement d'exécution des applications J2EE
▪ J2EE propose des spécifications pour une infrastructure dans laquelle
s'exécutent les composants. Ces spécifications décrivent les rôles de chaque
élément et précisent un ensemble d'interfaces pour permettre à chacun de ces
éléments de communiquer. Exp: les spécifications JEE v7 font ~4000 pages
▪ Pour déployer une application dans un conteneur, il faut lui fournir deux éléments :
➢ l'application avec tous les composants (classes compilées, ressources ...)
regroupées dans une archive ou module. Chaque conteneur possède son
propre format d'archive.
➢ un fichier descripteur de déploiement contenu dans le module qui précise au
conteneur des options pour exécuter l'application.
Les conteneurs (2/2)
▪ Il existe trois types d'archives :
web Regroupe les Servlets, les JSP et les JSF War (Web web.xml
ainsi que les ressources nécessaires à leur ARchive)
exécution (classes, bibliothèques de balises,
images, ...)
EJB Regroupe les EJB et leurs composants jar ejb-jar.xml
(classes)
Application J2EE ear (Entreprise application.xml
Regroupe un ou plusieurs modules ARchive)
Les conteneurs (2/2)
▪ Composition d’une Application J2EE :
Les conteneurs : Synthèse
▪ Les profiles sont conçus pour proposer une solution technique particulière pour des
besoins spécifiques. Cela permet à un fournisseur de n'avoir à proposer que le support
des technologies incluses dans le profile plutôt que d'avoir à implémenter toutes celles
de la plate-forme Java EE.
▪ Elle définit aussi des éléments précis de la plate-forme comme les transactions,
la sécurité, l'assemblage, le déploiement, ...
MEETING
DEVELOPER
ENTERPRISE
PRODUCTIVITY
DEMANDS
Java EE 7
▪ Initialement Java EE 7 devait intégrer la spécification Java Temporary Caching API 1.0 (JSR 107)
et des fonctionnalités relatives au Cloud (par exemple State Management (JSR 350)) mais elles
sont repoussées dans la prochaine version de Java EE.
Java EE 7.0 (5/5)
▪ Java EE 7 poursuit la simplification de l'utilisation de la plate-forme entamée
depuis Java EE 5 notamment :
➢ la nouvelle version 2.0 de l'API JMS
➢ des changements dans la configuration : ressources de type fabrique de
connexions par défaut pour la base de données et le broker JMS,
amélioration dans la déclaration des permissions de sécurité, ...
➢ les technologies déclarées pruned dans Java EE 6 sont optionnelles dans
Java EE 7 : EJB Entity Beans, JAX-RPC 1.1, JAXR 1.0 et la JSR-88
• Les applications par lots (BATCH) fournissent un modèle de programmation pour les applications par
• L'API Java BATCH définie dans JEE 7 (JSR 352) a pour vocation de permettre l'exécution de jobs (ou
traitements batch) dans le contexte d'une application JEE et donc d'un serveur d'application (Glassfish,
JBOSS,…)
• Elle permet entre autres de définir des checkpoints, de supporter les transactions, elle permet aussi de
• Elle s'intègre à JEE et peut profiter, par exemple, des fonctionnalités des serveurs d'application : injection
Interceptors Common
CDI 1.1 Concurrency 1.0
1.2, JTA 1.2 Annotations 1.1
9,000,000
JAVA DEVELOPERS
DEPLOYING TO 18 COMPLIANT APPLICATION SERVERS
http://www.oracle.com/technetwork/java/javaee/overview/compatibility-jsp-136984.html
Java EE 7.0 : les serveurs
Java EE 7.0 Web Profile : les serveurs
RAPPEL
Apache Tomcat : c’est un Conteneur Web. Il permet d’exécuter uniquement les JSP/Servlet et
JSF. Apache Tomcat contient un serveur Web Apache. On l’appel le serveur web intégré.
Apache : C’est un Serveur Web qui répond aux requêtes HTTP/HTTPS et sert des ressources
statiques (html,js,jpg,css….). Pour que Apache sert des ressources dynamiques on lui ajoute la
notion de Plugin ( Plugin php, plugin ajp Apache Java Protocole pour servir des jsp/Servlet ….)
Java en chiffres Developer Ecosystem Survey 2020
API-REST/JSON
web.xml
Ne pas copier dans « Bureau ». Copier les prérequis dans D:\J2EE par exemple