Présentation de JEE et de son écosysteme

79
Java Enterprise Edition et son écosystème Stéphane Traumat (Scub)

description

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.

Transcript of Présentation de JEE et de son écosysteme

Page 1: Présentation de JEE et de son écosysteme

Java Enterprise Editionet son écosystème

Stéphane Traumat (Scub)

Page 2: Présentation de JEE et de son écosysteme

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.

Page 3: Présentation de JEE et de son écosysteme

Avant de commencer...une courte présentation de

Scub et de moi même

Page 4: Présentation de JEE et de son écosysteme

Scub - Présentation

Notre métier depuis 2003 : Conception, réalisation et mise en œuvre du système d'information des entreprises et des administrations.

Nos services sont centrés sur le développement d'applications et l'intégration de systèmes avec une spécialisation sur les frameworks légers et les architectures orientées services (SOA).

Nous sommes une équipe de 9 personnes basée à Angoulême.

Page 5: Présentation de JEE et de son écosysteme

Scub - Présentation

Trois métiers :

Conseil (SDI, Open Source, Socle technique...).

Ingénierie Java (Architecture, SOA, formation...).

Décisionnel (ETL, Infocentres, OLAP...).

Page 6: Présentation de JEE et de son écosysteme

Stéphane Traumat

Dirigeant de la société Scub.

Architecte Java sur d'importants projets (RATP, SMATIS...)

Conseil en technologie (CNAV, Objectweb...).

Commiteur sur le serveur d'applications JOnAS.

Auteur du livre JOnAS Live (publié par Sourcebeat).

Conférencier (Solutions Linux, Free software meeting, Foss-bridge, Université de La Rochelle...)

Page 7: Présentation de JEE et de son écosysteme

Qu'est ce que Java et JEE ?

Page 8: Présentation de JEE et de son écosysteme

Qu'est ce que Java ?

Java est à la fois :Un langage de programmation.Une plateforme d'exécution.

Page 9: Présentation de JEE et de son écosysteme

Qu'est ce que Java ?

Java offre une API (Interface de programmation) qui est une collection de composants prêt à l'emploi.

Page 10: Présentation de JEE et de son écosysteme

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.

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.

Page 11: Présentation de JEE et de son écosysteme

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.

Page 12: Présentation de JEE et de son écosysteme

Qu'est ce que JEE ?

JEE définit ce qui doit être fournit mais ne dit pas comment cela doit être fournit. 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.

Page 13: Présentation de JEE et de son écosysteme

Qu'est ce que JEE ?

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

Page 14: Présentation de JEE et de son écosysteme

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 l'autre. Le concepteur de la centrale nucléaire n'a pas à savoir comment marche un cafetière et vice et versa.

La cafetière peut être remplacée par un aspirateur et la centrale nucléaire par une éolienne.

Page 15: Présentation de JEE et de son écosysteme

Qu'est ce que JEE ?

Le même principe appliquée à la programmation :import javax.naming.*;

public class Lookup {

public static void main(String[] args) {

Context initialContext = new InitialContext(props);

Object obj = initialContext.lookup("test");

if (name.equals(""))

System.out.println("Pas trouvé !");

else

System.out.println("Trouvé);

}

}

Ce qu'il faut noterLe code est indépendant

de l'implémentation.

On peut changer de fournisseur sans

changer son code !

la méthode lookup est différente chez oracle et

chez ibm...

Page 16: Présentation de JEE et de son écosysteme

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.

Page 17: Présentation de JEE et de son écosysteme

Qu'est ce que JEE ?

Exemple de serveurs d'applications JEE :IBM WebsphereBEA WeblogicOracle 9i ASJBossJOnASGeronimo...

Une application JEE "standard" peut fonctionner dans n'importe quel conteneur en modifiant seulement sa configuration.

Page 18: Présentation de JEE et de son écosysteme

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.

Page 19: Présentation de JEE et de son écosysteme

Comment se fait l'évolution de Java ?

Page 20: Présentation de JEE et de son écosysteme

Comment se fait l'évolution de Java ?

L'évolution du langage Java est piloté 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 : http://www.jcp.org

Page 21: Présentation de JEE et de son écosysteme

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.

Page 22: Présentation de JEE et de son écosysteme

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.

Page 23: Présentation de JEE et de son écosysteme

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.

Page 24: Présentation de JEE et de son écosysteme

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 ?

Page 25: Présentation de JEE et de son écosysteme

Comment se fait l'évolution de Java ?

La réponse : OUI

Pourquoi ?Erreurs du JCP (Hibernate...)Nouvelles façons (Spring...)Sujets non couverts (Maven...)

Page 26: Présentation de JEE et de son écosysteme

Comment se fait l'évolution de Java ?

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

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 EJB 3 prennent le meilleur d'hibernate => Succès.

Page 27: Présentation de JEE et de son écosysteme

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.

Page 28: Présentation de JEE et de son écosysteme

Les architectures SOA

Page 29: Présentation de JEE et de son écosysteme

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

Page 30: Présentation de JEE et de son écosysteme

C'est la fin des silos !

Page 31: Présentation de JEE et de son écosysteme

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.

Page 32: Présentation de JEE et de son écosysteme

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 !

Page 33: Présentation de JEE et de son écosysteme

Les technologies(JSR)

Page 34: Présentation de JEE et de son écosysteme

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.

Page 35: Présentation de JEE et de son écosysteme

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(); }

}

Page 36: Présentation de JEE et de son écosysteme

Les technologies

PortletUne 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...

Page 37: Présentation de JEE et de son écosysteme

Exemple de portail

Page 38: Présentation de JEE et de son écosysteme

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!"); }}

Page 39: Présentation de JEE et de son écosysteme

Les technologies

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.

Page 40: Présentation de JEE et de son écosysteme

Les technologies

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

<%! int nombreVisites = 0; %>

<% // Code JavaDate 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>

Page 41: Présentation de JEE et de son écosysteme

Les technologies

Java Server Face (JSF)Cette technologie est un framework qui a pour but de simplifier le développement d'interfaces utilisateurs. Bien qu'il permette de faire tout type d'interface, il est surtout vu comme une amélioration des JSP.

Fonctionne dans un conteneur web comme tomcat.

Page 42: Présentation de JEE et de son écosysteme

Les technologies

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>

Page 43: Présentation de JEE et de son écosysteme

Les technologies

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...

Page 44: Présentation de JEE et de son écosysteme

Les technologies

Exemple d'un EJB entité /

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

}

Page 45: Présentation de JEE et de son écosysteme

Les technologies

Exemple d'un EJB de session :

@Statelesspublic class StatelessSessionBeanImpl implements StatelessSessionBean {

public String sayHello() { return ("Hello world !"); }

}

Page 46: Présentation de JEE et de son écosysteme

Les technologies

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 !"); }

}

Page 47: Présentation de JEE et de son écosysteme

Les technologies

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 l'annuaire du serveur d'applications. Un objet peut donc en retrouver un autre grâce à l'annuaire.

Page 48: Présentation de JEE et de son écosysteme

Les technologies

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.

Page 49: Présentation de JEE et de son écosysteme

Les technologies

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.

Page 50: Présentation de JEE et de son écosysteme

Les technologies

JavaMailCette API permet l'envoi et la réception d'emails.

Page 51: Présentation de JEE et de son écosysteme

Les technologies

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.

Page 52: Présentation de JEE et de son écosysteme

Les technologies

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.

Page 53: Présentation de JEE et de son écosysteme

Les technologies

XMLJava dispose de toutes les API nécessaires au traitement du XML.

Page 54: Présentation de JEE et de son écosysteme

Les technologies

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.

Page 55: Présentation de JEE et de son écosysteme

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.

Page 56: Présentation de JEE et de son écosysteme

Avant de continuer...

Page 57: Présentation de JEE et de son écosysteme

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 !

Page 58: Présentation de JEE et de son écosysteme

Les frameworks

Page 59: Présentation de JEE et de son écosysteme

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.

Page 60: Présentation de JEE et de son écosysteme

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....

Page 61: Présentation de JEE et de son écosysteme

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'archiecture Modèle-Vue-Contrôleur.

Page 62: Présentation de JEE et de son écosysteme

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.

Page 63: Présentation de JEE et de son écosysteme

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.

Page 64: Présentation de JEE et de son écosysteme

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...

Page 65: Présentation de JEE et de son écosysteme

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.

Page 66: Présentation de JEE et de son écosysteme

Le middleware

Page 67: Présentation de JEE et de son écosysteme

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.

Page 68: Présentation de JEE et de son écosysteme

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.

Page 69: Présentation de JEE et de son écosysteme

Anatomie d'un serveur JEE

Page 70: Présentation de JEE et de son écosysteme

Le middleware

Serveurs d'applications du marché :JBoss (Fondation JBoss)Apache Geronimo (Fondation Apache)JOnAS (Objectweb)Oracle Application Server 10gResinSAP NetWeaverGlassfish (Sun)WebSphere Application Server (IBM)WebLogic (BEA)...

Page 71: Présentation de JEE et de son écosysteme

Le middleware

Les portails.

Les portails permettent d'éxecuter les portlets.

Oracle PortalApache PlutoBEA Weblogic PortalVignette portals

Page 72: Présentation de JEE et de son écosysteme

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.

Page 73: Présentation de JEE et de son écosysteme

Schéma de fonctionnement d'un ESB

Page 74: Présentation de JEE et de son écosysteme

Le middleware

Ce qu'il faut retenir :Les serveurs d'application sont la pierre angulaire de ces architectures.

Les ESB ont remplacé les EAI.

Page 75: Présentation de JEE et de son écosysteme

Les outils

Page 76: Présentation de JEE et de son écosysteme

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.

Page 77: Présentation de JEE et de son écosysteme

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.

Page 78: Présentation de JEE et de son écosysteme

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 impressionnant de plugins existants.

Page 79: Présentation de JEE et de son écosysteme

Questions ?

Questions / Réponses ?

Visitez notre blog : http://www.scub.net/blog !