Quelle est la différence entre un serveur certifié Java EE Web Profile (comme JOnAS) et un serveur certifié Java EE Full Platform (comme JBoss AS)?
Voici une belle image qui l'explique. Le profil Web est un sous-ensemble de Java EE et son but est de permettre aux développeurs de créer des applications plus légères qui peuvent être utilisées dans un simple conteneur de servlet (comme Tomcat ou Jetty).
Fin 2017, Oracle a confié la responsabilité de Java EE à Eclipse Foundation . Les futures versions après Java EE 8 seront connues sous le nom de Eclipse Enterprise For Java (EE4J) . Ou Projet EE4J . Ou peut-être EE.next . Ou Jakarta EE . La marque a changé au cours des derniers mois.
Dans le cadre de la transition d'Oracle, l'équipe Eclipse rééditera Java EE 8 sous la forme Jakarta EE 8 en utilisant sa nouvelle infrastructure pour le logement code et faire des builds. Même comportement EE, même dénomination interne et même structure de package. Par conséquent, les problèmes abordés ci-dessous concernant le profil Web Java EE et la plate-forme complète Java EE continueront de s'appliquer.
Cependant, la prochaine version apportant de nouvelles fonctionnalités (Jakarta EE 9) nécessitera probablement une nouvelle dénomination des packages et éventuellement la dénomination des différentes API qui composent EE. Donc, même si vous pourrez probablement vous attendre à une compatibilité ascendante dans le comportement, les changements de nom signifieront que la version 9 et plus tard ne sera pas un binaire insérable remplacement. Pas la fin du monde. Cela peut signifier aussi peu que vous modifiez les noms de package import
dans vos différents fichiers de classe. Lisez ceci et ceci pour les détails et les liens.
De plus, l'équipe Eclipse et la communauté Jakarta EE seront libres de redéfinir ou de réorganiser les différentes parties de EE. Par conséquent, la discussion Java EE Web Profile contre Java EE Full Platform ci-dessous peut ne pas s'appliquer directement à Jakarta EE 9 et versions ultérieures.
Autre remarque si vous utilisez des versions plus récentes de Java SE sous-jacentes à EE… Dans Java SE 11, certains modules sont supprimés. Les pièces liées à Java EE déménagent dans une nouvelle maison du projet Jakarta EE. D'autres tels que CORBA ont été proposés à l'adoption par toute organisation intéressée. Voir JEP 32 .
Java EE 8 est sorti en 2017. Voir historique des versions .
Voir JSR 366: Java Platform, Enterprise Edition 8 (Java EE 8) Specification pour plus de détails.
Java EE est un surensemble de Java Standard Edition (Java SE) . Toute implémentation de Java EE 8 est également une implémentation de Java SE 8 ou version ultérieure.
Voir une liste des technologies Java EE 8 publiée par Oracle, avec des liens vers les JSR et les spécifications.
Les technologies suivantes doivent être présentes dans tous les profils Java EE:
• Java SE version 8 (ou version ultérieure)
• Annotations du cycle de vie des ressources et des composants définies par la spécification Common Annotations (Resource, Resources, PostConstruct, PreDestroy)
• JNDI Contexte de nommage "Java:"
• Java API de transaction (JTA)
Profil Web est un sous-ensemble spécifique de la plate-forme EE complète Java, se concentrant sur les éléments couramment utilisés. Implémenté par des produits tels que Apache TomEE ou presque avec Eclipse Jetty plus modules complémentaires .
• Éléments de niveau de base requis par tous les profils Java EE (répertoriés ci-dessus: Java SE 8, annotations de cycle de vie, contexte JNDI
Java:
Et JTA)• Servlet 4.0 ( JSR 369 )
• Pages JavaServer (JSP) 2.3
• Expression Language (EL) 3.0 ( JSR 341 )
• Prise en charge du débogage pour d'autres langues (JSR-45) 1.0
• Bibliothèque de balises standard pour les pages JavaServer (JSTL) 1.2
• JavaServer Faces (JSF) 2.3 ( JSR 372 )
• Java API pour les services Web RESTful (JAX-RS) 2.1
• Java API pour WebSocket (WebSocket) 1.1 ( JSR 356 )
• Java API pour le traitement JSON (JSON-P) 1.1 ( JSR 374 )
• Java API pour la liaison JSON (JSON-B) 1.0 ( JSR 367 )
• Annotations courantes pour la plate-forme Java (JSR-250) 1.3 • Enterprise JavaBeans (EJB) 3.2 Lite
• Java API de transaction (JTA) 1.2
• Java API de persistance (JPA) 2.2
• Validation du bean 2.0 ( JSR 38 )
• Beans gérés 1.0
• Intercepteurs 1.2
• Contextes et injection de dépendances pour la plate-forme EE Java 2.0
• Injection de dépendances pour Java 1.0
• Java EE Security API 1.0
• Java Interface du fournisseur de services d'authentification pour les conteneurs (JASPIC) 1.1
Comme alternative plus légère à l'utilisation d'une implémentation de profil Web, vous pouvez commencer par une implémentation de servlet/JSP Java telle que Apache Tomcat ou Eclipse Jetty . Bien qu'elle ne soit pas officielle en tant que profil, cette approche est très populaire. Parfois appelé conteneur Web .
• Servlet
• Pages JavaServer (JSP)
• Langage d'expression (EL)
• JNDI
Lorsque vous utilisez cette configuration, vous pouvez ajouter de manière sélective des bibliothèques indépendantes pour bénéficier de manière sélective des différentes technologies Java EE. Par exemple, pour mon propre travail de création d'applications Web en utilisant Vaadin Framework , j'utilise Java SE plutôt que EE, avec Tomcat , et j'ajoute Bean Validation bibliothèque d'implémentation manuellement car c'est tout ce dont j'ai besoin dans la liste de technologies Java EE.
Les technologies suivantes sont requises:
• Tous les éléments du profil Web
• EJB 3.2 (à l'exception des beans d'entité EJB et des EJBQL associés, qui ont été rendus facultatifs)
• JMS 2.0
• JavaMail 1.6
• Connecteur 1.7
• WebServices 1.4
• Concurrency Utilities 1.0
• Lot 1.0
• Java EE Management 1.1
• JACC 1.5
• Débogage JSP 1.0
• Métadonnées des services Web 2.1
Les technologies suivantes sont facultatives:
• EJB 3.2 et beans entité antérieurs et EJB QL associés
• JAX-RPC 1.1
• JAXR 1.0
• Java EE Deployment 1.2
Voici un diagramme montrant les groupes d'exigences imbriqués.
La liste au-dessus de ce diagramme peut être plus précise; ce diagramme n'a pas été revérifié.
spécification Java EE 6 (JSR 316) contient les listes suivantes:
Les technologies suivantes sont requises:
- EJB 3.1
- Servlet 3.0
- JSP 2.2
- EL 2.2
- JMS 1.1
- JTA 1.1
- JavaMail 1.4
- Connecteur 1.6
- Services Web 1.3
- JAX-RPC 1.1
- JAX-WS 2.2
- JAX-RS 1.1
- JAXB 2.2
- JAXR 1.0
- Java EE Management 1.1
- Java EE Deployment 1.2
- JACC 1.4
- JASPIC 1.0
- Débogage JSP 1.0
- JSTL 1.2
- Métadonnées des services Web 2.1
- JSF 2.0
- Annotations courantes 1.1
- Java Persistence 2.0
- Bean Validation 1.0
- Managed Beans 1.0
- Contextes et injection de dépendances pour Java EE 1.0
- Injection de dépendances pour Java 1.0
Il n'y a pas de technologies optionnelles.
Les technologies suivantes sont des composants requis du profil Web:
- Servlet 3.0
- Pages JavaServer (JSP) 2.2
- Langage d'expression (EL) 2.2
- Prise en charge du débogage pour d'autres langues (JSR-45) 1.0
- Bibliothèque de balises standard pour les pages JavaServer (JSTL) 1.2
- JavaServer Faces (JSF) 2.0
- Annotations courantes pour la plate-forme Java (JSR-250) 1.1
- Enterprise JavaBeans (EJB) 3.1 Lite
- API de transaction Java (JTA) 1.1
- API Java Persistence (JPA) 2.0
- Bean Validation 1.0
- Managed Beans 1.0
- Intercepteurs 1.1
- Contextes et injection de dépendances pour la plateforme Java EE Platform 1.0
- Injection de dépendances pour Java 1.06
Il n'y a aucun composant facultatif dans le profil Web.
Pour Java EE 7, il y a liste de toutes les technologies EE, indiquant également celles qui sont incluses dans le profil Web. Certaines technologies qui n'étaient auparavant disponibles que dans le profil complet sont désormais inclus dans le profil Web, comme JAX-RS.