Introduction à Jakarta EE
Introduction
La plateforme Jakarta EE (Jakarta Enterprise Edition) est le successeur de la plateforme Java EE (Java Enterprise Edition). La première version de cette plateforme est Jakarta EE 8. Elle est sortie le 10 Septembre 2019 après deux ans de travail acharné. Elle est, fonctionnellement, totalement compatible avec la dernière version de Java EE, à savoir Java EE 8 sortie en Septembre 2017. Enfin, la version Jakarta EE 9 est sortie en Novembre 2020. Après une présentation de la naissance de Jakarta EE, l’ouvrage se focalise sur les technologies essentielles de la plateforme Jakarta EE 9 permettant de réaliser spécifiquement des applications web en Java. La plateforme Jakarta EE ne se limite pas à la création d’applications web. Elle permet de créer plus globalement des applications distribuées. Elle apporte donc un ensemble conséquent de fonctionnalités présentées sous la forme de spécifications.
Revenons un peu en arrière. L’arrivée de la plateforme Java EE 6 s’est accompagnée d’une « mini » plateforme Java EE nommée Java EE 6 Web Profile regroupant un sous-ensemble des technologies constituant la plateforme Java EE 6. En effet, un état des lieux a permis, à l’époque, de rassembler dans la plateforme Java EE 6 Web Profile...
L’écosystème Java
Java existe maintenant depuis plus de vingt-cinq ans. Il a été créé en 1995 par James Gosling et Patrick Naughton de la société Sun Microsystems. Cette société a été rachetée par Oracle en 2009. Java appartient donc maintenant à Oracle.
Qu’est-ce que Java ?
-
C’est tout d’abord un langage orienté objet. Le langage Java permet donc d’écrire des programmes.
-
C’est ensuite une plateforme de développement. Elle est composée d’un ensemble d’outils, d’un ensemble de bibliothèques formant le JDK (Java SE Developement Kit) et d’un ensemble de spécifications (les JSR - Java Specification Requests) décrivant les différentes API constituant la plateforme.
En réalité, il y a plusieurs plateformes.
La plateforme de base est nommée Java SE (Java Standard Edition). Elle est constituée de l’ensemble des bibliothèques du JDK et de certaines spécifications. Elle répond à la plupart des besoins.
La seconde plateforme est la plateforme Java EE. Son objectif est de permettre la création d’applications distribuées et notamment d’applications web. Cette plateforme s’appuie sur la plateforme Java SE, mais aussi sur des logiciels tiers...
La plateforme Java SE
1. Introduction
La plateforme Java SE peut être représentée de manière synthétique par le schéma suivant :
La plateforme installée sur le poste d’un développeur est le JDK (Java SE Development Kit). Le JDK embarque de facto le JRE (Java Runtime Environment). Le JDK propose des API spécifiques mais surtout des outils d’aide au développement comme le compilateur javac.
La plateforme installée sur le poste cible (sur lequel doit s’exécuter le programme) est le JRE. Il propose l’API Java et des outils nécessaires dans l’environnement d’exécution comme l’outil java permettant de lancer l’exécution d’un programme Java.
La JVM (Java Virtual Machine) fait partie intégrante du JRE. Elle permet l’exécution effective du programme Java passé en paramètre de l’outil java.
L’API Java présente dans le JRE est l’API principale et incontournable pour développer un programme avec le langage Java. L’API Java contient une collection de composants logiciels préfabriqués qui fournissent un grand nombre de fonctionnalités. L’API Java dans sa version 11 (la dernière version LTS - Long Term Support) est organisée en 21 modules regroupant plus de 220 packages, l’équivalent des librairies en langage C. Chaque package contient des classes et interfaces préfabriquées et directement réutilisables. La plateforme met donc à disposition environ 4400 classes et interfaces.
L’objectif de ce livre n’est pas de présenter cette API, toutefois, voici un échantillon de quelques fonctionnalités mises à disposition :
-
lang and util : les packages java.lang et java.util mettent à disposition des fonctionnalités fondamentales nécessaires dans toutes les applications.
-
Collections : le framework de collections met à disposition un large panel de classes et d’interfaces pour manipuler des ensembles d’objets.
-
Reflection : l’API de réflexion présente dans le package java.lang.reflect propose un ensemble de classes et d’interfaces pour découvrir et manipuler les métadonnées des classes d’un programme. Un grand nombre...
La plateforme Jakarta EE
1. Introduction
Le rôle de la plateforme Jakarta EE est d’apporter des bibliothèques (des API) permettant de créer des applications web et plus généralement des applications distribuées.
En 2017, Oracle annonce enfin la sortie de la plateforme Java EE 8 après quatre années d’attente. Pour donner un second souffle à cette plateforme, une réorganisation est nécessaire afin de suivre le rythme soutenu de l’évolution des technologies et des approches. En effet, des projets comme Eclipse MicroProfile ont vu le jour pour corriger ce manque de réactivité et apporter des solutions adaptées aux architectures micro-services, au cloud…
En septembre 2017, la plateforme Java EE est officiellement léguée à la communauté Open Source et c’est la fondation Eclipse qui a été choisie comme garant de l’organisation et de l’évolution de ce projet. Pendant deux ans, la fondation Eclipse s’est donc attachée à rendre Open Source l’ensemble de la plateforme Java EE. La plateforme a été renommée Jakarta EE par la même occasion car le nom Java est propriété d’Oracle. Le travail a été colossal. Il a fallu transférer des millions de lignes de code et définir les nouveaux processus d’évolution. La fondation n’a pas agi seule et s’est entourée de membres pour effectuer ce travail :
-
Fujitsu
-
IBM
-
Oracle
-
Payara
-
RedHat
-
Tomitribe
C’est ainsi que la première version de la plateforme Jakarta EE (Jakarta EE 8) est sortie le 10 septembre 2019. Cette version est équivalente fonctionnellement à la plateforme Java EE 8. Les « vraies » évolutions arriveront avec les prochaines versions de la plateforme. Le projet Eclipse MicroProfile fait partie des incubateurs permettant de proposer de nouvelles fonctionnalités pour les prochaines versions.
Les applications développées avec Java EE 8 n’auront, a priori, pas besoin d’être modifiée pour fonctionner avec la plateforme Jakarta EE 8. C’est différent avec la plateforme Jakarta EE 9 sortie en fin d’année 2020. En effet, Oracle a interdit la modification des packages...
Le protocole HTTP
1. Introduction
Le protocole HTTP (HyperText Transfer Protocol) est incontournable dans la réalisation d’application web. Il convient de connaître ses principales caractéristiques pour réaliser une application efficace.
Le principe repose sur un couple requête/réponse comme le montre le schéma suivant :
Le Client est toujours l’initiateur en envoyant une requête vers le Serveur qui va, en retour, envoyer une réponse. Les requêtes et réponses HTTP sont transportées grâce au protocole TCP/IP (Transmission Control Protocol/Internet Protocol). Avant d’effectuer la requête, il faut donc établir une connexion TCP/IP entre la machine émettrice (le Client) et la machine réceptrice (le Serveur).
Jusqu’à la version 1.0 du protocole HTTP, il y a l’établissement d’une connexion TCP/IP pour chaque couple requête/réponse émis. C’est consommateur de temps et de ressources. Imaginons une requête demandant le contenu d’un fichier HTML référençant un fichier CSS et un fichier JavaScript. Dans ce cas de figure, une première requête sur une connexion TCP/IP est effectuée pour obtenir le fichier HTML. Le navigateur traite alors le contenu de ce fichier et découvre la présence de références vers deux fichiers ressources complémentaires. Il y a donc successivement l’établissement de deux connexions TCP/IP pour exécuter une requête permettant de récupérer les deux ressources.
La version 1.1 du protocole HTTP permet à plusieurs couples requête/réponse d’être transportés successivement sur la même connexion TCP/IP. Cela permet d’améliorer les performances. Cependant, l’évolution de la richesse du contenu d’une page web a de nouveau limité les performances du transport de l’information. Pour pallier ce problème, les fournisseurs de navigateurs ont donc choisi d’augmenter le nombre de connexions TCP/IP simultanées (jusqu’à six) entre le client et le serveur. Cela permet donc d’effectuer jusqu’à six requêtes simultanées. Cette solution trouve aujourd’hui ses limites car elle...
L’environnement de développement
1. Tomcat
Tomcat est le serveur d’applications choisi pour mettre en œuvre les technologies de la plateforme Jakarta EE.
a. Téléchargement
Au moment de l’écriture de l’ouvrage, la dernière version téléchargeable est Tomcat 10.0.7 à l’adresse suivante : https://tomcat.apache.org/download-10.cgi. Cette version doit être utilisée pour pouvoir profiter de la plateforme Jakarta EE 9.
Si vous évoluez dans un environnement Windows, privilégiez la version compressée (apache-tomcat-10.0.7-windows-x64.zip pour la version 64 bits) et non pas l’installeur. En effet, un service est automatiquement installé avec l’installeur. Ce n’est pas l’idéal dans un environnement de développement.
N’hésitez pas non plus à télécharger la documentation complète. Pour la version utilisée, le nom de l’archive est apache-tomcat-10.0.7-fulldocs.tar.gz accessible à la même adresse.
b. Installation sur Windows
L’installation est simple. Il suffit de décompresser l’archive correspondant à votre système d’exploitation dans le répertoire de votre choix.
L’opération n’est pas plus compliquée dans un environnement de développement. L’installation dans un environnement de production demande quelques opérations complémentaires.
Faites la même opération pour l’archive de la documentation. Comme c’est un fichier d’extension tar.gz, renouvelez l’opération de décompression deux fois de suite. La première décompression permet d’obtenir un fichier compressé nommé apache-tomcat-10.0.7-fulldocs.tar. Ensuite, la décompression de ce fichier permet d’obtenir un répertoire nommé tomcat-10.0-doc. Je vous conseille de déposer ce répertoire dans le répertoire contenant Tomcat.
Voici l’arborescence de fichiers et de répertoires que vous devez obtenir :
Le répertoire lib contient les librairies composant Tomcat. Deux librairies sont rapidement identifiables :
-
servlet-api.jar
-
jsp-api.jar
Elles correspondent toutes les deux à l’implémentation des spécifications...
Les exemples du livre
1. Introduction
L’ouvrage est parsemé d’exemples pour décrire le fonctionnement et le comportement des API abordées. Afin d’avoir une certaine homogénéité, tous ces exemples proviennent d’une ébauche d’application qui a pour but de gérer la clientèle d’un complexe sportif.
2. Description fonctionnelle
La première version de l’application va permettre de :
-
Gérer un annuaire des clients.
Lorsqu’un nouveau client arrive dans les locaux du complexe sportif, ses coordonnées sont demandées pour créer son compte.
-
Gérer les terrains du complexe et les sports praticables sur chacun d’entre eux.
-
Gérer les carnets d’entrées donnant accès aux terrains de sport.
Pour accéder à un terrain de sport, le client doit fournir un ticket. Il peut acheter les tickets par carnet. Un carnet est associé à un seul sport car les tarifs sont différents.
-
Laisser des messages.
Les clients peuvent laisser des messages afin de trouver des partenaires.
3. Le diagramme de classes d’analyses
Le diagramme de classes d’analyses qui en découle est le suivant :
Il présente les classes nécessaires à l’organisation des données manipulées par l’application. Prêtez attention aux relations bidirectionnelles....
Conclusion
Ce chapitre a présenté la plateforme Jakarta EE, les fondamentaux du développement web avec le protocole HTTP, l’environnement de développement qui va être utilisé dans les prochains chapitres et le sujet fonctionnel qui va accompagner le lecteur dans la suite de l’ouvrage. Maintenant que le décor est planté, il est temps d’entrer dans le vif du sujet.