Java avanc
Download
1 / 93

Java avanc - PowerPoint PPT Presentation


  • 425 Views
  • Uploaded on

Java avancé. Tuyêt Trâm DANG NGOC. Laboratoire PRiSM Université de Versailles-Saint-Quentin. <[email protected]>. Cours CNAM, le 26 novembre 2003. Evolution de Java. Personal Java 1.0 / 1.1 / 1.2.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Java avanc ' - omer


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Java avanc l.jpg

Java avancé

Tuyêt Trâm DANG NGOC

Laboratoire PRiSM

Université de Versailles-Saint-Quentin

<[email protected]>

Cours CNAM, le 26 novembre 2003


Evolution de java l.jpg
Evolution de Java

Personal Java 1.0 / 1.1 / 1.2

FDT, I/O, Collection et Outils, Applet + Thread, AWT + Swing, TCP/ IP + UDP / IP, RMI, New I/O, Expression rationnelle, Image I/O, Java2D, Java3D, JAI, JMF, Son, JCE, JSSE, JAAS

Java2 SDK SE 1.3.0, 1.3.1, 1.4.0

JSP + Servlet + JavaBeans, EJB, RMI-IIOP and CORBA, JNDI, JMS, JDBC, XML

OAK

JDK 1.1

Java2 SDK EE 1.2.1

Java2 SDK EE 1.3.0

JDK1.0

Plateforme Java

Java2 SDK ME (Micro Edition)

Pour téléphones cellulaires PDA, JINI, JIRO **

Plateforme Java2

Java embarqué

  • Java 1.0.2

  • Java 1.1.1 , 1.1.2, 1.1.3, 1.1.8

  • Java 1.2.2

Tuyêt Trâm DANG NGOC - Université de Versailles


Threads l.jpg
Threads

  • Un thread -appelé parfois processus léger - est un uniqueflux de contrôle séquentiel d’un programme.

  • On peut utiliser les threads afin d’isoler des tâches.

Tuyêt Trâm DANG NGOC - Université de Versailles


Vie et mort d un thread l.jpg
Vie et mort d'un thread

  • 1. on crée le thread – new;

  • 2. on le démarre – start;

  • 3. le thread s’exécute alors, et reste vivant jusqu’à la fin deson code exécution, ou jusqu’à ce que ses méthodesstop ou destroy soient invoquées ;

  • 4. durant son exécution, le processus peux être bloqué ouexécutable.

Tuyêt Trâm DANG NGOC - Université de Versailles


Inactivit d un thread l.jpg
Inactivité d'un thread

Un thread est bloqué (Not Runnable), dans les cas suivants :

  • sa méthode sleep a été invoquée ;

  • le thread a appelé la méthode wait afin d’attendre la réalisation d’un certain évènement ;

  • le thread est en attente d’une entrée/sortie.

    Suivant la cause de bloquage du thread, sa remise en activité peut-être :

  • si un thread a été mis en sommeil, alors, le nombre de millisecondes demandes devra être écoulé ;

  • si un thread attend une condition, alors, un autre objet doit l’avertir du changement de la condition – notify ou notifyAll ;

  • si un thread est bloqué en attente d’une entrée/sortie alors il faut attendre que cette entrée/sortie se libère.

Tuyêt Trâm DANG NGOC - Université de Versailles


Comment cr er un thread l.jpg

classMonThreadextends Thread

{

// constructeur

MonThread (...)

{

[...]

}

// methode ’run’ a surcharger

public void run()

{

[...]

}

}

classMonThreadimplements Runnable

{

// constructeur

MonThread (...)

{

[...]

}

// methode ’run’ a implementer

public void run()

{

[...]

}

}

Comment créer un thread ?

Par dérivation de la classe Thread

Par implémentation de l'interface Runnable

Tuyêt Trâm DANG NGOC - Université de Versailles


Communication sur ip l.jpg
Communication sur IP

Tuyêt Trâm DANG NGOC - Université de Versailles


Adresses ip adresses dns l.jpg
Adresses IP / adresses DNS

  • Une adresse IP référence de manière logique et unique surl’Internet, l’interface d’une machine.

  • Des mécanismes de résolution d’adresse permettent deconvertir les adresses IP en adresses DNS et vice-versa.

Tuyêt Trâm DANG NGOC - Université de Versailles


Ports l.jpg
Ports

  • Le mécanisme de port est utilisé afin de pouvoir permettrede gérer plusieurs services simultanés depuis une seuleinterface réseau.

Tuyêt Trâm DANG NGOC - Université de Versailles


Classes utilis es pour la communication l.jpg
Classes utilisées pour la communication

  • Les classes orientées communication se trouvent dans lepaquetage java.net.

  • Les programmes Java peuventutiliser TCP ou UDP afin de communiquer sur l’Internet.

  • classe de manipulation d’adressesInetAddress

  • Les classes utilises spcifiquement pour TCP : URL,URLConnection, Socket ,ServerSocket ;

  • Les classes utilises spécifiquement pour UDP :DatagramPacket , DatagramSocket ,MulticastSocket.

Tuyêt Trâm DANG NGOC - Université de Versailles


Slide11 l.jpg
URL

Tuyêt Trâm DANG NGOC - Université de Versailles


Java beans coding convention 1 2 l.jpg
Java Beans Coding Convention (1/2)

  • Convention pour les commentaires

  • Convention de nommage

    • class et interface (pas d'underscore, majuscule au début de chaque mot)

    • méthode (minuscule au début, majuscule au début de chaque mot)

    • variable (d'instance préfixé par 'i', de classe par 'c', de paramêtre par 'a', temporaire sans, constante tout en capitale)

    • paquetage (tout en minuscule, dans le répertoire associé)

  • Convention d'accès aux variables

    • récupérer la valeur d'une variable d'instance (get suivi du nom de la variable)

    • positionner la valeur d'une variable d'instance (set suivi du nom de la variable)

Tuyêt Trâm DANG NGOC - Université de Versailles


Java beans coding convention 2 2 l.jpg
Java Beans Coding Convention (2/2)

  • Convention de constructeurs (avoir un constructeur par défaut)

  • Convention d'initialisation (utiliser les conventions de variables et les set)

  • Convention d'importation (ne pas utiliser '*')

  • Sérialisation (doit implémenter l'interface Serializable)

  • Convention d'évènement

    • Event handling methods: void <eventOcurrenceMethodName>(<EventStateObjectType> evt);

    • Event handling methods with arbitrary argument list: void <eventOcurrenceMethodName>(<ArbitraryParameterList>);

    • Multicast event delivery: public void add<ListenerType>(<ListenerType> listener); public void remove<ListenerType>(<ListenerType> listener);

    • Unicast event delivery: public void add<ListenerType>(<ListenerType> listener) throws java.util.TooManyListenersException; public void remove<ListenerType>(<ListenerType> listener);

Tuyêt Trâm DANG NGOC - Université de Versailles


Architecture j2ee l.jpg

Architecture J2EE

Cours CNAM, le 26 novembre 2003


Slide15 l.jpg
Plan

  • Architectures multi-tiers : architecture 1, 2, 3-tiers

  • J2EE : architecture générale

  • Composants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc.

  • Outils de développement et d’intégration

  • Produits existants

  • Conclusion

  • Architectures multi-tiers : architecture 1, 2, 3-tiers

Tuyêt Trâm DANG NGOC - Université de Versailles


Architecture 1 tiers l.jpg
Architecture 1-tiers

Navigateur

Présentation

Serveur Web

Traitement

données

Système de fichiers

Tuyêt Trâm DANG NGOC - Université de Versailles


Architecture 2 tiers l.jpg
Architecture 2-tiers

Navigateur

Présentation

Serveur Web

Traitement

données

Base de données

Base de données

Tuyêt Trâm DANG NGOC - Université de Versailles


Architecture 3 tiers l.jpg
Architecture 3-tiers

  • Dimensionnement

  • Maintenance

  • Fiabilité

  • Disponibilité

  • Extensibilité

  • Gestion du développement

  • complexité

Navigateur

Serveur Web

Présentation

Traitement

Serveur d’applications

données

Base de données

Base de données

Tuyêt Trâm DANG NGOC - Université de Versailles


Slide19 l.jpg
Plan

  • Architectures multi-tiers : architecture 1, 2, 3-tiers

  • J2EE : architecture générale

  • Composants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc.

  • Outils de développement et d’intégration

  • Produits existants

  • Conclusion

  • J2EE : architecture générale

Tuyêt Trâm DANG NGOC - Université de Versailles


Qu est ce que la plateforme j2ee l.jpg
Qu’est ce que la plateforme J2EE ?

  • Environnement Java

    • langage objet

    • simple

    • portable

    • robuste

    • indépendant de l’architecture (code virtuel)

  • Pour serveurs d’applications réparties

    • ensemble de services

    • ensemble de protocoles de communication

Tuyêt Trâm DANG NGOC - Université de Versailles


Container j2ee l.jpg
Container J2EE

  • Container J2EE : Environnement d’exécution Java 2 permettant d’héberger des composants applicatifs et de contrôler leur exécution. Il existe deux types de container :

    • Container J2EE Web : utilisés pour héberger des servlets ou des pages JSP

    • Container J2EE EJB : supportant l’exécution des composants EJB

Tuyêt Trâm DANG NGOC - Université de Versailles


Interfaces de container l.jpg
Interfaces de container

  • Un container offre des interfaces constituant le contrat de composant. Il gère :

    • des API de services : accès SGBD, annuaires, gestionnaire de transactions...

    • des API de communication : protocole Internet, envois de messages ou de mail, accès à des objets distants...

  • Composants d’application :

    • Servlets, JSP, EJB.

  • Descripteurs de déploiement :

    • Fichier XML décrivant le composant d’application

    • Inclut des informations additionnelles requises par le container pour gérer les composants d’application

Tuyêt Trâm DANG NGOC - Université de Versailles


Container l.jpg
Container

Un ensemble d’API spécifiés par le containair, que les applications doivent étendre ou implémenter

Contrat Container

Composant

d’application

Composant

d’application

Descripteur

de déploiement

Services déclaratifs

Descripteur

de déploiement

Autres services container

Composant

d’application

Descripteur

de déploiement

Composant

d’application

Services que le container interpose sur les applications, basés sur le descripteur de déploiement

donné pour chaque composant d’application

Descripteur

de déploiement

D’autres services relatifs à la vie du composant : attente de ressources, ramasse-miette, etc.

API services du container

Services additionnels fournis par le container et qui sont généralement requis par toutes les applications du container

Tuyêt Trâm DANG NGOC - Université de Versailles


Int gration j2ee l.jpg

ERP

Intégration J2EE

Container J2EE Web

Base

de

données

Navigateur

Pages

JSP

HTTP

Servlets

Répertoire

IIOP-RMI

LDAP

JDBC

Container J2EE EJB

JCA

Enterprise Bean

Enterprise Bean

Tuyêt Trâm DANG NGOC - Université de Versailles


Slide25 l.jpg
Plan

  • Architectures multi-tiers : architecture 1, 2, 3-tiers

  • J2EE : architecture générale

  • Composants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc.

  • Outils de développement et d’intégration

  • Produits existants

  • Conclusion

  • Composants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc

Tuyêt Trâm DANG NGOC - Université de Versailles


Composants j2ee l.jpg

Messagerie

Guide de

programmation

Transaction

Mail

JavaBeans

Web

Base de

données

Nommage

& Répertoire

XML

Sécurité

CORBA

Composants J2EE

Outils

BluePrint

JTA/JTS

EJB

JSP

Servlet

JavaBeans

JMS

JavaMail

Connecteurs

Container J2EE

Applet

Java 2 SDK – Edition standard

JavaIDL, RMI-IIOP

JAAS

JDBC

JNDI

JAXP

Tuyêt Trâm DANG NGOC - Université de Versailles


Api pour j2ee l.jpg
API pour J2EE

  • Java Servlet 2.3 : services web

  • JSP 1.2 : présentation des pages web

  • EJB 2.0 : les beans

  • JAF 1.0 : intégration des JavaBeans

  • JDBC 2.0 : accès aux bases de données

  • RMI-IIOP, RMI-JRMP, CORBA : accès et exécution distants

  • JNDI 1.2 : gestion de noms et d’annuaire

  • JMS 1.0 : gestion de messages

  • JTA/JTS 1.0 : gestion de transactions

  • JavaMail 1.2 : gestion du courrier électronique

  • JAAS 1.0 : gestion de la sécurité, authentification et droits d’accès

  • JAXP 1.1 : gestion de documents XML

Tuyêt Trâm DANG NGOC - Université de Versailles


Java servlet l.jpg
Java Servlet

  • programmation côté serveur

  • permet d’étendre les fonctionnalité du serveurs web

  • gère le protocole HTTP

  • construire des applications Web plus performantes que les CGI

  • accède à toutes les API des classes Java

  • axé sur la génération du contenu

    • les programmeurs ne se soucient pas de la présentation

Tuyêt Trâm DANG NGOC - Université de Versailles


Cycle de vie d une servlet l.jpg

Chargement

Code

Servlet

Serveur

Serveur

Client

Traitement

des requêtes

clientes

par thread

Code

Servlet

Client

Code

Servlet

Serveur

Déchargement

Cycle de vie d’une servlet

  • init() : initialisation de la servlet

  • chargement du code.

  • Souvent effectué lors de la première

  • requête cliente (doGet, doPost)

  • Allocation d’un pool de threads

  • doGet () : Traitement des requêtes HTTP GET

  • doPut () :Traitement des requêtes HTTP PUT

  • doPost () :Traitement des requêtes HTTP POST

  • destroy () : destruction de la servlet

  • par le serveur

Tuyêt Trâm DANG NGOC - Université de Versailles


Slide30 l.jpg

HTTP/1.0 200 OK

Mime-version: 1.0

Content-type: text/html

<html>

<head>

GET /home.html HTTP/1.0

User-Agent: Mozilla/4.0

Accept: image/gif, image/jpeg, text/*, */*

HTTP 1.0

Servlet

Service( req,rep)

Réponse

Requête

Tuyêt Trâm DANG NGOC - Université de Versailles


Api servlet l.jpg
API Servlet

  • import javax.servlet.*;

  • import javax.servlet.http.*;

Tuyêt Trâm DANG NGOC - Université de Versailles


Programmation des servlets l.jpg
Programmation des Servlets

import javax.servlet.http.*;

import javax.servlet.*;

import java.io.*;

public class Hello extends HttpServlet

{

public void doGet (HttpServletRequest requete, HttpServletResponse reponse)

throws ServletException, IOException

{

// Récupère le flux d’écriture pour la réponse

PrintWriter out = reponse.getWriter () ;

// Prépare la réponse

reponse.setContentType ("text/html");

// Récupère l’adresse IP du client

String adresseDistante = requete.getRemoteAddr () ;

// Imprime la page HTML

out.println("<html>") ;

out.println("<title>Bienvenue !</title> <body>")

out.println("<h1>Bonjour !</h1>") ;

out.println("Votre adresse IP est identifi&eacute; comme :<b>" + adresseDistante + "</b>.") ;

out.println(“</body></html>") ;

}

}

Tuyêt Trâm DANG NGOC - Université de Versailles


Java server page jsp l.jpg
Java Server Page (JSP)

  • Séparation entre la présentation et le contenu des pages web

  • Encapsulé dans des pages HTML

  • Création de contenu dynamique

  • Situé côté serveur

  • Axé sur la présentation des données

    • Les webmasters ne se soucient pas de la programmation

  • Semblable à HTML ou XML

    • basé sur des balises

Tuyêt Trâm DANG NGOC - Université de Versailles


Slide34 l.jpg

  • Directives

    • Balise de déclaration<%!...%>

    • Balise d’affichage<%=...%>

    • Balise de scriplet<%...%>

    • Balise de directive<%@...%>

    • Balise d’action<jsp :.../>

Tuyêt Trâm DANG NGOC - Université de Versailles


Api jsp l.jpg
API JSP

  • import javax.servlet.jsp.*;

  • import javax.servlet.jsp.tagext.*;

Tuyêt Trâm DANG NGOC - Université de Versailles


Programmation jsp l.jpg
Programmation JSP

<html>

<!-- Copyright (c) 1999 The Apache Software Foundation. All rights reserved.-->

<body bgcolor="white">

<!– fixer les paramètres de la page 

<%@ page language = “JAVA” session = “false” %>

<!– déclarer une variable caractère 

<% char c = 0 ; %>

<!– scriptlet code Java 

<%

for (int i =0 ; i < 26 ; i++) {

c = (char) (‘a’) + i ;

%>

<!– afficher c 

<%= c %>

<% } %>

<jsp:useBean id='clock' scope='page' class='dates.JspCalendar' type="dates.JspCalendar" />

<font size=4>

<ul>

<li> Jour du mois <jsp:getProperty name="clock" property="dayOfMonth"/></li>

<li> année <jsp:getProperty name="clock" property="year"/></li>

<li> mois <jsp:getProperty name="clock" property="month"/></li>

<li> temps <jsp:getProperty name="clock" property="time"/></li>

</ul>

</font>

</body>

</html>

Tuyêt Trâm DANG NGOC - Université de Versailles


Enterprise java beans ejb l.jpg
Enterprise Java Beans (EJB)

  • Modèle client/serveur distribué

  • Code exécuté sur le serveur

    • proche des données

    • serveur souvent plus puissant que le client

  • Code localisé sur le serveur

    • changer le code du serveur ne change pas le code du client

  • Un EJB est juste une collection de classes Java et d’un fichier XML. Les classes Java suivent un certains nombre de règles et fournissent des callbacks comme définis dans l’environnement J2EE et les spécifications EJB.

Tuyêt Trâm DANG NGOC - Université de Versailles


Container ejb l.jpg
Container EJB

  • Un container EJB est un environnement d’exécution pour un composant EJB.

  • Un EJB s’exécute sur un container EJB.

  • Un container EJB s’exécute par un serveur d’applications et prend la responsabilité des problèmes au niveau système

  • Le container EJB gère le cycle de vie de l’EJB.

  • Le container EJB fournit aussi un nombre de services additionnels

    • Gestion de la persistance

    • Transactions

    • Sécurité

    • Cadre de travail pour Business Logic

    • Dimensionnement

    • Portabilité

    • Gestion des erreurs

Tuyêt Trâm DANG NGOC - Université de Versailles


Beans entit l.jpg
Beans entité

  • Un bean entité est un objet persistant

  • Un beanentité peut avoir plusieurs clients

    • Bean Managed Persistance (BMP) : le container EJB est responsable de la persistance du bean.

    • Container Manager Persistance (CMP) : le bean est responsable de sa propre persistance.

Tuyêt Trâm DANG NGOC - Université de Versailles


Beans session l.jpg
Beans session

  • Un bean session pour chaque client

  • Il y a deux types de beans session

    • sans état

      • pas d ’état entre les invocations

      • rapide et efficace

    • avec état

      • maintient les états entre les invocations

      • persistance limitée

Tuyêt Trâm DANG NGOC - Université de Versailles


Structure ejb l.jpg
Structure EJB

  • Interface home

    • fournit un moyen pour le client EJB de récupérer une instance d’un EJB

  • Interface distante

    • expose les méthodes que le client EJB peut utiliser

  • Code EJB

    • implémente l’interface distante et l’interface EJB approprié (SessionBean ou EntityBean par exemple)

Tuyêt Trâm DANG NGOC - Université de Versailles


Api ejb l.jpg
API EJB

  • import javax.ejb.* ;

  • import javax.ejb.spi.* ;

Tuyêt Trâm DANG NGOC - Université de Versailles


Programmation ejb l.jpg
Programmation EJB

import java.rmi.RemoteException;

import javax.ejb.CreateException;

import javax.ejb.EJBHome;

publicinterface HomeDe extends EJBHome

{

De create() throws RemoteException, CreateException;

}

import javax.ejb.EJBObject;

import java.rmi.RemoteException;

publicinterface De extends EJBObject

{

public int lancer() throws RemoteException;

}

Tuyêt Trâm DANG NGOC - Université de Versailles


Slide44 l.jpg

import java.rmi.RemoteException ;

import javax.ejb.SessionBean ;

import javax.ejb.SessionContext ;

public class DeEJB implements SessionBean

{

public DeEJB() {…}

public void ejbCreate() {…}

public void ejbRemove() {…}

public void ejbActivate(){…}

public void ejbPassivate() {…}

public void setSessionContext (SessionContext sc) {…}

public int lancer(){…}

}

Tuyêt Trâm DANG NGOC - Université de Versailles


Javabeans activation framework jaf l.jpg
JavaBeans Activation Framework (JAF)

  • Les services d’activation sont des composants fondamentaux utilisés pour activer automatiquement des objets en mémoire à l’état dormant suivant une requête cliente

  • JAF est un cadre de travail pour construire des applications qui peuvent activer automatiquement des objets pouvant manipuler des données reçues dans un flux d’entrée

Tuyêt Trâm DANG NGOC - Université de Versailles


Api jaf l.jpg
API JAF

  • import javax.activation.* ;

Tuyêt Trâm DANG NGOC - Université de Versailles


Java data base connectivity jdbc l.jpg
Java Data Base Connectivity (JDBC)

  • JDBC permet aux applications d’accéder à des SGBD relationnels et de manipuler des données provenant de ces bases

  • API Java

  • Calqué sur ODBC de Microsoft

  • Implémente le standard CLI de l’X/OPEN

Tuyêt Trâm DANG NGOC - Université de Versailles


Pilotes jdbc l.jpg
Pilotes JDBC

  • Type 1 : Pont JDBC-ODBC fournit un accès JDBC API par l’intermédiaire d’un ou plusieurs pilotes ODBC.

  • Type 2 : A native-API partly Java technology-enabled driver convertit les appels JDBC en un applet sur l’API client (Oracle, Sybase, Informix, DB2, et autres SGBD)

  • Type 3 : A net-protocol fully Java technology-enabled driver convertit les appels JDBC en un protocole indépendant traduit ensuite en protocole du SGBD par un serveur

  • Type 4 : A native-protocol fully Java technology-enabled driver convertit les appels JDBC directement dans le protocoles de communication utilisé par le SGBD

Tuyêt Trâm DANG NGOC - Université de Versailles


Slide49 l.jpg

indépendant du constructeur

dépendant du constructeur

Java Application

SGBD

Java Application

SGBD

Interface serveur SGBD

Interface serveur SGBD

JDBC API

JDBC API

JDBC Type 1

JDBC Type 2

natif côté client

Interface SGBD Client

Client natif ODBC

Interface SGBD Client

Java Application

SGBD

Java Application

SGBD

Ecouteur SGBD

Interface serveur SGBD

JDBC API

Interface serveur SGBD

JDBC API

Interface client SGBD

Ecoute distante

JDBC Type 4

JDBC Type 3

Tuyêt Trâm DANG NGOC - Université de Versailles


Api jdbc l.jpg
API JDBC

  • import java.sql.*;

Tuyêt Trâm DANG NGOC - Université de Versailles


Programmation jdbc l.jpg
Programmation JDBC

private void executer (String driver, String chaine_connexion, String login, String password)

{

// On charge le driver

Class.forName (driver) ;

// on se connecte

conn = DriverManager.getConnection (chaine_connexion, login, password) ;

// on initialise le curseur

stmt = conn.createStatement () ;

// execution d’une chaine SQL sur le SGBD

String SQL = "SELECT * from essai" ;

ResultSet rs = stmt.executeQuery (SQL) ;

ResultSetMetaData rsetdata = rs.getMetaData() ;

System.out.println (rsetdata.getColumnName(1) + "\t" + rsetdata.getColumnName(2)) ;

while (rs.next ())

{

// On recupere le premier champ qui est une chaine puis le deuxieme

System.out.println (rs.getString (1) + "\t" + rs.getInt (2)) ;

}

stmt.close () ;

conn.close () ;

}

Tuyêt Trâm DANG NGOC - Université de Versailles


Rmi iiop rmi jrmp corba l.jpg
RMI-IIOP, RMI-JRMP, CORBA

  • RMI et CORBA sont des architectures complexes permettant d’invoquer un objet distant géré par une autre machine virtuelle comme s’il était local.

    • CORBA : générique langage objets

    • RMI : spécifique à Java

GIOP

RMI

IIOP

TCP/IP

Tuyêt Trâm DANG NGOC - Université de Versailles


Remote method invocation rmi l.jpg
Remote method Invocation (RMI)

  • Objet distant localisé par l’API JNDI

  • Registre associe au nom objet une référence

  • stub représente l’interface sur le client. Agit comme proxy de l’objet distant

  • squelette (skeleton) sur le serveur pour recevoir les messages et invoquer l’objet serveur

  • Génération de stub et skeleton à l’aide de rmic

client RMI

serveur RMI

Interface RMI

Squelette RMI

Stub RMI

Couche de référence distante

Couche transport RMI

TCP/IP

Tuyêt Trâm DANG NGOC - Université de Versailles


Common object request broker architecture corba l.jpg
Common Object Request Broker Architecture (CORBA)

  • GIOP (General Inter-ORB Protocol) : Le protocole de plus haut-niveau de communication CORBA qui convertit des messages créés par les stubs en format transport-message capable de communiquer entre les implémentations ORB (Object Request Broker).

  • IIOP (Internet Inter-ORB Protocol) : Le protocole de plus bas niveau utilisé par CORBA ;c’est une couche transport décrivant comment les messages GIOP sont transmis au dssus de TCP/IP.

Tuyêt Trâm DANG NGOC - Université de Versailles


Architecture corba l.jpg
Architecture CORBA

  • Portable Object Adapter (POA)

  • Object Request Broker (ORB )

Client

Serveur

reférence

objet

objet

ORB

ORB

Tuyêt Trâm DANG NGOC - Université de Versailles


Api corba rmi l.jpg
API CORBA, RMI

  • import javax.rmi.* ;

  • import javax.rmi.CORBA ;

  • import org.omg.CORBA.* ; // RMI-IIOP, IDL

  • import org.omg.CosNaming.* ; // RMI-IIOP, IDL

Tuyêt Trâm DANG NGOC - Université de Versailles


Programmation rmi l.jpg
Programmation RMI

// Fichier Bonjour.java : Interface du service 'Bonjour'

import java.rmi.Remote ;

import java.rmi.RemoteException ;

public interface Bonjour extends Remote

{

String disBonjour (String nom) throws RemoteException ;

}

// Fichier 'BonjourImpl.java': implementation de l'interface 'Bonjour‘ definie dans 'Bonjour.java'.

import java.rmi.RemoteException ;

import java.rmi.server.UnicastRemoteObject ;

public class BonjourImpl extends UnicastRemoteObjectimplements Bonjour

{

public BonjourImpl () throws RemoteException

{ super () ;}

public String disBonjour (String nom)

{ return "Bonjour " + nom + " !" ;}

}

Tuyêt Trâm DANG NGOC - Université de Versailles


Slide58 l.jpg

// Enregistre l’objet Bonjour dans le registry du serveur local

import java.rmi.Naming ;

import java.rmi.RMISecurityManager ;

public class ServiceBonjour

{

public static void main (String args[])

throws Exception

{

BonjourImpl obj = new BonjourImpl () ;

Naming.rebind ("rmi://localhost/ObjetBonjour", obj) ;

System.out.println ("Enregistre sous le nom 'ObjetBonjour'") ;

}

}

Tuyêt Trâm DANG NGOC - Université de Versailles


Slide59 l.jpg

// Fichier 'BonjourCLient.java' : contacte le registry a l'URL donne et recupere la reference de l'objet.

import java.rmi.Naming ;

import java.rmi.RemoteException ;

public class BonjourClient

{

public static void main (String argv [])

throws Exception

{

String message = null ;

Bonjour obj = null ;

obj = (Bonjour) Naming.lookup ("rmi://gibet.prism.uvsq.fr/ObjetBonjour") ;

message = obj.disBonjour (argv [0]) ;

System.out.println ("Le serveur a dit : '" + message + ".") ;

}

}

Tuyêt Trâm DANG NGOC - Université de Versailles


Java naming and directory interface jndi l.jpg
Java Naming and Directory Interface (JNDI) l'URL donne et recupere la reference de l'objet.

  • JNDI permet d’accéder à de nombreux services de noms et d’annuaire.

  • En utilisant JNDI, un objet Java peut stocker et récupérer des objets de n’importe quel type

  • JNDI fournit des méthodes pour effectuer n’importe quelle opération standard sur un annuaire : associer des attributs à un objet ou chercher un objet par ses attributs.

  • JNDI permet aux applications Java de bénéficier de toutes les informations d’annuaires comme LDAP, NDS, DNS et NIS (YP) et permet à Java de cohabiter avec des applications existantes.

  • Enregistrement dynamique de services et de clients

  • Traitement point à point

Tuyêt Trâm DANG NGOC - Université de Versailles


Architecture jndi l.jpg
Architecture JNDI l'URL donne et recupere la reference de l'objet.

Application Java

API JNDI

Gestionnaire de nommages et d’annuaire

JNDI SPI

SPI nommage CORBA

SPI Système de fichiers

SPI LDAP

SPI RMI

Autres SPI

Services LDAP

Autres services (DNS, NDS, NIS…)

Services RMI

Système de fichiers

CosNaming CORBA

Système de fichiers

Tuyêt Trâm DANG NGOC - Université de Versailles


Api jndi l.jpg
API JNDI l'URL donne et recupere la reference de l'objet.

  • import javax.naming.* ;

  • import javax.naming.directiry.* ;

  • import javax.naming.event.* ;

  • import javax.naming.ldap.* ;

  • import javax.naming.spi.* ;

Tuyêt Trâm DANG NGOC - Université de Versailles


Programmation l.jpg
Programmation l'URL donne et recupere la reference de l'objet.

import javax.naming.InitialContext;

import javax.rmi.PortableRemoteObject;

class ClientDe

{

// Crée une instance EJB “dé” sur le serveur EJB et appelle ensuite la méthode lancer ()

// et enfin affiche le résultat du lancé de dé

public static void main (String[] args)

{

try

{

InitialContext jndiContext = new InitialContext ();

ref = jndiContext.lookup (“jeux/De");

DeHome home= (EnsDe) PortableRemoteObject.narrow (ref, DeHome.class);

De de = home.create () ; // Crée un objet De depuis l’interface EnsCalculateur

System.out.println (de.lancer (0.2, 1000, “vert”));

}

catch (Exception e)

{

System.out.println(e.toString());

}

}

}

Tuyêt Trâm DANG NGOC - Université de Versailles


Java message service jms l.jpg
Java Message Service (JMS) l'URL donne et recupere la reference de l'objet.

  • JMS défini un mécanisme standard permettant aux composants d’envoyer et de recevoir des messages de façon asynchrone

  • Fournit un service flexible et sûr pour l’échange asynchrone de données et d’évènements commerciaux critiques à travers une entreprise

  • L’API JMS y ajoute une API commune et un cadre de travail permettant le développement de messages portables basés en Java

Tuyêt Trâm DANG NGOC - Université de Versailles


Slide65 l.jpg

  • Synchrone l'URL donne et recupere la reference de l'objet.

    • envoyé une fois, non garanti d’atteindre le serveur

    • perdu si non reçu

  • Asynchrone

    • Envoyé jusqu’à acquittement

    • Mise en file d’attente jusqu’à ce que le message soit reçu

Tuyêt Trâm DANG NGOC - Université de Versailles


Slide66 l.jpg

message l'URL donne et recupere la reference de l'objet.

message

file

d’attente

Consomme

Client2

Envoie

Client1

Acquitte

Souscrit

Client2

Délivre

message

message

thème

Souscrit

Publie

Client1

Client3

Délivre

message

Tuyêt Trâm DANG NGOC - Université de Versailles


Cas d utilisation de jms l.jpg
Cas d’utilisation de JMS l'URL donne et recupere la reference de l'objet.

  • Système faiblement couplé

    • Sans connexion

    • Supprime les dépendances entre le client et la plateforme serveur (langage de programmation, version)

  • Publication souscription

    • Envoie, reçoit des information avec un ou plusieurs clients non identifiés

  • Intégration avec d’autres systèmes de messageries

    • IBM MQ-Series

    • Microsoft Message Queue

Tuyêt Trâm DANG NGOC - Université de Versailles


Api jms l.jpg
API JMS l'URL donne et recupere la reference de l'objet.

  • import javax.jms.* ;

Tuyêt Trâm DANG NGOC - Université de Versailles


Java transaction support api jts jta l.jpg
Java Transaction Support/API (JTS/JTA) l'URL donne et recupere la reference de l'objet.

  • JTA et JTS permettent aux applications J2EE d’affranchir le développeur de composant de la gestion des transactions

  • Les développeurs peuvent définir les propriétés transactionnelles des composants JavaBeans pendant la conception et le déploiement à l’aide d’états déclaratifs dans le descripteur de déploiement.

  • Le serveur d’applications prend la responsabilité de la gestion des transactions

Tuyêt Trâm DANG NGOC - Université de Versailles


Exemple de d roulement de transaction l.jpg
Exemple de déroulement de transaction l'URL donne et recupere la reference de l'objet.

begin transaction

...

update table-a

...

if (condition-x)

commit transaction

else if (condition-y)

update table-b

commit transaction

else

rollback transaction

begin transaction

update table-c

commit transaction

Tuyêt Trâm DANG NGOC - Université de Versailles


Api jta l.jpg
API JTA l'URL donne et recupere la reference de l'objet.

  • import javax.transaction ;

  • import javax.transaction.xa ;

Tuyêt Trâm DANG NGOC - Université de Versailles


Programmation jta l.jpg
Programmation JTA l'URL donne et recupere la reference de l'objet.

import javax.transaction.UserTransaction ;

[...]

public void withdrawCash(double amount) {

UserTransaction ut = context.getUserTransaction();

try

{

ut.begin(); updateChecking(amount);

machineBalance -= amount; insertMachine(machineBalance);

ut.commit();

}

catch (Exception ex)

{

try

{

ut.rollback();

}

catch (SystemException syex)

{

throw new EJBException ("Rollback failed: " + syex.getMessage());

}

throw new EJBException ("Transaction failed: " + ex.getMessage());

}

}

[...]

Tuyêt Trâm DANG NGOC - Université de Versailles


Javamail l.jpg
JavaMail l'URL donne et recupere la reference de l'objet.

  • JavaMail 1.2 définit un ensemble d’interface de classe permettant de construire des applications sur les technologies de courrier électronique

  • Gestion des standards de courrier

    • SMTP : protocole de transport de courrier électronique

    • POP : récupération du courrier sur serveur distant

    • IMAP : gestion de boîtes aux lettres distantes

    • MIME : standard de codage du contenu de courrier permettant notamment l’attachement de documents de tout format et l’utilisation de langues différentes

Tuyêt Trâm DANG NGOC - Université de Versailles


Api javamail l.jpg
API JavaMail l'URL donne et recupere la reference de l'objet.

  • import javax.mail.* ;

  • import javax.mail.event.* ;

  • import javax.mail.internet.* ;

  • import javax.mail.search.* ;

Tuyêt Trâm DANG NGOC - Université de Versailles


Programmation javamail l.jpg
Programmation JavaMail l'URL donne et recupere la reference de l'objet.

if(!sendmultipart)

{

// send a plain text message

msg.setContent(msgText, "text/plain");

}

else

{

// send a multipart message// create and fill the first message part

MimeBodyPart mbp1 = new MimeBodyPart();

mbp1.setContent(msgText, "text/plain");

// create and fill the second message part

MimeBodyPart mbp2 = new MimeBodyPart();

mbp2.setContent(msgText2, "text/plain");

// create the Multipart and its parts to it

Multipart mp = new MimeMultipart();

mp.addBodyPart(mbp1);

mp.addBodyPart(mbp2);

// add the Multipart to the message

msg.setContent(mp);

}

Transport.send(msg);

}

catch(MessagingException mex)

{

mex.printStackTrace();

}

return "Email envoyé à " + emailto;

}

}

import javax.mail.*;

import javax.mail.internet.*;

import java.util.*;

public class SendEmail

{

public String SendMessage(String emailto, String emailfrom,

String smtphost, String emailmultipart, String msgSubject,

String msgText)

{

String msgText2 = "multipart message";

boolean sendmultipart = Boolean.valueOf(emailmultipart).booleanValue();

// set the host

Properties props = new Properties();

props.put("mail.smtp.host", smtphost);

// create some properties and get the default Session

Session session = Session.getDefaultInstance(props, null);

try

{

// create a message

Message msg = new MimeMessage(session);

// set the from

InternetAddress from = new InternetAddress(emailfrom);

msg.setFrom(from);

InternetAddress[] address =

{

new InternetAddress(emailto)

};

msg.setRecipients(Message.RecipientType.TO, address);

msg.setSubject(msgSubject);

Tuyêt Trâm DANG NGOC - Université de Versailles


Java authentification and authorization service jaas l.jpg
Java Authentification and Authorization Service (JAAS) l'URL donne et recupere la reference de l'objet.

  • Authentification : déterminer qui exécute le code Java (application, applet, bean, servlet)

  • Autorisation : vérifier si celui qui exécute le programme a les permissions nécessaires pour le faire

  • Modules d’authentification disponibles

    • JNDI

    • UNIX

    • Windows NT

    • Kerberos

    • KeyStore

Tuyêt Trâm DANG NGOC - Université de Versailles


Api jaas l.jpg
API JAAS l'URL donne et recupere la reference de l'objet.

  • import javax.security.auth ;

  • import javax.security.auth.callback ;

  • import javax.security.auth.login ;

  • import javax.security.auth.spi ;

Java.policy

grant <signer(s) field>, <codeBase URL> <Principal field(s)> {

permission perm_class_name "target_name", "action";

...

permission perm_class_name "target_name", "action";

};

<Principal field> := Principal Principal_class "principal_name"

  • import javax.security.* ;

Tuyêt Trâm DANG NGOC - Université de Versailles


Programmation jaas authentification l.jpg
Programmation JAAS (authentification) l'URL donne et recupere la reference de l'objet.

import java.io.IOException;

import javax.security.auth.*;

import javax.security.auth.callback.*;

import javax.security.auth.login.*;

import javax.security.auth.spi.*;

public class SampleLoginModule implements LoginModule {

public boolean abort () {

          // Method to abort the authentication process (phase 2).

 }

public boolean commit() {

         //  Method to commit the authentication process (phase 2).

 }

public void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) {

         //  Initialize this LoginModule.

}

public boolean login() {          

// Method to authenticate a Subject (phase 1).

public boolean logout() {

// Method which logs out a Subject.

}

}

grantcodebase "file:SampleLoginModule.jar" {

permission javax.security.auth.AuthPermission "modifyPrincipals";

};

Tuyêt Trâm DANG NGOC - Université de Versailles


Programmation jaas autorisation l.jpg
Programmation JAAS (autorisation) l'URL donne et recupere la reference de l'objet.

import java.io.File;

import java.security.PrivilegedAction;

public classSampleActionimplements PrivilegedAction {

public Object run() {

System.out.println("\nYour java.home property value is: " + System.getProperty("java.home"));

System.out.println("\nYour user.home property value is: " + System.getProperty("user.home"));

File f = new File("foo.txt");

System.out.print("\nfoo.txt does ");

if (!f.exists())

System.out.print("not ");

System.out.println("exist in the current working directory.");

return null; }

}

}

  • grant codebase "file:./SampleAction.jar", Principal sample.principal.SamplePrincipal "testUser" {

    • permission java.util.PropertyPermission "java.home", "read";

    • permission java.util.PropertyPermission "user.home", "read";

    • permission java.io.FilePermission "foo.txt", "read";

  • };

Tuyêt Trâm DANG NGOC - Université de Versailles


Java api for xml processing jaxp l.jpg
Java API for XML Processing (JAXP) l'URL donne et recupere la reference de l'objet.

  • SAX : gestion de flux d’événements XML

  • DOM : structure de document XML en mémoire sous forme d’arbre

  • XSLT : présentation de documents XML d’après des feuilles de style XSL

Tuyêt Trâm DANG NGOC - Université de Versailles


Xml sax dom l.jpg
XML – SAX -DOM l'URL donne et recupere la reference de l'objet.

Tuyêt Trâm DANG NGOC - Université de Versailles


Api xml l.jpg
API XML l'URL donne et recupere la reference de l'objet.

  • import javax.xml.parsers ;

  • import javax.xml.transform ;

  • import javax.xml.transform.dom ;

  • import javax.xml.transform.sax ;

  • import javax.xml.transform.stream ;

  • import org.xml.sax ;

  • import org.xml.sax.ext ;

  • import org.xml.sax.helpers ;

  • import org.w3c.dom ;

  • import org.w3c.dom.html ;

  • import org.w3c.dom.range ;

  • import org.w3c.dom.traversal ;

Tuyêt Trâm DANG NGOC - Université de Versailles


Java pour xml l.jpg
Java pour XML l'URL donne et recupere la reference de l'objet.

  • JAXP : Java API for XML Parsing

    • assure interface avec analyseur de documents produisant des formats DOM ou SAX

  • JAXB : Java Architecture for XML Binding

    • permet de construire des documents XML à partir d’objets Java et vice versa

  • JAXM : Java API for XML Messenging

    • permet l’échange de messages XML avec des plateformes distantes en synchrone ou asynchrone

  • JAXR : Java API for XML Registries

    • interface d’accès aux annuaires de services applicatifs

  • JAX-RPC : JAVA API for XML-based RPC

    • appels à des procédures à distance avec XML

Tuyêt Trâm DANG NGOC - Université de Versailles


Slide84 l.jpg
Plan l'URL donne et recupere la reference de l'objet.

  • Architectures multi-tiers : architecture 1, 2, 3-tiers

  • J2EE : architecture générale

  • Composants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc.

  • Outils de développement et d’intégration

  • Produits existants

  • Conclusion

  • Outils de développement et d’intégration

Tuyêt Trâm DANG NGOC - Université de Versailles


J2ee sdk l.jpg
J2EE SDK l'URL donne et recupere la reference de l'objet.

  • J2EE SDK est une définition opérationnelle de la plateforme J2EE

  • Fait par Sun Microsystem pour les démonstrations, les prototypes et les applications non-commerciales

  • Contient :

    • J2EE Application Server

    • Serveur Web

    • Base de données relationnelles

    • API J2EE

    • un kit de développement et de déploiement

  • But : permettre aux développeurs d’exécuter leurs applications J2EE et vérifier leur compatibilité

Tuyêt Trâm DANG NGOC - Université de Versailles


D ploiement j2ee l.jpg
Déploiement J2EE l'URL donne et recupere la reference de l'objet.

  • JAR – Java ARchive

    • Fichier classe Java

    • EJB

  • WAR - Web ARchive

    • Servlets

    • JSP

  • EAR - Enterprise ARchive

    • Contient des JARs et WARs pour former une application complète

  • Descripteurs de déploiement

    • XML

Tuyêt Trâm DANG NGOC - Université de Versailles


Slide87 l.jpg
Plan l'URL donne et recupere la reference de l'objet.

  • Architectures multi-tiers : architecture 1, 2, 3-tiers

  • J2EE : architecture générale

  • Composants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc.

  • Outils de développement et d’intégration

  • Produits existants

  • Conclusion

  • Produits existants

Tuyêt Trâm DANG NGOC - Université de Versailles


Serveurs j2ee l.jpg
Serveurs J2EE l'URL donne et recupere la reference de l'objet.

  • Apache Tomcat, http://jakarta.apache.org/

  • BEA WebLogic, http://www.bea.com/

  • IBM WebSphere

  • Sun iPlanet Application Server http://java.sun.com/

  • Oracle Application Server http://www.oracle.com

  • Caucho Resin, http://www.caucho.com/

  • Allaire JRun, http://www.allaire.com/

  • Orion, http://www.orionserver.com/

  • SilverStream Application Server

Tuyêt Trâm DANG NGOC - Université de Versailles


Slide89 l.jpg
Plan l'URL donne et recupere la reference de l'objet.

  • Architectures multi-tiers : architecture 1, 2, 3-tiers

  • J2EE : architecture générale

  • Composants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc.

  • Outils de développement et d’intégration

  • Produits existants

  • Conclusion

  • Conclusion

Tuyêt Trâm DANG NGOC - Université de Versailles


Exemple d application en entreprise l.jpg
Exemple d’application en entreprise l'URL donne et recupere la reference de l'objet.

Vérification

des données

Construction de

la requête d’insertion

soumission

d’une fiche

de renseignement

insertion

de la fiche

Servlet

de fiches

JDBC

Message

d’erreur

Insertion

génération de

page d’erreur

JSP

SGBD

Tuyêt Trâm DANG NGOC - Université de Versailles


Exemple d application en entreprise91 l.jpg

Client l'URL donne et recupere la reference de l'objet.

Navigateur

Compsants

graphiques

Exemple d’application en entreprise

Servlet

Requête HTTP

Serveur Web

JSP

fichier HTML

EJB

Bean Session

Bean Session

Serveur

d’applications

Bean Entité

Bean Entité

JDBC

Base de données

relationnelles

Serveurs

de donnes

Mainframe

Tuyêt Trâm DANG NGOC - Université de Versailles


Exemple d application en entreprise92 l.jpg

récupérer l'URL donne et recupere la reference de l'objet.

classes

récupérer

classes

EIS

Servlet

de classes

EJB

Classes

renvoie classes

renvoie classes

Listes de

classes

voir

notifications

pas de

notifications

présentation

liste de classes

JSP

JMS

Exemple d’application en entreprise

recupérer classes

Tuyêt Trâm DANG NGOC - Université de Versailles


Architecture s curis e jca l.jpg
Architecture sécurisée (JCA) l'URL donne et recupere la reference de l'objet.

  • Service de cryptographie

  • Interface et classe de certificat

  • Classe et interface de gestion de clef

Tuyêt Trâm DANG NGOC - Université de Versailles


ad