JEE Back-end

Introduction

Java Jakarta Enterpise Edition (JEE)

JEE est une plate-forme logicielle qui définit:

  • des spécifications,
  • et des APIs.

... pour écrire des applications Java pour l'entreprise.

JEE = Java SE + des spécifications (interfaces, anotations, ...).

De nombreux frameworks implémentent tout ou partie des spécifications de JEE : Spring, Quarkus, Hibernate, ...

La version courante de JEE est 1.10. Cette version n'a rien à voir avec la version du langage Java (SE). Officiellement, JEE 1.10 est compatible avec Java 17.
D'après mes tests, tout semble marcher avec Java 21.

javax vs jakarta

Pour des raisons de copyright, JEE ne peut plus utiliser le nom Java dans le code de JEE.

Progressivement, le package javax est remplacé par le package jakarta.

Attention, les versions 5.x de Spring sont basées sur le package javax.

Les versions 6.x de Spring que nous allons utiliser sont basées sur le package jakarta.

Vue d'ensemble d'une application Web

Une application Web (2/2)

  • Front-end : clients
  • Back-end : middleware + BDD
  • Contrôleurs : Points d'entrée/sortie entre les clients et le middleware

Les clients communiquent avec le back-end en HTTP:

  • en HTTP pur (GET,POST, ...) pour les clients légers.
    Dans un client léger, c'est le serveur qui calcule le vue (i.e., le HTML) du client. Le serveur renvoie l'intégralité de la vue à chaque action du client.
  • en REST (JSON via HTTP) pour les clients lourds
    Dans un client lourd, le client met à jour, la vue en faisant des requêtes à l'API du serveur.
    En général, les clients lourds sont soit des applications natives soit des applications codées dans un framework JavaScript comme Angular, React, ...

JEE pour qui et pourquoi ?

JEE est utilisé pour écrire en Java le back-end d'applications Web:

  • pour des projets d'envergure qui doivent évoluer sur une longue période (banque, etc.)
  • évolutions technologiques inévitables et difficilement anticipables (applications mobiles, big data, IA, ...)
  • en contre-partie, un code (beaucoup) plus compliqué ...

Cependant des frameworks comme Spring et Spring Boot, sont aussi utilisés pour des projets de moindre envergure.

Avantages JEE

  • Une architecture d'applications qui respecte les principes SOLID, basée sur les composants logiciels:
    • découpage de l'application,
    • séparation des rôles,
    • possibilités de tests unitaires.
  • On code pour l'API de JEE et l'on peut choisir n'importe quel framework qui implémente cette API.
    Par exemple, si l'on utilise la Java Persistence API (JPA), on peut utiliser n'importe quel ORM qui implémente la JPA comme Hibernate, EclipseLink, ...

Objectifs du cours

Le cours a pour but de :

  • comprendre les concepts sur lesquels JEE est basé,
  • connaître le minimum de jargon de JEE pour pouvoir briller en entretient d'embauche,
  • être capable de réaliser le back-end d'une application de complexité modérée en JEE.

Pour illustrer ce cours, nous allons utiliser des frameworks précis implémentant la norme JEE :

  • Spring pour le middleware,
  • Hibernate-JPA pour l'ORM.

Spring

Spring est un framework Java open-source qui implémente les spécifications JEE et fournit d'autres modules qui ne sont pas dans la spécification.

  • Rod Johnson (2002)
  • Version 6 qui supporte Java 17
  • Très modulaire
  • Simple : point de vue unifié
  • Rapide : serveur léger (Attention au passage à l'échelle)
  • Testable

Schéma architecture Spring

Plan du cours

Les 8 premières séances serviront à faire le tour des composants principaux de Spring.

  • Spring Core (2 séances)
  • Controlleurs REST et SpringMVC (2 séances)
  • Hibernate et Spring Data (4 séances)

Les 3 séances suivantes seront à dédiées à des sujets plus pointus :

  • sécurité
  • programmation réactive
  • performance d'Hibernate
  • ...

Evaluation

  • Vous déposerez votre code sur elearning avant chaque nouvelle séance.
  • Un examen sur table sur les concepts vus en cours.
  • Un projet à réaliser par groupe de 5 max.
    • Le projet sera donné fin Novembre,
    • Il servira de support pour votre évaluation du cours de Gestion de projets.
    • On vous demandera de réaliser de projet en utilisant la méthodologie du cours de Gestion de projets mais je ne vous évalurai que sur le code produit.
    • Il y aura une évaluation sur votre projet et sur votre contribution individuelle au projet.
    • Le projet est obligatoire et n'est pas rattrapable en 2ème session.