Développement d'applications pour la plateforme Java EE

65
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

Transcript of Développement d'applications pour la plateforme Java EE

Page 1: Développement d'applications pour la plateforme Java EE

Java Entreprise EditionStandard de développement d'applications d'entreprises multi-niveaux, basées sur des composants

Sabri Bouchlema Elève ingénieur en génie logicielDéveloppeur Java / Java EE

Page 2: Développement d'applications pour la plateforme Java EE

Partie 1 :

Les bases

Partie 2 :

Industrialisation du génie logiciel

Page 3: Développement d'applications pour la plateforme Java EE

Partie 1 :

Les bases

Page 4: Développement d'applications pour la plateforme Java EE

Plan

1. Architectures applicatives

2. Quelques notions (le web)

3. Les plateformes Java

4. La plateforme JEE

Page 5: Développement d'applications pour la plateforme Java EE

Architectures applicatives

Page 6: Développement d'applications pour la plateforme Java EE

Architecture 1 tiers

Les années 70, architecture Mainframe (1 tiers)

Page 7: Développement d'applications pour la plateforme Java EE

Avantages : + Développement rapide

Désavantages : - Application monolithique- Mises à jour et maintenance du code plus difficiles- Code difficilement réutilisable

Page 8: Développement d'applications pour la plateforme Java EE

Architecture 2 tiers

Les années 80, architecture 2 tiers

Page 9: Développement d'applications pour la plateforme Java EE

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

Page 10: Développement d'applications pour la plateforme Java EE

Architecture 3 tiers

Fin des années 80, architecture 3 tiers (RPC)

Primergy

Requètes SQL

RPC

RPC

Base de

Données

Page 11: Développement d'applications pour la plateforme Java EE

Architecture 3 tiers

Les années 90, architecture 3 tiers (Objets)

Primergy objet

objet objet

objet

RMI / CORBA

RMI / CORBA

Requètes SQL

Base de

Données

Page 12: Développement d'applications pour la plateforme Java EE

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.

Page 13: Développement d'applications pour la plateforme Java EE

Architecture Internet (N-tiers)

Les années 90, architecture (Internet)

Primergy

InternetHTTP HTTP SQL

Serveur Web + "CGI"Navigateur

Base de

Données

Page 14: Développement d'applications pour la plateforme Java EE

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

Page 15: Développement d'applications pour la plateforme Java EE
Page 16: Développement d'applications pour la plateforme Java EE

Quelques notions

Page 17: Développement d'applications pour la plateforme Java EE

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.

Page 18: Développement d'applications pour la plateforme Java EE

✓ Le navigateur effectue une requête HTTP

✓ Le serveur traite la requête puis envoie une réponse HTTP

Page 19: Développement d'applications pour la plateforme Java EE

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.

Page 20: Développement d'applications pour la plateforme Java EE

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.

Page 21: Développement d'applications pour la plateforme Java EE

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.

Page 22: Développement d'applications pour la plateforme Java EE

Les plateformes Java

Page 23: Développement d'applications pour la plateforme Java EE

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é

• …

Page 24: Développement d'applications pour la plateforme Java EE

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

Page 25: Développement d'applications pour la plateforme Java EE

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.

Page 26: Développement d'applications pour la plateforme Java EE

Problématique générale

Page 27: Développement d'applications pour la plateforme Java EE

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 !

Page 28: Développement d'applications pour la plateforme Java EE

La solution ?

Page 29: Développement d'applications pour la plateforme Java EE

La plateforme JEE

Page 30: Développement d'applications pour la plateforme Java EE

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).

Page 31: Développement d'applications pour la plateforme Java EE

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

Page 32: Développement d'applications pour la plateforme Java EE

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

Page 33: Développement d'applications pour la plateforme Java EE

le principe de séparation est celui de la prise de courant

Page 34: Développement d'applications pour la plateforme Java EE

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.

Page 35: Développement d'applications pour la plateforme Java EE

L'infrastructure de gestion des applications

Page 36: Développement d'applications pour la plateforme Java EE

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,

Page 37: Développement d'applications pour la plateforme Java EE

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

Page 38: Développement d'applications pour la plateforme Java EE

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.

Page 39: Développement d'applications pour la plateforme Java EE

Des services, au travers d'API

Page 40: Développement d'applications pour la plateforme Java EE

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,

Page 41: Développement d'applications pour la plateforme Java EE

Les API de JEE

Les API de JEE peuvent se répartir en deux grandes catégories :

✓ Les composants.

✓ Les services.

Page 42: Développement d'applications pour la plateforme Java EE

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écifiqueschargé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.

Page 43: Développement d'applications pour la plateforme Java EE

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

Page 44: Développement d'applications pour la plateforme Java EE
Page 45: 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.

Page 46: Développement d'applications pour la plateforme Java EE

Partie 2 :

Industrialisation du génie logiciel

Page 47: Développement d'applications pour la plateforme Java EE

Plan

1. Comment se fait l'évolution du language Java?

2. Avènement des technologies Open Source

3. Exigences d’un projet informatique

Page 48: Développement d'applications pour la plateforme Java EE

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

Page 49: Développement d'applications pour la plateforme Java EE

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

Page 50: Développement d'applications pour la plateforme Java EE

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

Page 51: Développement d'applications pour la plateforme Java EE

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 ?

Page 52: Développement d'applications pour la plateforme Java EE

Comment se fait l'évolution du language Java?

La réponse : OUI

- Erreurs du JCP (Hibernate ..)- Nouvelles façons (Spring ..)- Sujets non couverts (Maven ..)

Page 53: Développement d'applications pour la plateforme Java EE

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

Page 54: Développement d'applications pour la plateforme Java EE

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.

Page 55: Développement d'applications pour la plateforme Java EE

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

Page 56: Développement d'applications pour la plateforme Java EE

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….

Page 57: Développement d'applications pour la plateforme Java EE
Page 58: Développement d'applications pour la plateforme Java EE
Page 59: 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.

Page 60: Développement d'applications pour la plateforme Java EE

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

Page 61: Développement d'applications pour la plateforme Java EE
Page 62: 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)

Page 63: Développement d'applications pour la plateforme Java EE
Page 64: 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

Page 65: Développement d'applications pour la plateforme Java EE

Merci!

Sabri Bouchlema Elève ingénieur en génie logicielDéveloppeur Java / Java EE