Vous êtes sur la page 1sur 75

Java Enterprise Edition

et son écosystème
Plan de la présentation

Qu'est ce que Java et JEE ?


Comment se fait l'évolution de Java ?
Les architectures SOA.
Les Technologies(JSR).
Les frameworks.
Le middleware.
Les outils.
Qu'est ce que Java et JEE ?
Qu'est ce que Java ?

Java est à la fois :


Un langage de programmation.
Une plateforme d'exécution.
Qu'est ce que Java ?

Java offre des APIs (Interface de programmation) qui sont


une collection de composants prêts à l'emploi.
Qu'est ce que JEE ?

JEE est la version "entreprise" de Java, elle a pour but de


faciliter le développement d'applications distribuées.
Mais en fait, JEE est avant tout une norme,un ensemble
de spécifications.

C'est un ensemble de standard décrivant des services


techniques comme, par exemple, comment accéder à un
annuaire, à une base de données, à des documents...

Important : JEE définit ce qui doit être fournit mais ne dit


pas comment cela doit être fournit.
Qu'est ce que JEE ?

Exemple de services :

JDBC (Java DataBase Connectivity) est une API d'accès


aux bases de données relationnelles.

JNDI (Java Naming and Directory Interface) est une API


d'accès aux services de nommage et aux annuaires
d'entreprises tels que DNS, NIS, LDAP...

JTA (Java Transaction API) est une API définissant des


interfaces standard avec un gestionnaire de transactions.
Qu'est ce que JEE ?

JEE définit ce qui doit être fourni mais ne dit pas


comment cela doit être fourni.

Ceci est une différence majeure par rapport aux précédentes


plateformes. En PHP, VB, Delphi... vous utilisez les fonctions
fournies par l'éditeur.
Vous utilisez à la fois la fonction et son implémentation : si vous
n'êtes pas content de la façon dont Delphi se connecte à
LDAP, vous n'y pouvez rien, ou alors, vous devez vous passer
de l'API et ré-écrire du code.
Qu'est ce que JEE ?

Le principe de séparation est celui de la prise de courant


Qu'est ce que JEE ?

La prise électrique correspond à ce qu'on appelle en Java une


interface.

La prise permet à la cafetière et à la centrale nucléaire de


travailler ensemble sans se connaître l'un et l'autre. Le
concepteur de la centrale nucléaire n'a pas à savoir comment
marche une cafetière et vice et versa.

La cafetière peut être remplacée par un aspirateur et la


centrale nucléaire par une éolienne.
Qu'est ce que JEE ?

Le même principe appliqué à la programmation :


import javax.naming.*;

public class Lookup { Ce qu'il faut noter


public static void main(String[] args) { Le code est indépendant
Context initialContext = new InitialContext(props); de l'implémentation.
Object obj = initialContext.lookup("test");

if (name.equals("")) On peut changer de


System.out.println("Pas trouvé !"); fournisseur sans
else changer son code !
System.out.println("Trouvé);

} la méthode lookup est


} différente chez oracle et
chez ibm...
Qu'est ce que JEE ?

Généralement, les applications JEE fonctionnent à l'intérieur


d'un serveur d'applications (appelé aussi conteneur) qui offre
les services JEE à ces mêmes applications.
Qu'est ce que JEE ?

Exemple de serveurs d'applications JEE :


IBM Websphere
BEA Weblogic
Oracle 9i AS
JBoss
JOnAS
Geronimo
...

Une application JEE "standard" peut fonctionner dans n'importe


quel conteneur en modifiant seulement sa configuration.
Qu'est ce que JEE ?

Ce qu'il faut retenir :


JEE est en ensemble de standard.

JEE décrit des services techniques pour bâtir des


applications d'entreprise.

Tout le monde peut écrire sa propre implémentation du


standard.

Une application JEE s'exécute dans un serveur


d'applications qui est un environnement d'exécution.
Comment se fait l'évolution de
Java ?
Comment se fait l'évolution de
Java ?

L'évolution du langage Java est pilotée par le Java


Community Process (JCP).

Des sociétés, des associations ou des individus peuvent


rejoindre le groupe pour participer et influencer l'évolution du
langage.

Site : https://www.jcp.org
Comment se fait l'évolution de
Java ?

Le JCP émet des Java Specification Requests (JSR), qui


décrivent les spécifications et technologies proposées pour un
ajout à la plateforme Java.

Exemple : la JSR 168 est la spécification des portlets


définissant le contrat entre les conteneurs de portlets et les
portlets.
Comment se fait l'évolution de
Java ?

Des revues publiques formelles des JSRs sont menées avant


qu'une JSR ne devienne finale et qu'elle ne soit votée par le
comité exécutif du JCP.
Comment se fait l'évolution de
Java ?

Une JSR finale fournit une implémentation de référence qui


offre :

Une implémentation gratuite de la technologie sous la forme


de code source.

Un ensemble de tests - le Technology Compatibility Kit


(TCK) - pour vérifier la compatibilité d'une implémentation
avec la spécification.
Comment se fait l'évolution de
Java ?

La question...

Étant donné l'existence du JCP qui est un processus ouvert, y


a t-il une vie en dehors du JCP ?
Comment se fait l'évolution de
Java ?

La réponse : OUI

Pourquoi ?
• Erreurs du JCP (Hibernate...)
• Nouvelles façons (Spring...)
• Sujets non couverts (Maven...)
Comment se fait l'évolution de
Java ?

Mais ceci est une bonne nouvelle car les membres du JCP sont
désormais intelligents !

Cas des EJB 2.1:


Sortie des EJB 2.1, tout le monde se lance et il s'avère que
c'est une mauvaise norme.
Création du projet libre "Hibernate" => Succès.
Invitation des membres d'Hibernate au JCP sur EJB 3.
Les EJB3 prennent le meilleur d'hibernate => Succès.
Comment se fait l'évolution de
Java ?

Ce qu'il faut retenir :


Le JCP fait la norme JEE.

L'industrie et le monde du libre ne passent pas forcément


par le JCP.

Le JCP intègre souvent les bonnes idées mais cela peut


prendre du temps.
Les architectures SOA
Les architectures SOA

La Service Oriented Architecture est le nouveau mode de


développement des applications.

Dans ce modèle, chaque fonction de chaque application existe


sous forme de service indépendants (creerClient(),
supprimerFacture()...) et chaque service peut communiquer
avec n'importe quel autre service par message.

Une architecture orientée services consiste essentiellement en


une collection de services qui interagissent et communiquent
entre eux
C'est la fin des silos !
Les architectures SOA

Conséquence de l'avènement du SOA : de nouveaux besoins !


Transaction distribuée.
Authentification et autorisation.
Messages asynchrones.
Webservices.
Annuaires.
...

Tous ces services sont des services standard JEE.


Les architectures SOA

Ce qu'il faut retenir :


Les architectures SOA sont l'avenir.

JEE répond aux besoins de ce type d'architecture.

Dans une architecture SOA, il n'y aura pas que du Java !


Les technologies (JSR)
Les Technologies

Servlet
Les servlets sont des applications Java qui fonctionnent dans
un serveur web et qui répondent aux requêtes client.

Le conteneur reçoit la requête du client, et sélectionne la


servlet qui aura à la traiter. Le conteneur fournit également tout
un ensemble de services standards pour simplifier la gestion
des requêtes et des sessions.

Conteneur le plus connu : Tomcat.


Les Technologies
Exemple de Servlet :
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class MyServlet extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {


PrintWriter out = resp.getWriter();
out.println("<html><head><title>Servlet</title></head><body>test</body></html>");
out.close();
}

}
Les Technologies

Portlet
Une portlet est une application Java qui fonctionne et s'intègre
dans un portail. Chaque portlet est indépendant des autres
portlets s'affichant dans la même page.

Exemple de portail : Websphere portal, JBoss portal, Pluto...


Les Technologies
(exemple de Portlet)

Exemple de portail
Les Technologies

Exemple de Porlet :
import java.io.IOException;
import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;

public class HelloWorldPortlet extends GenericPortlet {

protected void doView(RenderRequest request, RenderResponse response)


throws PortletException, IOException {
response.setContentType("text/html");
response.getWriter().write("Hello World!");
}
}
Les Technologies
(JSP)

Java Server Pages (JSP)


Cette technologie permet aux développeurs d'insérer du code
java dans des pages web.

Fonctionne dans un conteneur web.


Les Technologies
(JSP)
Exemple de page JSP
<%@page contentType="text/html"%>
<%@page import="java.util.*"%>
<html>
<head><title>Page JSP</title></head>
<body>

<%! int nombreVisites = 0; %>

<% // Code Java


Date date = new Date();
nombreVisites++;
%>

<h1>Exemple de page JSP</h1>

<p>Au moment de l'exécution de ce script, nous sommes le <%= date %>.</p>


<p>Cette page a été affichée <%= nombreVisites %> fois!</p>
</body>
</html>
Les Technologies
(JSF)

Java Server Face (JSF)


Cette technologie est un framework qui a pour but de simplifier
le développement d'interfaces utilisateurs au travers de la
modernisation de l’écriture des contrôleurs. Bien qu'il permette
de faire tout type d'interface, il est aussi vu comme une
amélioration des JSP.

Fonctionne dans un conteneur web comme tomcat.


Les Technologies
(JSF)
Exemple de page JSF :
 <%@ page contentType="text/html; charset=Cp1252" %>
 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html;
charset=Cp1252"/>
 <title>jsf-title</title>
 </head>
 <body>
 <f:view>
 <h:form>
 UserID: <h:inputText value="#{mgr.userID}"/>
 <br/>Password: <h:inputText value="#{mgr.password}"/>
 <br/> <h:commandButton value="Login" action="#{mgr.loginAction}"/>
 </h:form>
 </f:view>
 </body>
 </html>
Les Technologies
(EJB)
Enterprise Java Bean (EJB)
Les EJB sont des composants logiciels résidant sur le serveur.
Ils permettent :
De représenter des données (Entité).
D'offrir des services (Session).
De réaliser des traitements asynchrones (MDB).

Ils sont accessibles à distance et sont répertoriés dans un


annuaire.

Ils s'exécutent dans un serveur d'application comme Oracle


AS, BEA Weblogic ou IBM Websphere...
Les Technologies
(EJB)

Exemple d'un EJB entité /

@Entity
@Table(name="book")
public class Cat {
@Id
private Integer id;
private String name;

}
Les Technologies
(EJB)

Exemple d'un EJB de session :

@Stateless
public class StatelessSessionBeanImpl implements
StatelessSessionBean {
public String sayHello() {return ("Hello world !");
}

}
Les Technologies
(EJB)
Exemple d'un EJB orienté message :
@MessageDriven(name="LongProcessMessageBean", activationConfig = {
@ActivationConfigProperty(propertyName="destination",
propertyValue="fileAttente")
})
public class LongProcessMessageBean implements MessageListener {
@Resource
private MessageDrivenContext context;
public void onMessage(Message
message) {
System.out.println("Message reçu
!");
}
}
Les Technologies
(JNDI)

Java Naming and Directory Interface (JNDI)


JNDI est une API de connexion à des annuaires comme LDAP.

En JEE, les objets sont souvent référencés dans un annuaire


du serveur d'applications. Un objet peut donc en retrouver un
autre grâce à l'annuaire.
Les Technologies
(JDBC)

Java DataBase Connectivity (JDBC)


Cette API permet aux applications Java d'accéder aux bases
de données.

Il s'agit de la même interface pour toutes les bases de


données, seul le driver change.
Les Technologies
(JMS)

Java Message Service (JMS)


Cette technologie permet d'envoyer et de recevoir des
messages de manière asynchrone entre applications ou
composants Java.

Cette technique est utilisée pour gérer les déconnexions, les


montées en charge ou pour découpler les développements.

Cette technologie est utilisée par les EJB MDB.


Les Technologies
(Java Mail)

JavaMail :
Cette API permet l'envoi et la réception d'emails.
Les Technologies
(JMX)

Java Management Extensions (JMX)


Cette technologie permet de gérer le fonctionnement d'une
application Java en cours d'exécution.

Vous pouvez :
Modifier dynamiquement le comportement de l'application.
Générer des statistiques d'utilisation.
Exécuter des méthodes.
Les Technologies
(JTA)

Java Transaction API (JTA)


Cette technologie permet de piloter les transactions sans avoir
à connaître les détails du gestionnaire de transactions.

Cette API gère aussi transactions distribuées, c'est à dire les


transactions qui peuvent démarrer sur un système et dépendre
du résultat d'autres systèmes.
Les technologies
(XML)

XML
Java dispose de plusieurs API nécessaires au traitement du
XML :

❑ JAXB
❑ SAX
❑ DOM & JDOM
❑ JAXP
❑ Etc..
Les Technologies
(RMI)

Remote Method Invocation (RMI)


Il s'agit d'une API qui permet à des objets Java de
communiquer à distance.

Il s'agit de quelque chose de similaire à Corba ou RPC.


Les Technologies
Ce qu'il faut retenir :
Java dispose d'API pour à peu près tout.

Nous n'avons vu qu'une partie des API disponibles.


Avant de continuer...
Un avertissement...

Le plus gros avantage de Java est aussi son plus gros


inconvénient, il s'agit de :

Sa richesse !

Vous trouverez un nombre impressionnant de façon de faire


une même chose.
Exemple : Comment faire une page web ?
Ça dépend...
Au moins 35 frameworks existent !
Les Frameworks
Les Frameworks

Définition : On va dire qu'il s'agit d'une infrastructure logicielle


qui facilite la conception des applications par l'utilisation de
bibliothèques, de modèles de convention...

De manière plus générale, il s'agit d'une "structure" qui soutient


quelque chose d'autre. Une sorte de squelette qui sert de base
à quelque chose qui est construit.
Les Frameworks

Y a t'il beaucoup de frameworks Java ?


Enormément.

Pourquoi ?
Très grande communauté.
De nombreux besoins.
Différents points de vues.
...
Les Frameworks

Struts, le plus vieux et l'un des plus répandus !

Il permet de développer des applications web en Java en


suivant l'architecture Modèle-Vue-Contrôleur.
Les frameworks

Hibernate, celui qui a fait changer le JCP.

Hibernate permet de gérer la persistence des données, c'est à


dire : plus besoin de SQL . On laisse Java stocker
automatiquement les objets dans la base.
Les Frameworks

Spring, le conteneur léger.

Spring a été crée avec l'idée que JEE était bien trop compliqué
et qu'il vallait mieux coder par Interface que par héritage. Ils ont
rencontré un véritable succès et ils ont popularisé les
approches IOC et AOP qui sont repris dans la nouvelle norme
JEE.
Les Frameworks

GWT, framework de Google pour les applications Ajax.

Vous permet de développer des applications web Ajax,


directement en Java, aussi facilement que vous feriez une
application de bureau classique.
Plus besoin de connaître HTML, Javascript, les navigateurs...
Les Frameworks

Ce qu'il faut retenir :


Java dispose d'un nombre impressionnant de frameworks. Il
y en a même trop.

Cependant, certains de ces frameworks sont tout


simplement fantastiques et il ne faut pas s'en priver.

Tout projet Java utilise des frameworks Open Source.


Le middleware
Le middleware

Définition wikipedia : Un intergiciel (en anglais middleware) est


un logiciel servant d'intermédiaire de communication entre
plusieurs applications, généralement complexes ou distribuées
sur un réseau informatique.

Le middleware est le socle nécessaire à la mise en oeuvre des


applications.
Le middleware

Les serveurs d'applications JEE.

Le serveur d'applications est le conteneur où vont s'exécuter


les applications JEE.

Il offre à ces applications l'ensemble des services JEE.


Le middleware
Serveurs d'applications du marché :
JBoss (Fondation JBoss)
Apache Geronimo (Fondation Apache)
JOnAS (Objectweb)
Oracle Application Server 10g
Resin
SAP NetWeaver
Glassfish (Sun)
WebSphere Application Server (IBM)
WebLogic (BEA)
...
Le middleware
Les portails.

Les portails permettent d'éxecuter les portlets.

Oracle Portal
Apache Pluto
BEA Weblogic Portal
Vignette portals
Le middleware
Enterprise Service Bus (ESB) - "Anciennement EAI"

L'ESB a pour but de permettre aux applications de


communiquer entre elles à travers un bus qui offre un
ensemble de services.
Schéma de fonctionnement d'un ESB
Le middleware
Ce qu'il faut retenir :
Les serveurs d'application sont la pierre angulaire de ces
architectures.

Les ESB ont remplacé les EAI.


Architecture globale cible

• JPA
• Hibernate
• JDBC

• Spring Core
• EJB
Les outils
Les outils

Environnement de développement IDE

Il s'agit des outils qui permettent de développer en Java.


Comme pour les serveurs d'applications, il en existe
beaucoup...
Eclipse (IBM)
Netbeans (Sun)
WSAD (IBM)
IntelliJ (Idea)
JDev (Oracle)

Eclipse avec son ouverture remporte un grand succès.


Les outils

Ant & Maven, Deux outils d'industrialisation des projets.

Ant permet d'automatiser les tâches d'un projet (compilation,


construction, validation, déploiement, lancement...).
Maven, lui, offre une structure de projets et un ensemble de
tâches pré définies.
Les outils

Ce qu'il faut retenir :


Comme pour tous les autres "composants", il existe un
nombre impressionnant d'outils pour le développement.

Eclipse a tout de même le vent en poupe grâce aux


nombres impressionnants de plugins existants.
Questions ?

Vous aimerez peut-être aussi