Java EE

Pourquoi étudier une plate-forme ?

backend architecture

Notion de plate-forme

  • Environnement d’exécution

  • Fournit des services standards

    • Une spécification unique

    • De multiples implémentations

Java Enterprise Edition

  • Plate-forme bâtie au-dessus du langage Java

    • Java SE

    • Java ME

  • Ensemble de spécifications

    • Une par fonctionnalité

    • API

    • Oracle est l’éditeur

    • Des tiers fournissent les implémentations

Exemples d’API

APIFonctionnalité

JTA

Gère les transactions distribuées

JavaMail

Crée, envoie et réceptionne les mails

JAX-WS

Génère et appelle des web services SOAP

JAX-RS

Génère et appelle des web services REST

CDI

Injection de dépendances

Implémentation de référence

  • Preuve formelle qu’il est possible d’implémenter la spécification

  • Responsabilité du Spec Lead

  • Exemple :

    • Weld est la RI de CDI

Spécification vs. implémentation

  • Séparation nette

    • Via des composants séparés (JAR)

Spécification vs implémentation

Technology Compatibility Kit

  • Ensemble des tests de chaque spécification

  • Permet à une plate-forme d’être certifiée compatible avec une version de Java EE

  • Disponible sous license GPL

Versions

  • Une version unique pour la plate-forme

    • La version actuelle est 1.7

  • Une version spécifique pour chaque API, par exemple :

    • JTA 1.1

    • JMX 1.0

Historique

Historique des versions de Java EE

Serveur d’applications

  • Offre les fonctionnalités de Java EE via les API

  • Permet la portabilité d’applications Java EE entre différents serveurs d’applications

    • Portabilité toute relative

Principaux éditeurs

EditeurServeur d’appsLicense

IBM

Websphere AS

Commercial

Oracle

WebLogic

Commercial

Red Hat

WildFly

LGPL 2.1

Tomitribe

TomEE

Apache v2

Payara

Payara Server

CDDL / GPL v2

Containers de servlets

EditeurServeur d’appsLicense

Apache

Tomcat

Apache v2

Eclipse

Jetty

Apache v2 / EPL

Profils

  • Travail énorme pour implémenter l’intégralité des API Java EE

    • Permet de faciliter l’entrée de nouveaux acteurs avec des sous-ensembles

  • Profils disponibles :

    • Full

    • Web

    • Micro (Non standard !)

java eefullprofile
java eewebprofile

Archives

NomAcronymeExtension

Java Archive

JAR

.jar

JAR d’EJB

EJB JAR

.jar

Resource Archive

RAR

.rar

Web Archive

 WAR

.war

Enterprise Archive

EAR

.ear

archives

Bibliothèque d’un serveur d’applications

  • Comporte de nombreux JAR

  • Un (ou plusieurs) JAR par fonctionnalité

    • Standard

    • Non-standard

wildfly jars

Descripteur de déploiement

A deployment descriptor describes how a component, module or application should be deployed.

https://en.wikipedia.org/wiki/Deployment_descriptor
— Wikipedia

Descripteurs de déploiement

ArchiveDescripteur de déploiement

JAR

META-INF/MANIFEST.MF

JAR d’EJB

META-INF/ejb-jar.xml

WAR

WEB-INF/web.xml

EAR

META-INF/application.xml

Exemple : MANIFEST.MF

Main-Class: ch.frankel.app.EntryPoint

Déploiement d’applications

  • Une application est déployée dans un serveur d’applications

    • La norme Java EE garantit l’interopérabilité

    • Le déploiement d’applications est spécifique au type serveur d’applications