# Programmation JEE/Présentation du JEE

* Présentation du JEE
* Le protocole HTTP
* Servlets
* Portlets
* JSP
* JSF
* JSTL
* JDBC
* EJB
* WildFly
* Configurer Eclipse
* Parcourir une API
Modifier ce modèle

## Présentation

JEE (Java Entreprise Edition) est la version entreprise de la plate-forme "Java" qui se compose de l'environnement "JSE" ainsi que de nombreuses API et composants destinés à une utilisation "côté serveur" au sein du système d'information de l'entreprise. Il s'agit donc d'une évolution du Java.
Dès son origine, Java a révolutionné plusieurs domaines de l'informatique, que ça soit la téléphonie, l'internet ou les applications d'entreprise. Par la suite, Sun avait réorganisé son offre autour de trois briques :
* Java Micro Edition (JME) qui cible les terminaux portables.
* Java Standard Edition (JSE) qui vise les postes clients.
* Java Entreprise Edition (JEE) qui définit le cadre d'un serveur d'applications et d'intégration.

## La plate-forme JEE

JEE (Java Entreprise Edition) est une norme qui va spécifier à la fois l'infrastructure de gestion de vos applications et les API des services utilisées pour concevoir ces applications.
Cette technologie se compose de :
* Servlets,
* Portlets,
* JSP : JavaServer Pages,
* JSF : JavaServer Faces,
* Bibliothèque JSTL,
* EJB : Enterprise JavaBeans,
* JNDI : API de connexion à des annuaires, notamment des annuaires LDAP, et espace de noms d’objet (ENC),
* JDBC : API de connexion à des bases de données,
* Java Message Service (JMS) : API de communication asynchrone par message,
* JCA : API de connexion, notamment à des PGI,
* JavaMail : API de gestion des mails,
* JMX : Extension d’administration des applications,
* JPA : API de gestion de la rémanence des données,
* JTA : API de gestion des transactions,
* Java API for XML Processing (JAXP) : API d’analyse XML,
* JAXM : API de communication asynchrone par XML,
* JAX-RPC : API de communication synchrone par XML, par exemple à l’aide du protocole SOAP,
* JAXB : API de sérialisation par XML,
* JAXR : API de gestion des registres XML, permettant d’enregistrer des Web Services en ebXML,
* Java RMI : API de communication distante entre des objets Java,
* Java IDL : API de communication entre objets Java et objets non-Java, via le protocole CORBA.
La plateforme JEE est essentiellement un environnement fournissant :

### Environnement d'exécution de JEE

Un des avantages majeurs de JEE est de faire abstraction de l'infrastructure d'exécution. En effet, JEE spécifie les rôles et les interfaces pour les applications, ainsi que l'environnement d'exécution dans lequel les applications sont déployées. Ceci permet aux développeurs d'application de ne pas avoir à reprogrammer les services d'infrastructure.

### Les API JEE

* L'API JEE 5 est [ici]
* L'API JEE 6 est [ici]
Les API sont des Outil logiciel, constitué d'un ensemble de modules dotés de fonctions communes, et qui permet de produire automatiquement des applications Java ou des applets personnalisés.
Parmi ses composants les plus courants, on trouve :
* EJB (Enterprise JavaBeans Technology)
L'EJB, environnement d'exécution fournissant des services (sécurité, communications, cycle de vie...), définit comment les composants serveurs sont écrits et fournit un lien standard entre le composant et l'application qui l'utilise. Un client n'accède donc jamais directement à un composant et doit pour cela passer par une interface locale et une interface distance. L'interface locale décrit le cycle d'existence du composant en définissant des méthodes permettant de le trouver, de le créer, de le détruire. Et L'interface distante spécifie les méthodes que ce composant présente au monde extérieur.
* JDBC (Java Database Connectivity)
Une API qui permet aux programmes Java d'interagir avec les bases de données relationnelles (type SQL).
* Servlet et JSP (JavaServer Pages)
Composants réseau qui sont destinés à une exécution orientée question / réponse. La technologie JSP est une extension de la notion de Servlet permettant de simplifier la génération de pages web dynamiques. JSP est un concurrent direct de l'ASP et du PHP. Un servlet est un composant côté serveur, écrit en Java, dont le rôle est de fournir une trame générale pour l'implémentation de paradigmes "requête / réponse". Ils remplacent les scripts CGI tout en apportant des performances bien supérieures.
* JMS (Java Message Service)
Permet à 2 composants d'applications JEE de créer, envoyer et recevoir des messages.
* JTA (Java Transaction API) et JTS (Java Transaction Service)
Les spécification JTA et JTS permettent aux composants d'être renforcés par un support des transactions.
* JavaMailTM Technology
Permet l'envoi d'e-mails d'une manière indépendante de la plate-forme et du protocole.
* JAF (JavaBeans Activation Framework)
Utilisé par JavaMail, JAF permet de déterminer le type d'un flux de données, son accès, et les opérations possibles sur lui.
* JAXP (Java API for XML)
Cette API permet de manipuler, créer et modifier des documents XML. JAXP supporte les parseur DOM (Document Object Model) et SAX (Simple API for XML).
* JEE Connector
Facilite les connexions aux plates-formes autres que JEE.
* JAAS (Java Authentication and Authorization Service)
Permet aux applications JEE d'authentifier et d'autoriser l'exécution par les utilisateurs.
* JNDI
Extension Java standard qui fournit une API permettant de localiser et d'utiliser des ressources : il peut y avoir un appel à des services CORBA, DNS, NIS, LDAP...

## Développement d'application JEE

Une application JEE commence par la création de composants JEE.
Ces composants sont ensuite regroupés en modules auquel on associe des descripteurs de déploiement.
Ces modules JEE peuvent ensuite être déployés comme application à part entière ou être assemblés avec un descripteur de déploiements JEE et être déployés en tant qu'application JEE.