INTRO(S1)
INTRO(S1)
INTRO(S1)
30 septembre 2024
Introduction
JSE : Compilation et Interpretation
● Java Standard Edition
3
Java SE
● Java Standard Edition est aussi appelée Java SE et anciennement, Java 2 Platform,
Standard Edition, ou encore J2SE.
● Ensemble de spécification de la plate-forme Java d’Oracle, destinée principalement aux
applications pour poste de travail.
● Pour chaque version de Java SE correspond notamment :
− les Java Specification Requests (JSR), i.e. les spécifications de la version considérée ;
− un Java Development Kit (JDK),
− un Java Runtime Environment (JRE)
4
Diagramme Conceptuel Java
5
Java SE
● Le Java Development Kit (JDK) contient de plus un ensemble d’outils avec lesquels le
code Java peut être transformé en bytecode
● Le Java Runtime Environment (JRE) une famille de logiciels qui permet l’exécution des
programmes écrits en Java.
● Les Java Specification Requests (JSR) sont des demandes d'utilisateurs du langage Java
pour ajouter ou modifier des fonctionnalités sur la plate-forme officielle fournie par Sun.
JDK
JRE JVM
Library
Dev. Tools
6
Jakarta EE
● Jakarta EE (anciennement Java 2 Platform, Enterprise Edition, ou J2EE , puis Java
Platform, Enterprise Edition ou Java EE),
● Une spécification pour la plate-forme Java d'Oracle, destinée aux applications d'entreprise
● La plate-forme Jakarta EE étend Java SE en fournissant des API de mapping objet-
relationnel, des architectures distribuées et multitiers, des services web, etc..
● La plate-forme se fonde principalement sur des composants modulaires exécutés sur
un serveur d'applications.
7
Historique
JDK
J2EE JEE Jakarta EE
1996 1999
2003 2009 2017 2020 2022
1.0 1.2 1.4 6 8 9 10
8
Quelques Composants de JEE
● Servlet : Composant représentant le C (Controller) du paradigme MVC
● Portlet : Conteneur Web (extension de l'API Servlet)
● Java Server Pages (JSP) : Framework Web
● Java Standard Tag Library (JSTL) : bibliothèque de balises pour les JSP
● Java Server Faces (JSF) : Java Server Face, Framework Web
● EJB : Composants distribués transactionnels
● JNDI : API de connexion à des annuaires, notamment des annuaires LDAP
● JDBC : API de connexion à des bases de données
● Java Message Service (JMS) : API de communication asynchrone par message
● JavaMail : API de gestion des mails
● JPA : API de gestion de la persistance des données
● JAXB : API de sérialisation par XML
● Java RMI : API de communication distante entre des objets Java
● … etc
9
Classification des composants JEE
10
Architecture Client / Serveur
Rappel
Protocole de communication
Client Serveur
Exemple d’installation
TCP / IP
Client Serveur
11
Architecture Client / Serveur
Navigateur web
http
Chrome Appache
Envoie de mail
smtp
FTP
Client Serveur
• Se situe dans un réseau • Se trouve sur le réseau
• Utilise les services d’un ou • Ordinateur / Programme
plusieurs serveurs • Met des services à disposition du
• Demande l’exécution d’une ou client
plusieurs tâches • Chargé d’accomplir des tâches
• Ordinateur / Programme • Répond aux sollicitations des
• Récupère les « résultats » du clients
serveur • Exécute les tâches demandées
• Offre une interface utilisateur • Renvoie les réponses aux clients
• Peut traiter plusieurs requêtes
simultanément
• Une machine peut à la fois être
client et serveur
13
Caractéristiques du client-serveur
● Service
− Le modèle C/S est une relation entre des processus qui tournent sur des machines séparées. Le serveur est un
fournisseur de services. Le client est un consommateur de services.
● Encapsulation des services
− Un client demande un service. Le serveur décide de la façon de le rendre une mise à niveau du logiciel serveur doit
être sans conséquence pour le client tant que l’interface message est identique.
● Partage de ressources
− Un serveur traite plusieurs clients et contrôle leurs accès aux ressources
● Protocole asymétrique
− Conséquence du partage de ressources, le protocole de communication est asymétrique le client déclenche le
dialogue ; le serveur attend les requêtes des clients.
● Transparence de la localisation
− L’architecture C/S doit masquer au client la localisation du serveur (que le service soit sur la même machine ou
accessible par le réseau). Transparence par rapport aux systèmes d’exploitation et aux plates-formes matérielles.
● Message
− Les messages sont les moyens d’échanges entre client et serveur.
● Evolution
− Une architecture C/S doit pouvoir évoluer horizontalement (évolution du nombre de clients) et verticalement (évolution
du nombre et des caractéristiques des serveurs).
14
Découpage des applications C/S
Présentation
Interfaces textuelles ou graphiques : saisie des JSP, Servlet
données, validation, etc.
16
Schéma du Gartner Group
17
Architecture de base de JEE
http
Navigateur Serveur
Serveur
Web d’applications
Web
http
18
Seveurs d’applications
https://koor.fr/Java/TutorialJEE/jee_application_servers.wp
NB :
Les serveurs d’applications peuvent aussi servir de serveur http.
19
Serveur d’applications
● Un serveur d’applications est un logiciel d’infrastructure offrant un contexte d’exécution
pour des composants applicatifs.
Application 1
http
Application 2
20
Serveur d’applications
Comparatif entre les différents serveurs d'applications Jakarta/Java EE
Nom du Version du
Développeur SE EE Servlet JSP EL JSF EBJ JPA JMS JAX-WS JAX-RS
serveur serveur
Fondation
Tomcat 8.0 7.0-10.0 7.0 3.1 2.3 3.0
Apache
Fondation
Tomcat 9.0 8.0-10.0 8.0 4.0 2.4 3.1
Apache
Glassfish 4.0 Oracle 7.0-10.0 7.0 3.1 2.3 3.0 2.2 3.2 2.2 2.0 2.2 2.0
Glassfish 5.0 Oracle 8.0-10.0 8.0 4.0 2.3 3.0 2.3 3.2 2.2 2.0 Removed 2.1
WildFly
13 Redhat 7.0 3.1 2.3 3.0 2.2 3.2 2.2 2.0 2.2 2.0
(JBoss)
WildFly
14 Redhat 8.0 4.0 2.3 3.0 2.3 3.2 2.2 2.0 Removed 2.1
(JBoss)
WebSphere 8.5.5 IBM 6.0-8.0 6.0 3.0 2.2 2.0 3.1 2.0 1.1
WebSphere 9.0 IBM 8.0 7.0 3.1 2.3 2.2 3.2 2.1 2.0 2.2 2.0
https://koor.fr/Java/TutorialJEE/jee_application_servers.wp
Source : https://koor.fr/Java/TutorialJEE/jee_application_servers.wp
NB : Tomcat et Jetty ne sont pas à proprement parler des serveurs d'applications, dans le sens ou ils n'implémentent pas
toute la spécification Jakarta/Java EE.
21
Avantages des serveurs
● Le développeur se concentre principalement sur la logique de l’application : i.e. la couche
métier ou le “Business Logic”
● Simplifier le développement et séparer clairement les différentes couches,
● Obtenir des gains de productivité en facilitant l’intégration avec l’existant,
● Optimiser la maintenance et la sécurité,
● Permettre la liberté de choix,
● Proposer un accès transparents aux données,
● Gérer la charge avec du clustering, équilibrage de charges (loadbalancing),
● Basculement automatique,
● …etc
22
Clustring and Load Balancing
Application 1
Application 2
23
Architecture détaillé
•Ajax JDBC
•Flash
25
Developpement en JEE
● Une application Java EE assemble des composants
− composants clients : HTML, applets
− composants Web : servlets et JSP
− composants business : EJB
● Les composants sont
− écrits en Java compilé en bytecode,
− assemblés dans l’application Java EE,
− déployés dans un serveur Java EE.
26
Déploiement d’une application
● Une application web est archivée pour déploiement dans un
fichier WAR (Web Application Archive).
● Un fichier WAR (Web Application Resource ou Web
application ARchive)
Index.html Deploiement
login.jsp
Produit.java WAR
Archivage
28
Arborescence de Tomcat
● ./bin
− fichier binaire, (pour lancer Tomcat par exemple)
● ./conf
− fichiers de configuration (sécurité, déploiement, . . .),
● ./lib
− une partie les librairies Java EE !
● ./log
− fichiers de journalisation,
● ./webapp
− les applications , (il y en a par défaut : docs, examples, . . .)
● ./work
− Répertoire de travail de Tomcat (c’est ici par exemple que les jsp sont compilées)
29
TP1 : JEE
Installation d’un serveur d’applications et d’un environnement de
développement
30