Professional Documents
Culture Documents
Evolution de Java
Personal Java 1.0 / 1.1 / 1.2
Java2 SDK SE 1.3.0,
1.3.1, 1.4.0
OAK
JDK1.0
JDK 1.1
Plateforme Java
Java embarqu
Tuyt Trm DANG NGOC -
Java2 SDK
EE 1.2.1
Java2 SDK
EE 1.3.0
Plateforme Java2
Java1.0.2
1.0.2
Java
Java1.1.1
1.1.1, ,1.1.2,
1.1.2,1.1.3,
1.1.3,1.1.8
1.1.8
Java
Java1.2.2
1.2.2
Java
Threads
Un thread -appel
parfois processus
lger - est un
unique flux de
contrle
squentiel dun
programme.
On peut utiliser
les threads afin
disoler des
tches.
Tuyt Trm DANG NGOC -
Par
Parimplmentation
implmentationde
del'interface
l'interfaceRunnable
Runnable
class
classMonThread
MonThreadextends
extendsThread
Thread
{{
////constructeur
constructeur
MonThread
MonThread(...)
(...)
{{
[...]
[...]
}}
////methode
methoderun
runaasurcharger
surcharger
public
publicvoid
voidrun()
run()
{{
[...]
[...]
}}
}}
class
classMonThread
MonThreadimplements
implementsRunnable
Runnable
{{
////constructeur
constructeur
MonThread
MonThread(...)
(...)
{{
[...]
[...]
}}
////methode
methoderun
runaaimplementer
implementer
public
publicvoid
voidrun()
run()
{{
[...]
[...]
}}
}}
Communication sur IP
Adresse IP
Adresse DNS
216.239.59.99 www.google.fr
192.93.0.1
ns1.nic.fr
Tuyt Trm DANG NGOC -
Ports
Le mcanisme de
port est utilis afin
de pouvoir
permettre de grer
plusieurs services
simultans depuis
une seule interface
rseau.
URL
Architecture J2EE
Plan
Architectures
multi-tiers
: architecture
2,
Architectures multi-tiers
: architecture
1, 2,1,33-tiers
tiers
J2EE : architecture gnrale
Composants J2EE : Servlets, JSP, EJB, JMS,
JAAS, JAXP, JavaMail, JNDI, etc.
Outils de dveloppement et dintgration
Produits existants
Conclusion
Tuyt Trm DANG NGOC -
Architecture 1-tiers
Navigateur
Prsentation
Serveur Web
Traitement
donnes
Systme
de
fichiers
Tuyt Trm DANG NGOC -
Architecture 2-tiers
Navigateur
Prsentation
Serveur Web
Traitement
donnes
Base de
donnes
Tuyt Trm DANG NGOC -
Base de
donnes
Architecture 3-tiers
+Dimensionnement
+Maintenance
+Fiabilit
+Disponibilit
+Extensibilit
Gestion du
+dveloppement
-
complexit
Navigateur
Prsentation
Serveur Web
Traitement
Serveur
dapplications
donnes
Base de
donnes
dimanche 29 mars 2015
Base de
donnes
Plan
Architectures multi-tiers : architecture 1, 2, 3tiers
J2EE
architecture
gnrale
J2EE ::architecture
gnrale
Composants J2EE : Servlets, JSP, EJB, JMS,
JAAS, JAXP, JavaMail, JNDI, etc.
Outils de dveloppement et dintgration
Produits existants
Conclusion
Tuyt Trm DANG NGOC -
Container J2EE
Container J2EE : Environnement dexcution
Java 2 permettant dhberger des composants
applicatifs et de contrler leur excution. Il
existe deux types de container :
Container J2EE Web : utiliss pour hberger des
servlets ou des pages JSP
Container J2EE EJB : supportant lexcution des
composants EJB
Interfaces de container
Un container offre des interfaces constituant le contrat de
composant. Il gre :
des API de services : accs SGBD, annuaires, gestionnaire de
transactions...
des API de communication : protocole Internet, envois de
messages ou de mail, accs des objets distants...
Composants dapplication :
Servlets, JSP, EJB.
Descripteurs de dploiement :
Fichier XML dcrivant le composant dapplication
Inclut des informations additionnelles requises par le container
pour grer les composants dapplication
Container
Dautres services
relatifs la vie du
composant : attente
de ressources,
ramasse-miette, etc.
Composant
Composant
dapplication
dapplication
Composant
Composant
dapplication
dapplication
Descripteur
Descripteur
de
dploiement
de dploiement
Descripteur
Descripteur
dedploiement
dploiement
de
Composant
Composant
dapplication
dapplication
Descripteur
Descripteur
dedploiement
dploiement
de
Composant
Composant
dapplication
dapplication
Descripteur
Descripteur
de
dploiement
de dploiement
Services dclaratifs
Contrat Container
Un ensemble dAPI
spcifis par le containair,
que les applications doivent
tendre ou implmenter
Services additionnels
fournis par le container et
qui sont gnralement
requis par toutes les
dimanche 29applications
mars 2015 du container
Intgration J2EE
Container
ContainerJ2EE
J2EEWeb
Web
Base
de
donnes
Pages
JSP
Rpertoire
LDAP
HTTP
Servlets
IIOP-RMI
JDBC
Container
ContainerJ2EE
J2EEEJB
EJB
JCA
ERP
Enterprise
Bean
Enterprise
Enterprise
Bean
Bean
Enterprise
Bean
Navigateur
Plan
Architectures multi-tiers : architecture 1, 2, 3tiers
J2EE : architecture gnrale
Composants
Composants J2EE
J2EE: Servlets,
: Servlets,
JSP,
JSP,
EJB,
EJB,
JMS,
JMS,
JAAS,
JAXP,
JavaMail,
JAAS,
JAXP,
JavaMail,
JNDI,JNDI,
etc. etc
Outils de dveloppement et dintgration
Produits existants
Conclusion
Tuyt Trm DANG NGOC -
Composants J2EE
Messagerie
Transaction
JavaBeans
Web
EJB
JSP Servlet
BluePrint
JTA/JTS
JMS
JavaMail
Container J2EE
Connecteurs
Outils
Applet JavaBeans
Guide de
programmation
Scurit
CORBA
Tuyt Trm DANG NGOC -
JAAS JDBC
JNDI
JAXP
Base de Nommage
donnes
dimanche
29 mars 2015 & Rpertoire
XML
Java Servlet
programmation ct serveur
permet dtendre les fonctionnalit du serveurs web
gre le protocole HTTP
construire des applications Web plus performantes
que les CGI
accde toutes les API des classes Java
ax sur la gnration du contenu
les programmeurs ne se soucient pas de la prsentation
GET /home.html
HTTP/1.0
HTTP/1.0 200 OK
Mime-version: 1.0
Content-type: text/html
<html>
User-Agent:
Mozilla/4.0
Accept: image/gif,
image/jpeg, text/*, */*
<head>
HTTP 1.0
Requte
Servlet
Service( req,rep)
Rponse
API Servlet
import javax.servlet.*;
import javax.servlet.http.*;
Directives
Balise de dclaration
Balise daffichage
Balise de scriplet
Balise de directive
Balise daction
API JSP
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
Programmation JSP
<html>
<!-- Copyright (c) 1999 The Apache Software Foundation. All rights reserved.-->
<body bgcolor="white">
<! fixer les paramtres de la page
<%@ page language = JAVA session = false %>
<! dclarer une variable caractre
<% 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> anne <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>
Container EJB
Un container EJB est un environnement dexcution pour un composant EJB.
Un EJB sexcute sur un container EJB.
Un container EJB sexcute par un serveur dapplications et prend la
responsabilit des problmes au niveau systme
Le container EJB gre le cycle de vie de lEJB.
Le container EJB fournit aussi un nombre de services additionnels
Gestion de la persistance
Transactions
Scurit
Cadre de travail pour Business Logic
Dimensionnement
Portabilit
Gestion des erreurs
Beans entit
Un bean entit est un objet persistant
Un bean entit 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.
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 limite
Structure EJB
Interface home
fournit un moyen pour le client EJB de rcuprer une
instance dun EJB
Interface distante
expose les mthodes que le client EJB peut utiliser
Code EJB
implmente linterface distante et linterface EJB
appropri (SessionBean ou EntityBean par exemple)
API EJB
import javax.ejb.* ;
import javax.ejb.spi.* ;
Programmation EJB
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
public interface HomeDe extends EJBHome
{
De create() throws RemoteException, CreateException;
}
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface De extends EJBObject
{
public int lancer() throws RemoteException;
}
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(){}
}
API JAF
import javax.activation.* ;
Pilotes JDBC
Type 1 : Pont JDBC-ODBC fournit un accs JDBC API par
lintermdiaire dun ou plusieurs pilotes ODBC.
Type 2 : A native-API partly Java technology-enabled driver
convertit les appels JDBC en un applet sur lAPI 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 indpendant 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
Tuyt Trm DANG NGOC -
indpendant du constructeur
Ecoute distante
natif ct client
Java Application
dpendant du constructeur
SGBD
Java Application
Interface
serveur
SGBD
JDBC API
JDBC Type 1
JDBC API
JDBC Type 2
SGBD
Interface
serveur
SGBD
Interface SGBD
Client
Java Application
JDBC API
JDBC Type 3
Ecouteur SGBD
Interface
client
SGBD
SGBD
Interface
serveur
SGBD
Java Application
JDBC API
JDBC Type 4
SGBD
Interface
serveur
SGBD
API JDBC
import java.sql.*;
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 dune 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 () ;
}
GIOP
RMI
IIOP
TCP/IP
client
RMI
serveur
RMI
Interface
RMI
Squelette
RMI
Stub RMI
Couche de rfrence distante
Couche transport RMI
TCP/IP
(CORBA)
GIOP (General Inter-ORB Protocol) : Le protocole
de plus haut-niveau de communication CORBA qui
convertit des messages crs par les stubs en format
transport-message capable de communiquer entre les
implmentations ORB (Object Request Broker).
IIOP (Internet Inter-ORB Protocol) : Le protocole de
plus bas niveau utilis par CORBA ;cest une couche
transport dcrivant comment les messages GIOP sont
transmis au dssus de TCP/IP.
Architecture CORBA
Portable Object Adapter
(POA)
Object Request Broker
(ORB )
Client
refrence
refrence
objet
objet
ORB
Serveur
objet
objet
ORB
import javax.rmi.* ;
import javax.rmi.CORBA ;
import org.omg.CORBA.* ; // RMI-IIOP, IDL
import org.omg.CosNaming.* ; // RMI-IIOP, IDL
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 UnicastRemoteObject implements Bonjour
{
public BonjourImpl () throws RemoteException
{ super () ;}
public String disBonjour (String nom)
{ return "Bonjour " + nom + " !" ;}
}
Architecture JNDI
Application Java
API JNDI
Gestionnaire de nommages et dannuaire
JNDI SPI
SPI Systme
de fichiers
Systmede
de
Systme
Systme
de
fichiers
fichiers
fichiers
SPI
nommage
CORBA
CosNaming
CosNaming
CORBA
CORBA
SPI LDAP
Services
Services
LDAP
LDAP
SPI RMI
Services
Services
RMI
RMI
Autres SPI
Autresservices
services
Autres
(DNS,NDS,
NDS,
(DNS,
NIS)
NIS)
API JNDI
import javax.naming.* ;
import javax.naming.directiry.* ;
import javax.naming.event.* ;
import javax.naming.ldap.* ;
import javax.naming.spi.* ;
Programmation
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
class ClientDe
{
// Cre une instance EJB d sur le serveur EJB et appelle ensuite la mthode lancer ()
// et enfin affiche le rsultat 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 () ; // Cre un objet De depuis linterface EnsCalculateur
System.out.println (de.lancer (0.2, 1000, vert));
}
catch (Exception e)
{
System.out.println(e.toString());
}
}
}
Synchrone
envoy une fois, non garanti datteindre le serveur
perdu si non reu
Asynchrone
Envoy jusqu acquittement
Mise en file dattente jusqu ce que le message
soit reu
message
message
Client1
Envoie
file
dattente
Consomme
Client2
Acquitte
Souscrit
message
Client1
Publie
Dlivre
message
thme
Client2
Souscrit
Dlivre
message
Client3
Publication souscription
Envoie, reoit des information avec un ou plusieurs clients
non identifis
API JMS
import javax.jms.* ;
API JTA
import javax.transaction ;
import javax.transaction.xa ;
Programmation JTA
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());
}
}
[...]
JavaMail
JavaMail 1.2 dfinit un ensemble dinterface 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 : rcupration du courrier sur serveur distant
IMAP : gestion de botes aux lettres distantes
MIME : standard de codage du contenu de courrier
permettant notamment lattachement de documents de tout
format et lutilisation de langues diffrentes
Tuyt Trm DANG NGOC -
API JavaMail
import javax.mail.* ;
import javax.mail.event.* ;
import javax.mail.internet.* ;
import javax.mail.search.* ;
Programmation JavaMail
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
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;
API JAAS
import javax.security.auth ;
import javax.security.auth.callback ;
import javax.security.auth.login ;
import javax.security.auth.spi ;
Java.policy
import javax.security.* ;
Tuyt Trm DANG NGOC -
}
grant codebase "file:SampleLoginModule.jar" {
permission javax.security.auth.AuthPermission "modifyPrincipals";
};
API XML
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 ;
Tuyt Trm DANG NGOC dimanche 29 mars 2015
Plan
Architectures multi-tiers : architecture 1, 2, 3tiers
J2EE : architecture gnrale
Composants J2EE : Servlets, JSP, EJB, JMS,
JAAS, JAXP, JavaMail, JNDI, etc.
Outils
dedveloppement
dveloppementetetdintgration
dintgration
Outils de
Produits existants
Conclusion
Tuyt Trm DANG NGOC -
J2EE SDK
J2EE SDK est une dfinition oprationnelle de la plateforme
J2EE
Fait par Sun Microsystem pour les dmonstrations, les
prototypes et les applications non-commerciales
Contient :
J2EE Application Server
Serveur Web
Base de donnes relationnelles
API J2EE
un kit de dveloppement et de dploiement
Dploiement J2EE
JAR Java ARchive
Fichier classe Java
EJB
Descripteurs de dploiement
XML
Plan
Architectures multi-tiers : architecture 1, 2, 3tiers
J2EE : architecture gnrale
Composants J2EE : Servlets, JSP, EJB, JMS,
JAAS, JAXP, JavaMail, JNDI, etc.
Outils de dveloppement et dintgration
Produits
existants
Produits existants
Conclusion
Tuyt Trm DANG NGOC -
Serveurs J2EE
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
Tuyt Trm DANG NGOC -
Plan
Architectures multi-tiers : architecture 1, 2, 3tiers
J2EE : architecture gnrale
Composants J2EE : Servlets, JSP, EJB, JMS,
JAAS, JAXP, JavaMail, JNDI, etc.
Outils de dveloppement et dintgration
Produits existants
Conclusion
Conclusion
Tuyt Trm DANG NGOC -
Vrification
des donnes
Servlet
de fiches
insertion
de la fiche
Message
derreur
gnration de
page derreur
JSP
Tuyt Trm DANG NGOC -
Construction de
la requte dinsertion
JDBC
Insertion
SGBD
Servlet
Servlet
Requte HTTP
JSP
JSP
fichier HTML
EJB
BeanSession
Session
Bean
BeanSession
Session
Bean
Bean
Bean
Entit
Entit
Bean
Bean
Entit
Entit
Base de donnes
relationnelles
Mainframe
Serveurs
de donnes
JDBC
Client
recuprer classes
Servlet
de classes
Listes de
classes
prsentation
liste de classes
JSP
Tuyt Trm DANG NGOC -
renvoie
classes
voir
notifica
tions
rcuprer
classes
EJB
Classes
JMS
EIS
renvoie
classes
pas de
notifica
tions