1.2-Définitions de J2EE-Java EE
1.2-Définitions de J2EE-Java EE
1.2-Définitions de J2EE-Java EE
de J2EE/Java EE
De nombreuses possibilités existent pour réaliser des applications Internet depuis plusieurs années. Des langages ont
été créés, des architectures et des environnements de travail ont été conçus pour répondre aux besoins et faciliter la
tâche des développeurs. Sun (le concepteur de Java) a donc mis en place un ensemble de technologies pour réaliser des
applications Web. Ces technologies sont regroupées sous le nom J2EE ( Java 2 Entreprise Edition), désormais Java EE.
Depuis la version 5, le chiffre 2 a disparu pour faciliter la compréhension de la version et ne pas mélanger le chiffre
2 avec le numéro de version.
La plateforme Java EE s’appuie entièrement sur le langage Java. Java EE est donc une norme, qui permet à des
développeurs, entreprises et SSII de développer leur propre application qui implémente en totalité ou partiellement les
spécifications de SUN. En simplifiant, il est possible de représenter Java EE comme un ensemble de spécifications d’API,
une architecture, une méthode de packaging et de déploiement d’applications et la gestion d’applications déployées sur
un serveur compatible Java.
Une API est un ensemble de librairies ou bibliothèques de fonctions destinées à être utilisées par les
programmeurs dans leurs applications.
Java Entreprise Edition est destiné aux gros (très gros) systèmes d’entreprises. Les librairies utilisées fonctionnent
difficilement sur un simple PC et requièrent une puissance beaucoup plus importante (notamment au niveau de la
mémoire).
Java Entreprise Edition est apparue à la fin des années 90. Cette évolution apporte au langage Java une plateforme
logicielle robuste et complète pour le développement. La plateforme Java EE a souvent été remise en cause, mal utilisée
et mal comprise. Des outils OpenSource sont venus la concurrencer. Ces remarques et la concurrence ont permis à Sun
d’améliorer son produit et d’éditer des versions de plus en plus abouties. Java EE ne remplace en aucun cas J2SE. Au
contraire, J2SE est la base de Java EE qui est plus complet et qui est axé sur le Web. La plateforme J2SE offre des outils
de développement d’applications client/serveur, applications graphiques fenêtrées et Applets.
La plateforme J2SE est composée des éléments suivants :
l La machine virtuelle Java (JVM) : permet d’exécuter des applications Java. Elle constitue une passerelle et permet une
portabilité entre les architectures (Windows, Linux, Mac...).
l La bibliothèque de classes Java : un ensemble de composants logiciels prêt à l’emploi.
l Les outils de développement : le compilateur javac , un interpréteur Java nommé java, le générateur de documentation
javadoc, la console de supervisation Jconsole... La plateforme Java EE est une extension de la plateforme J2SE. Elle permet
un développement d’applications qui vont s’exécuter sur un serveur d’applications. Les applications seront utilisées par des
clients légers (comme des navigateurs Web) ou bien des applications lourdes (IHM). La dernière version stable de Java EE est
la version Java EE 5.0 et fonctionne avec le JDK 5.0 et 6.0.
1. Pourquoi choisir Java EE
Il existe actuellement beaucoup d’autres platesformes 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
© Editions ENI – Tous droits réservés – Copie personnelle de Yasmine MINA SYLLA - 1-
besoin de concevoir une architecture , des librairies et des outils spécialement adaptés. Cela nécessiterait un temps et
un investissement considérables.
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
multitiers.
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).
2. L’API Java EE (JDBC, Servlets, JSP)
La plateforme Java EE est composée de plusieurs API (ensemble de libraires et services). Java EE fait intervenir trois
types de composants logiciels (Servlets, JSP, EJB).
a. Les Servlets
L’API Servlet fournit les éléments nécessaires à la conception de composants Web dynamiques avec le langage Java.
Les Servlets sont des composants logiciels entièrement écrits en Java. Les Servlets effectuent des traitements côté
serveur en réponse aux requêtes des clients distants. Une Servlet est chargée en mémoire lors de son premier appel.
De même, il n’existe qu’une seule instance d’une Servlet en mémoire, le serveur utilise alors un thread global pour
traiter les demandes émises par les clients.
Cycle de vie d’une Servlet
Une Servlet est une classe Java. Cette classe doit être chargée puis interprétée par une machine virtuelle Java (celle
du serveur d’applications). La Servlet est alors prête à recevoir des requêtes et à renvoyer des réponses. Lorsque
l’application ou le serveur s’arrête, la Servlet est détruite, puis son instance est nettoyée par le ramassemiettes de la
machine virtuelle.
Les Servlets permettent de développer des pages dynamiques, dont le contenu est créé à la volée sur demande. C’est
le cas par exemple, lorsqu’un client souhaite obtenir la liste des articles d’une boutique pour une plage de prix. Les
- 2- © Editions ENI – Tous droits réservés – Copie personnelle de Yasmine MINA SYLLA
pages HTML sont alors générées dynamiquement en fonction de critères spécifiques (prix, dates, recherches...).
Une Servlet est un composant Java qui implémente l’interface javax.servlet.Servlet. Cette interface permet de gérer les
requêtes du client, dirigées vers la Servlet en question. Le serveur reçoit une demande adressée à une Servlet sous la
forme d’une requête HTTP. Il transmet alors la requête à la Servlet concernée par le traitement puis renvoie la réponse
fournie par celleci au client. La Servlet est gérée par le conteneur de Servlets Java EE. Lorsque le serveur Web reçoit
la requête du client, il charge la Servlet (si elle n’est pas encore chargée) et invoque l’interface javax.servlet.Servlet afin
de satisfaire la requête.
Ce type de programmation est très proche du développement CGI mais offre les outils pour gérer les cookies, sessions,
accès aux bases de données et autres avec une excellente portabilité.
Exemple de Servlet simple :
b. Les JSP (Java Server Page)
L’API JSP permet de développer des pages Web dynamiques rapidement à partir d’un squelette HTML et de données
incluses directement dans chaque page. Les JSP permettent d’insérer des bouts de code Java (scriptlets) directement
dans le code HTML.
Du point de vue de la structure, une JSP est très proche d’une page PHP ou bien ASP. Une page JSP est un fichier qui
porte l’extension .jsp ou .jspf (pour les fragments de code).
Lors de la création de Servlets, le but est de construire des composants capables de produire un service
(essentiellement du code HTML). Toutefois, ce principe est parfois complexe pour des personnes qui ne sont pas
habituées à la programmation objet et au code 100% Java. C’est pour ces raisons que les développeurs de chez SUN
ont inventé JSP.
La page JSP est transformée en classe Java puis compilée en Servlet par le serveur d’applications. Ce traitement est
réalisé par le serveur d’applications au premier appel de la page et à chaque fois que cette page est modifiée par un
programmeur.
C’est cette étape qui nécessite un serveur d’applications Java EE, un compilateur Java et qui par conséquent nécessite
pour la majorité l’installation de Java avec un JDK plutôt qu’un JRE.
Cycle de vie d’une JSP
© Editions ENI – Tous droits réservés – Copie personnelle de Yasmine MINA SYLLA - 3-
Le résultat de la compilation (essentiellement du code HTML) est renvoyé au client. Cette technologie est simple, légère
et rapide. Les développeurs de pages JSP peuvent ainsi mélanger du contenu statique et du contenu dynamique.
<%
System.out.println("Ma première Servlet");
out.println("<h1>Ma première Servlet<h1>");
%>
Il est donc possible d’avoir des équipes de développement séparées avec une personne spécialiste de HTML/XHTML et
du design et un programmeur Java qui réalise les scriptlets. Les JSP sont exécutées sous la forme de Servlets, elles
disposent donc des mêmes fonctionnalités que cellesci et peuvent ainsi manipuler les sessions, les bases de données,
- 4- © Editions ENI – Tous droits réservés – Copie personnelle de Yasmine MINA SYLLA
les mails...
c. LES EJB (Entreprise Java Bean)
Les EJB sont des composants métier distribués, c’estàdire qu’ils sont invocables par le réseau. Un composant EJB est
une classe qui possède des attributs et méthodes pour mettre en application la logique métier. L’API EJB fournit un
ensemble de services (persistance, transaction...) de gestion de composants. Il existe plusieurs (trois) types d’EJB : les
beans sessions, les beans entités et les beans contrôlés par message.
l EJB session : il permet de maintenir des informations sur les clients et les traitements qu’ils réalisent.
l EJB entité : c’est un composant persistant, son état est sauvegardé dans une base de données.
l EJB piloté par message : les EJB message sont semblables aux EJB session mais sont invoqués différemment (par le biais
de Java Message Service).
La mise en place d’EJB nécessite l’utilisation d’un serveur d’applications capable de gérer ces EJB.
Actuellement, les serveurs GlassFish, JBoss et Jonas existent dans le domaine du libre. Le serveur Tomcat ne
permet pas d’utiliser les EJB.
Il existe ensuite au sein de Java EE, la plateforme de Services avec JDBC, JNI, JavaMail, JTA, RMI, JAAS et XML.
JDBC (Java DataBase Connectivity)
L’API JDBC permet de faciliter l’obtention de connexions JDBC vers des sources de données (essentiellement des bases
de données, mais également annuaire...). L’API fournit les librairies pour se connecter aux bases de données et pour la
gestion des transactions.
JNDI (Java Naming and Directory Interface)
L’API JNDI permet d’accéder à des services de nommage ou d’annuaire (LDAP par exemple). Cette API est par exemple
utilisée pour se connecter à une source de données pour des accès à la base de données ou la gestion des accès
(associée aux Realms). JNDI permet d’implémenter un service de nommage. L’ensemble des ressources que le serveur
d’applications met à disposition via ces API de services, doit être enregistré avec un nom logique unique, permettant
aux applications de rechercher cette ressource dans le serveur.
JavaMail
L’API JavaMail fournit des fonctionnalités de gestion de courrier électronique (transfert, type de contenu, pièces
jointes...). JavaMail permet la création et l’envoi de messages électroniques via Java. Cette API permet de manipuler
les protocoles de messagerie Internet comme POP, IMAP, SMTP. JavaMail n’est pas un serveur de courrier mais plutôt
un outil qui permet d’interagir avec ce type de serveur.
JPA (Java Persistance API)
Les entités Beans ont été développées pour le modèle de persistance en Java EE. Ce modèle de composants avait de
nombreux détracteurs. Pour apporter des solutions à ce problème, de nouvelles spécifications, des outils de mapping
objet/relationnel comme TopLink et Hibernate ont été développés. Java EE apporte donc un nouveau modèle de
persistance nommé JPA. JPA s’appuie sur JDBC pour communiquer avec la base de données mais permet d’éviter de
manipuler directement les fonctionnalités de JDBC et le langage SQL.
3. Les autres API
Parmi les autres API Java EE, il faut citer :
© Editions ENI – Tous droits réservés – Copie personnelle de Yasmine MINA SYLLA - 5-
JMS (Java Message Service) permet d’accéder à un service de messages pour une gestion asynchrone des composants. Le
composant appelant poste un message (en arrièreplan) à destination d’une file d’attente de messages hébergés par le
serveur d’applications puis continue son traitement sans attendre.
RMI (Remote Method Invocation) permet de concevoir des applications distribuées en Java. RMI permet l’appel de
fonctionnalités à distance par le biais de la communication réseau.
JTA (Java Transaction API) permet de mettre en place une gestion des transactions dans des applications distribuées
(commit, rollback...). Le principe des transactions est de considérer un ensemble d’opérations comme une seule. Ce type
de service est obligatoire pour des traitements bancaire. Par exemple, une application bancaire qui permet de réaliser
des virements entre deux comptes va d’abord débiter le premier compte et ensuite créditer le second compte. Si le débit
puis le crédit aboutissent sans problème, alors la transaction est validée. JDBC permet de gérer les transactions sur une
base de données locale mais si les données sont réparties, il faudra alors utiliser les transactions JTA. JTA permet en
effet de gérer les transactions distribuées qui font intervenir différentes bases de données.
JCA (J2EE Connector Architecture) : ce connecteur permet à Java EE d’utiliser des gros systèmes tels que les mainframes.
JAAS (Java Authentication and Autorisation Service) est un mécanisme de sécurité géré par le serveur d’applications.
XML n’est pas véritablement une API Java mais il est très utilisé pour la mise en place et la configuration des
applications. De même, XML est la base d’un nouveau mode de communication entre les applications qui est appelé Web
Service. Par exemple, JAXP (Java API for XML Parsing) analyse des fichiers ou données XML, JAXRPC (Java API for XML based
RPC ) utilise des Web Services et JAXB (Java API for XML Binding) permet de générer des classes Java à partir de schémas
XML ou inversement.
Actuellement, la version de Java EE est 5.0 associée à l’API Servlet 2.5, et à l’API JSP 2.1 (et à ApacheTomcat 5.X6.X).
- 6- © Editions ENI – Tous droits réservés – Copie personnelle de Yasmine MINA SYLLA