SlideShare une entreprise Scribd logo
1  sur  65
Télécharger pour lire hors ligne
Java Entreprise Edition
Standard de développement d'applications d'entreprises
multi-niveaux, basées sur des composants
Sabri Bouchlema
Elève ingénieur en génie logiciel
Développeur Java / Java EE
Partie 1 :
Les bases
Partie 2 :
Industrialisation du génie logiciel
Partie 1 :
Les bases
Plan
1. Architectures applicatives
2. Quelques notions (le web)
3. Les plateformes Java
4. La plateforme JEE
Architectures applicatives
Architecture 1 tiers
Les années 70, architecture Mainframe (1 tiers)
Avantages :
+ Développement rapide
Désavantages :
- Application monolithique
- Mises à jour et maintenance du code plus difficiles
- Code difficilement réutilisable
Architecture 2 tiers
Les années 80, architecture 2 tiers
Avantages :
+ Centralisation du code et des ressources
Désavantages :
- Application serveur monolithique
- Logique métier est répartie entre l'application serveur et le client
Architecture 3 tiers
Fin des années 80, architecture 3 tiers (RPC)
Primergy
Requètes
SQL
RPC
RPC
Base
de
Données
Architecture 3 tiers
Les années 90, architecture 3 tiers (Objets)
Primergy objet
objet objet
objet
RM
I / CORBA
RM
I / CORBA
Requètes SQL
Base
de
Données
Avantages :
+ Séparation forte entre les 3 niveaux
Désavantages :
- Protocole d’échange propriétaire
- Difficultés de maintenance: toute modification entraîne une mise à
niveau de chaque poste client.
Architecture Internet (N-tiers)
Les années 90, architecture (Internet)
Primergy
Internet
HTTP HTTP
SQL
Serveur Web + "CGI"
Navigateur
Base
de
Données
Avantages :
+ Pas d’installation sur les postes clients (hormis le navigateur
lui-même)
+ Chaque niveau peut être managé, dimensionné, distribué
+ Mises à jour et maintenance facilitées en minimisant l'impact sur les autres
couches
+ Extensibilité : ajout de nouvelles fonctionnalités simplifié
+ Possibilité de clients lourds et de clients légers
Développement d'applications pour la plateforme Java EE
Quelques notions
HTTP
• Le HyperText Transfer Protocol, plus connu sous l'abréviation HTTP,
littéralement le « protocole de transfert hypertexte », est un
protocole de communication client-serveur développé pour le
World Wide Web. Il est utilisé pour échanger toute sorte de données
entre client HTTP et serveur HTTP.
✓ Le navigateur effectue une requête HTTP
✓ Le serveur traite la requête puis envoie une réponse HTTP
Les méthodes
✓ GET: c'est la méthode la plus courante pour demander une
ressource. Une requête GET est sans effet sur la ressource, il doit
être possible de répéter la requête sans effet.
✓ HEAD: cette méthode ne demande que des informations sur la
ressource, sans demander la ressource elle-même.
✓ POST: cette méthode doit être utilisée lorsqu'une requête modifie la
ressource.
✓ PUT: cette méthode permet d'ajouter une ressource sur le serveur.
✓ DELETE: cette méthode permet de supprimer une ressource du
serveur.
Site web statique
• Un site statique est un site constitué de pages créées en HTML. Il
s’agit d’un contenu fixe.
• Ainsi lorsqu’un ordinateur (par l’usage d’un navigateur internet) se
connecte au serveur hébergeant le site statique, la page demandée
est instantanément retournée, sans compilation ni traitement par
le serveur.
Site web dynamique
• Un site dynamique combinent différentes sources pour constituer
ses pages HTML.
• D’un côté il y a une base de données (MySQL, …), et de l’autre des
fichiers dans un langage de programmation dynamique (PHP,
Java, …) qui à la demande d’un ordinateur se connectant au
serveur, compile la page HTML avant de la délivrer.
Les plateformes Java
Java
Write once , Run everywhere …
• Java est un langage de programmation moderne développé par Sun
Microsystems (aujourd'hui racheté par Oracle).
• Une de ses plus grandes forces est son excellente portabilité : une
fois votre programme créé, il fonctionnera automatiquement sous
Windows, Mac, Linux, etc.
• Puissance
• Stabilité
• Sécurité
• …
Java Aujourd'hui ...
...3 environnements d'exécutions différents.
• Java ME (Micro Edition) pour téléphone
• Java SE (Standard Edition) pour desktop
• Java EE (Entreprise Edition) pour serveur
Les plateformes Java intègrent ..
• Une JVM (Machine Virtuelle Java) :
Environnement d'exécution pour les applications Java
• Une API (Application Programming Interface) :
Collection de composants logiciels (librairies) utilisés pour développer
d'autres composants ou applications.
Problématique générale
Problématique
“Les applications d'entreprise” concernent aussi bien les grandes
entreprises que les petites …
Elles doivent être :
• Portables
• Fiables et sécurisées
• Maintenables et flexibles
• Performantes ...
Nécessité d'intégrer ou de s'intégrer à un système d'information existant.
Toutes ces considérations rendent les applications complexes !
La solution ?
La plateforme JEE
Java EE – Java Entreprise Edition
Standard de développement d'applications d'entreprises
multi-niveaux, basées sur des composants.
Conscient de l’intérêt des architectures multi-tiers pour le
développement d’applications d’entreprises, la société
Sun Microsystems a proposé , dès 1999, une déclinaison
de son SDK Java (Software Development Kit) baptisé JEE
(Java Enterprise Edition).
Java EE – Java Entreprise Edition
Java EE a pour but de faciliter le développement
d'applications distribuées, mais en fait, elle est avant tout
une norme
Java EE – Java Entreprise Edition
C'est un ensemble de standard décrivant des services
techniques comme, par exemple, comment accéder à un
annuaire, à une base de données, à des documents …
Important : Java EE définit ce qui doit être fournie mais
ne dit pas comment cela doit être fourni
le principe de séparation est celui de la prise de
courant
Java EE – Java Entreprise Edition
JEE est un ensemble de spécifications (et non pas un produit)
qui, en respectant une architecture multi-tiers, va décrire à la
fois:
✓ L'infrastructure de gestion des applications.
✓ Les API des services utilisées pour concevoir ces
applications.
L'infrastructure de gestion des applications
Serveur d’applications
JEE définit finement les rôles et les interfaces pour les applications 
ainsi que l'environnement dans lequel elles seront exécutées.
Ces recommandations permettent ainsi à des entreprises tierces de
développer des serveurs d'application conformes aux spécifications ainsi
définies, sans avoir à redévelopper les principaux services.
C'est-à-dire de l'environnement d'exécution,
Les applications d'entreprise ont souvent besoin des mêmes services système :
Gestion de la concurrence
Services transactionnels entre composants
Sécurité
Gestion de la session utilisateur
Gestion des montées en charge
Ouverture sur de multiples sources de données
Pools de connexion
Système de tolérance aux pannes et reprise sur incident
Le serveur d'application fournira ces services système
Serveur d’applications
✓ Serveur d'application JEE implémente les API JEE
✓ Il héberge des composants applicatifs
✓ Il fournit des services à ces composants au travers d'un conteneur (un
environnement d'exécution chargé de gérer des composants applicatifs et
leur donner accès aux API JEE)
✓ Il gère le noyau de l'application avec pour objectif central de répondre aux
requêtes des utilisateurs s'y connectant.
Des services, au travers d'API
Des services, au travers d'API
La plateforme JEE comprend des services, au travers d'API, c'est-à-dire des
extensions Java indépendantes permettant d'offrir en standard un certain
nombre de fonctionnalités.
Sun (aujourd'hui racheté par Oracle) fournit une implémentation minimale
de ces API appelée JEE SDK (JEE Software Development Kit)
Des services offerts,
Les API de JEE
Les API de JEE peuvent se répartir en deux grandes catégories :
✓ Les composants.
✓ Les services.
Les composants
✓ Les composants web:
✓ Les composants métier :
Servlets et JSP (Java Server Pages) il s’agit de la partie chargée de
l'interface avec l'utilisateur (on parle de logique de présentation).
EJB (Enterprise Java Beans), Il s'agit de composants spécifiques
chargés des traitements des données propres à un secteur 
d'activité (on parle de logique métier ou de logique applicative) et 
de l'interfaçage avec les bases de données.
Les services
✓ Les services d'infrastructures :
✓ Les services communication.
JDBC
JNDI
JTA / JTS
JCA
JMX
JAAS
JavaMail
JMS
RMI-IIOP
API de gestion de l'authentification et des droits d'accès.
API permettant l'envoi de courrier électronique.
API fournit des fonctionnalités de communication asynchrone.
API permettant la communication synchrone entre objets
API d'accès aux bases de données relationnelles.
API d’accès aux services de nommage et annuaires d’entreprises.
API définissant des interfaces standard avec un g. de transactions.
API de connexion au système d’information de l’entreprise (ERP).
F. des ext. permettant de dév Des apps web de supervision d’apps
Développement d'applications pour la plateforme Java EE
Ce qu’il faut retenir :
✓ Java EE est un ensemble de standard.
✓ Java EE décrit des services techniques pour bâtir des applications
d'entreprise
✓ Tous le monde peut écrire sa propre implémentation du standard.
✓ Une application Java EE s'exécute dans un serveur d’applications
qui est un environnement d’exécution.
Partie 2 :
Industrialisation du génie logiciel
Plan
1. Comment se fait l'évolution du language Java?
2. Avènement des technologies Open Source
3. Exigences d’un projet informatique
Comment se fait l'évolution du language Java?
L'évolution du language Java est piloté par le Java Community Process (JCP)
Des sociétés, des associations ou des individus peuvent rejoindre le groupe pour
participer et influencer l'évolution du langage.
Site : www.jcp.org
Comment se fait l'évolution du language Java?
Le JCP émet des Java Specification Requests (JSR), qui décrivent les
spécifications et technologies proposées pour un ajout à la plateforme Java.
Exemples :
✓ JSR 82 : La gestion de dispositifs Bluetooth
✓ JSR 75 : L'accès aux informations personnelles
Comment se fait l'évolution du language Java?
Une JSR fournit une implémentation de référence qui offre:
✓ Une implémentation gratuite de la technologie sous la forme de code
source.
✓ Un ensemble de tests, le Technology Compatibility Kit (TCK) - pour
vérifier la compatibilité d'une implémentation avec la spécification
Comment se fait l'évolution du language Java?
La question ...
Etant donné l'existence du JCP qui est un processus ouvert, y a t'il une
vie en dehors du JCP ?
Comment se fait l'évolution du language Java?
La réponse : OUI
- Erreurs du JCP (Hibernate ..)
- Nouvelles façons (Spring ..)
- Sujets non couverts (Maven ..)
Comment se fait l'évolution du language Java?
Cas des EJB 2.1 :
- Sortie des EJB 2.1 , tout le monde se lance et il s'avère que c'est une
mauvaise norme.
- Création du projet libre Hibernate => Succès
- Invitation des membres d'Hibernate au JCP sur EJB 3
- Les EJB 3 prennent le meilleur d'hibernate => Succès
Ce qu’il faut retenir :
✓ Le JCP fait la norme Java EE.
✓ L'industrie et le monde du libre ne passent pas forcément par le
JCP.
✓ Le JCP intègre souvent les bonnes idées mais cela peut prendre du
temps.
Avènement des technologies Open Source
✓ En dix ans le développement logiciel a évolué en grande partie grâce aux
technologies Open Sources.
✓ Celles ci permettent aux développeurs de ne pas réinventer
perpétuellement la roue et de se concentrer sur les aspects métiers.
✓ Les technologies Open Source rivalisent avec des standards officiels au
point de devenir des standards.
➔ Spring
➔ Struts
➔ Hibernate
Constat :
Il est très difficile de développer un système logiciel qui respecte ces exigences sans utiliser
l’expérience des autres :
✓ Serveur d’application JEE: JBOSS, Web Sphere, GlassFish, Tomcat,
✓ Framework pour l’Inversion de contrôle: Spring (Conteneur léger)EJB (Conteneur lourd)
✓ Frameworks Mapping objet relationnel (ORM ) : JPA, Hibernate, Toplink, …
✓ Applications Web : Struts, JSF, SpringMVC....
✓ Middlewares :
➔ RMI, CORBA : Applications distribuées
➔ JAXWS, JAXRS our Web services
➔ JMS : Communication asynchrone entre les application
➔ JMX : Supervision des composants….
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EE
Exigences d’un projet informatique
Exigences fonctionnelles:
Une application est créée pour répondre , tout d’abord, aux besoins
fonctionnels des entreprises.
Exigences Techniques :
• Les performances , la maintenance, Sécurité, Portabilité, Distribution
• Capacité de communiquer avec d’autres applications distantes.
• Capacité de fournir le service à différents type de clients (Desktop,Mobile,
SMS, http...)
• ...
Exigence financières.
Industrialisation du génie logiciel
✓ Le processus du développement logiciel est, aujourd'hui complètement
industrialisé.
✓ Un logiciel est construit à base de composants :
➔ Réutilisables
➔ Interchangeable
➔ Évolutifs
➔ Reconfigurables
➔ Mobiles
➔ Surveillables à chaud
Développement d'applications pour la plateforme Java EE
GRAILS ? …
✓ Grails est un Framework open source de développement agile
d'applications web basé sur le langage Groovy et sur le patron de
conception Modèle-Vue-Contrôleur.
✓ Grails est la contraction de Groovy (car le framework est basé sur le
langage Groovy) on Rails (pour exprimer le fait qu'il s'agit d'un
framework de développement rapide)
Développement d'applications pour la plateforme Java EE
GRAILS ? …
Avantages :
✓ Rapidité au démarrage des projets
✓ Intégration avec presque tous les Frameworks JAVA/J2EE
✓ Permet de faciliter l’utilisation des méthodologies agiles
✓ Une communauté active
✓ Des succès stories comme : sky.com & linkedIn.com
Site : https://blog.linkedin.com/2008/06/11/grails-at-linkedin
Merci!
Sabri Bouchlema
Elève ingénieur en génie logiciel
Développeur Java / Java EE

Contenu connexe

Tendances

Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...ENSET, Université Hassan II Casablanca
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring bootAntoine Rey
 
Présentation de JEE et de son écosysteme
Présentation de JEE et de son écosystemePrésentation de JEE et de son écosysteme
Présentation de JEE et de son écosystemeStéphane Traumat
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java Youness Boukouchi
 

Tendances (20)

Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 
Servlets et JSP
Servlets et JSPServlets et JSP
Servlets et JSP
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Présentation de JEE et de son écosysteme
Présentation de JEE et de son écosystemePrésentation de JEE et de son écosysteme
Présentation de JEE et de son écosysteme
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
 
Web services SOAP et REST
Web services  SOAP et RESTWeb services  SOAP et REST
Web services SOAP et REST
 

Similaire à Développement d'applications pour la plateforme Java EE

Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01Eric Bourdet
 
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)Eric Bourdet
 
cours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfcours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfRachida19
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwthkairi
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partageraliagadir
 
Déploiement d’applications
Déploiement d’applicationsDéploiement d’applications
Déploiement d’applicationsMohammed Jaafar
 
Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystémeAlgeria JUG
 
Boostez vos applications en migrant vos bases vers SQL Server 2012 !
Boostez vos applications en migrant vos bases vers SQL Server 2012 !Boostez vos applications en migrant vos bases vers SQL Server 2012 !
Boostez vos applications en migrant vos bases vers SQL Server 2012 !Microsoft Technet France
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreStéphane Traumat
 
Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Nazih Heni
 
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...Siham Rim Boudaoud
 

Similaire à Développement d'applications pour la plateforme Java EE (20)

Java Entreprise Edition
Java Entreprise EditionJava Entreprise Edition
Java Entreprise Edition
 
La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
 
J2 ee
J2 eeJ2 ee
J2 ee
 
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
 
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)
 
cours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfcours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdf
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
Déploiement d’applications
Déploiement d’applicationsDéploiement d’applications
Déploiement d’applications
 
#2 Architecture OSGi
#2 Architecture OSGi#2 Architecture OSGi
#2 Architecture OSGi
 
Spring Boot RestApi.pptx
Spring Boot RestApi.pptxSpring Boot RestApi.pptx
Spring Boot RestApi.pptx
 
Mysql
MysqlMysql
Mysql
 
Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystéme
 
Google appengine&guice
Google appengine&guiceGoogle appengine&guice
Google appengine&guice
 
1 Introduction
1 Introduction1 Introduction
1 Introduction
 
Boostez vos applications en migrant vos bases vers SQL Server 2012 !
Boostez vos applications en migrant vos bases vers SQL Server 2012 !Boostez vos applications en migrant vos bases vers SQL Server 2012 !
Boostez vos applications en migrant vos bases vers SQL Server 2012 !
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"
 
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
 
MERAZKA Messaoud
MERAZKA MessaoudMERAZKA Messaoud
MERAZKA Messaoud
 

Développement d'applications pour la plateforme Java EE

  • 1. Java Entreprise Edition Standard de développement d'applications d'entreprises multi-niveaux, basées sur des composants Sabri Bouchlema Elève ingénieur en génie logiciel Développeur Java / Java EE
  • 2. Partie 1 : Les bases Partie 2 : Industrialisation du génie logiciel
  • 4. Plan 1. Architectures applicatives 2. Quelques notions (le web) 3. Les plateformes Java 4. La plateforme JEE
  • 6. Architecture 1 tiers Les années 70, architecture Mainframe (1 tiers)
  • 7. Avantages : + Développement rapide Désavantages : - Application monolithique - Mises à jour et maintenance du code plus difficiles - Code difficilement réutilisable
  • 8. Architecture 2 tiers Les années 80, architecture 2 tiers
  • 9. Avantages : + Centralisation du code et des ressources Désavantages : - Application serveur monolithique - Logique métier est répartie entre l'application serveur et le client
  • 10. Architecture 3 tiers Fin des années 80, architecture 3 tiers (RPC) Primergy Requètes SQL RPC RPC Base de Données
  • 11. Architecture 3 tiers Les années 90, architecture 3 tiers (Objets) Primergy objet objet objet objet RM I / CORBA RM I / CORBA Requètes SQL Base de Données
  • 12. Avantages : + Séparation forte entre les 3 niveaux Désavantages : - Protocole d’échange propriétaire - Difficultés de maintenance: toute modification entraîne une mise à niveau de chaque poste client.
  • 13. Architecture Internet (N-tiers) Les années 90, architecture (Internet) Primergy Internet HTTP HTTP SQL Serveur Web + "CGI" Navigateur Base de Données
  • 14. Avantages : + Pas d’installation sur les postes clients (hormis le navigateur lui-même) + Chaque niveau peut être managé, dimensionné, distribué + Mises à jour et maintenance facilitées en minimisant l'impact sur les autres couches + Extensibilité : ajout de nouvelles fonctionnalités simplifié + Possibilité de clients lourds et de clients légers
  • 17. HTTP • Le HyperText Transfer Protocol, plus connu sous l'abréviation HTTP, littéralement le « protocole de transfert hypertexte », est un protocole de communication client-serveur développé pour le World Wide Web. Il est utilisé pour échanger toute sorte de données entre client HTTP et serveur HTTP.
  • 18. ✓ Le navigateur effectue une requête HTTP ✓ Le serveur traite la requête puis envoie une réponse HTTP
  • 19. Les méthodes ✓ GET: c'est la méthode la plus courante pour demander une ressource. Une requête GET est sans effet sur la ressource, il doit être possible de répéter la requête sans effet. ✓ HEAD: cette méthode ne demande que des informations sur la ressource, sans demander la ressource elle-même. ✓ POST: cette méthode doit être utilisée lorsqu'une requête modifie la ressource. ✓ PUT: cette méthode permet d'ajouter une ressource sur le serveur. ✓ DELETE: cette méthode permet de supprimer une ressource du serveur.
  • 20. Site web statique • Un site statique est un site constitué de pages créées en HTML. Il s’agit d’un contenu fixe. • Ainsi lorsqu’un ordinateur (par l’usage d’un navigateur internet) se connecte au serveur hébergeant le site statique, la page demandée est instantanément retournée, sans compilation ni traitement par le serveur.
  • 21. Site web dynamique • Un site dynamique combinent différentes sources pour constituer ses pages HTML. • D’un côté il y a une base de données (MySQL, …), et de l’autre des fichiers dans un langage de programmation dynamique (PHP, Java, …) qui à la demande d’un ordinateur se connectant au serveur, compile la page HTML avant de la délivrer.
  • 23. Java Write once , Run everywhere … • Java est un langage de programmation moderne développé par Sun Microsystems (aujourd'hui racheté par Oracle). • Une de ses plus grandes forces est son excellente portabilité : une fois votre programme créé, il fonctionnera automatiquement sous Windows, Mac, Linux, etc. • Puissance • Stabilité • Sécurité • …
  • 24. Java Aujourd'hui ... ...3 environnements d'exécutions différents. • Java ME (Micro Edition) pour téléphone • Java SE (Standard Edition) pour desktop • Java EE (Entreprise Edition) pour serveur
  • 25. Les plateformes Java intègrent .. • Une JVM (Machine Virtuelle Java) : Environnement d'exécution pour les applications Java • Une API (Application Programming Interface) : Collection de composants logiciels (librairies) utilisés pour développer d'autres composants ou applications.
  • 27. Problématique “Les applications d'entreprise” concernent aussi bien les grandes entreprises que les petites … Elles doivent être : • Portables • Fiables et sécurisées • Maintenables et flexibles • Performantes ... Nécessité d'intégrer ou de s'intégrer à un système d'information existant. Toutes ces considérations rendent les applications complexes !
  • 30. Java EE – Java Entreprise Edition Standard de développement d'applications d'entreprises multi-niveaux, basées sur des composants. Conscient de l’intérêt des architectures multi-tiers pour le développement d’applications d’entreprises, la société Sun Microsystems a proposé , dès 1999, une déclinaison de son SDK Java (Software Development Kit) baptisé JEE (Java Enterprise Edition).
  • 31. Java EE – Java Entreprise Edition Java EE a pour but de faciliter le développement d'applications distribuées, mais en fait, elle est avant tout une norme
  • 32. Java EE – Java Entreprise Edition C'est un ensemble de standard décrivant des services techniques comme, par exemple, comment accéder à un annuaire, à une base de données, à des documents … Important : Java EE définit ce qui doit être fournie mais ne dit pas comment cela doit être fourni
  • 33. le principe de séparation est celui de la prise de courant
  • 34. Java EE – Java Entreprise Edition JEE est un ensemble de spécifications (et non pas un produit) qui, en respectant une architecture multi-tiers, va décrire à la fois: ✓ L'infrastructure de gestion des applications. ✓ Les API des services utilisées pour concevoir ces applications.
  • 35. L'infrastructure de gestion des applications
  • 36. Serveur d’applications JEE définit finement les rôles et les interfaces pour les applications  ainsi que l'environnement dans lequel elles seront exécutées. Ces recommandations permettent ainsi à des entreprises tierces de développer des serveurs d'application conformes aux spécifications ainsi définies, sans avoir à redévelopper les principaux services. C'est-à-dire de l'environnement d'exécution,
  • 37. Les applications d'entreprise ont souvent besoin des mêmes services système : Gestion de la concurrence Services transactionnels entre composants Sécurité Gestion de la session utilisateur Gestion des montées en charge Ouverture sur de multiples sources de données Pools de connexion Système de tolérance aux pannes et reprise sur incident Le serveur d'application fournira ces services système
  • 38. Serveur d’applications ✓ Serveur d'application JEE implémente les API JEE ✓ Il héberge des composants applicatifs ✓ Il fournit des services à ces composants au travers d'un conteneur (un environnement d'exécution chargé de gérer des composants applicatifs et leur donner accès aux API JEE) ✓ Il gère le noyau de l'application avec pour objectif central de répondre aux requêtes des utilisateurs s'y connectant.
  • 39. Des services, au travers d'API
  • 40. Des services, au travers d'API La plateforme JEE comprend des services, au travers d'API, c'est-à-dire des extensions Java indépendantes permettant d'offrir en standard un certain nombre de fonctionnalités. Sun (aujourd'hui racheté par Oracle) fournit une implémentation minimale de ces API appelée JEE SDK (JEE Software Development Kit) Des services offerts,
  • 41. Les API de JEE Les API de JEE peuvent se répartir en deux grandes catégories : ✓ Les composants. ✓ Les services.
  • 42. Les composants ✓ Les composants web: ✓ Les composants métier : Servlets et JSP (Java Server Pages) il s’agit de la partie chargée de l'interface avec l'utilisateur (on parle de logique de présentation). EJB (Enterprise Java Beans), Il s'agit de composants spécifiques chargés des traitements des données propres à un secteur  d'activité (on parle de logique métier ou de logique applicative) et  de l'interfaçage avec les bases de données.
  • 43. Les services ✓ Les services d'infrastructures : ✓ Les services communication. JDBC JNDI JTA / JTS JCA JMX JAAS JavaMail JMS RMI-IIOP API de gestion de l'authentification et des droits d'accès. API permettant l'envoi de courrier électronique. API fournit des fonctionnalités de communication asynchrone. API permettant la communication synchrone entre objets API d'accès aux bases de données relationnelles. API d’accès aux services de nommage et annuaires d’entreprises. API définissant des interfaces standard avec un g. de transactions. API de connexion au système d’information de l’entreprise (ERP). F. des ext. permettant de dév Des apps web de supervision d’apps
  • 45. Ce qu’il faut retenir : ✓ Java EE est un ensemble de standard. ✓ Java EE décrit des services techniques pour bâtir des applications d'entreprise ✓ Tous le monde peut écrire sa propre implémentation du standard. ✓ Une application Java EE s'exécute dans un serveur d’applications qui est un environnement d’exécution.
  • 46. Partie 2 : Industrialisation du génie logiciel
  • 47. Plan 1. Comment se fait l'évolution du language Java? 2. Avènement des technologies Open Source 3. Exigences d’un projet informatique
  • 48. Comment se fait l'évolution du language Java? L'évolution du language Java est piloté par le Java Community Process (JCP) Des sociétés, des associations ou des individus peuvent rejoindre le groupe pour participer et influencer l'évolution du langage. Site : www.jcp.org
  • 49. Comment se fait l'évolution du language Java? Le JCP émet des Java Specification Requests (JSR), qui décrivent les spécifications et technologies proposées pour un ajout à la plateforme Java. Exemples : ✓ JSR 82 : La gestion de dispositifs Bluetooth ✓ JSR 75 : L'accès aux informations personnelles
  • 50. Comment se fait l'évolution du language Java? Une JSR fournit une implémentation de référence qui offre: ✓ Une implémentation gratuite de la technologie sous la forme de code source. ✓ Un ensemble de tests, le Technology Compatibility Kit (TCK) - pour vérifier la compatibilité d'une implémentation avec la spécification
  • 51. Comment se fait l'évolution du language Java? La question ... Etant donné l'existence du JCP qui est un processus ouvert, y a t'il une vie en dehors du JCP ?
  • 52. Comment se fait l'évolution du language Java? La réponse : OUI - Erreurs du JCP (Hibernate ..) - Nouvelles façons (Spring ..) - Sujets non couverts (Maven ..)
  • 53. Comment se fait l'évolution du language Java? Cas des EJB 2.1 : - Sortie des EJB 2.1 , tout le monde se lance et il s'avère que c'est une mauvaise norme. - Création du projet libre Hibernate => Succès - Invitation des membres d'Hibernate au JCP sur EJB 3 - Les EJB 3 prennent le meilleur d'hibernate => Succès
  • 54. Ce qu’il faut retenir : ✓ Le JCP fait la norme Java EE. ✓ L'industrie et le monde du libre ne passent pas forcément par le JCP. ✓ Le JCP intègre souvent les bonnes idées mais cela peut prendre du temps.
  • 55. Avènement des technologies Open Source ✓ En dix ans le développement logiciel a évolué en grande partie grâce aux technologies Open Sources. ✓ Celles ci permettent aux développeurs de ne pas réinventer perpétuellement la roue et de se concentrer sur les aspects métiers. ✓ Les technologies Open Source rivalisent avec des standards officiels au point de devenir des standards. ➔ Spring ➔ Struts ➔ Hibernate
  • 56. Constat : Il est très difficile de développer un système logiciel qui respecte ces exigences sans utiliser l’expérience des autres : ✓ Serveur d’application JEE: JBOSS, Web Sphere, GlassFish, Tomcat, ✓ Framework pour l’Inversion de contrôle: Spring (Conteneur léger)EJB (Conteneur lourd) ✓ Frameworks Mapping objet relationnel (ORM ) : JPA, Hibernate, Toplink, … ✓ Applications Web : Struts, JSF, SpringMVC.... ✓ Middlewares : ➔ RMI, CORBA : Applications distribuées ➔ JAXWS, JAXRS our Web services ➔ JMS : Communication asynchrone entre les application ➔ JMX : Supervision des composants….
  • 59. Exigences d’un projet informatique Exigences fonctionnelles: Une application est créée pour répondre , tout d’abord, aux besoins fonctionnels des entreprises. Exigences Techniques : • Les performances , la maintenance, Sécurité, Portabilité, Distribution • Capacité de communiquer avec d’autres applications distantes. • Capacité de fournir le service à différents type de clients (Desktop,Mobile, SMS, http...) • ... Exigence financières.
  • 60. Industrialisation du génie logiciel ✓ Le processus du développement logiciel est, aujourd'hui complètement industrialisé. ✓ Un logiciel est construit à base de composants : ➔ Réutilisables ➔ Interchangeable ➔ Évolutifs ➔ Reconfigurables ➔ Mobiles ➔ Surveillables à chaud
  • 62. GRAILS ? … ✓ Grails est un Framework open source de développement agile d'applications web basé sur le langage Groovy et sur le patron de conception Modèle-Vue-Contrôleur. ✓ Grails est la contraction de Groovy (car le framework est basé sur le langage Groovy) on Rails (pour exprimer le fait qu'il s'agit d'un framework de développement rapide)
  • 64. GRAILS ? … Avantages : ✓ Rapidité au démarrage des projets ✓ Intégration avec presque tous les Frameworks JAVA/J2EE ✓ Permet de faciliter l’utilisation des méthodologies agiles ✓ Une communauté active ✓ Des succès stories comme : sky.com & linkedIn.com Site : https://blog.linkedin.com/2008/06/11/grails-at-linkedin
  • 65. Merci! Sabri Bouchlema Elève ingénieur en génie logiciel Développeur Java / Java EE