Dis papa, c est quoi un bus logiciel réparti?

Dimension: px
Commencer à balayer dès la page:

Download "Dis papa, c est quoi un bus logiciel réparti?"

Transcription

1 Dis papa, c est quoi un bus logiciel réparti? Raphael.Marvie@lifl.fr LIFL IRCICA Equipe GOAL Octobre Des sockets aux bus logiciels répartis

2 1 0. Une application répartie

3 2 Objectif Découvrir la notion et l architecture d un bus logiciel réparti, en concevant un petit bus simple from scratch. Construire un bus logiciel en 10 étapes : Chaque étape est un raffinement de la précédente Etape i + 1 = meilleure structuration de l étape i

4 3 Les services Service 1 : Hello world Une méthode hello avec un paramètre de type chaîne et retourne une chaîne : hello, + paramètre Deux méthodes lower et upper qui retournent le paramètre de type chaîne en minuscule ou majuscules Service 2 : Nombres premiers Calcule si un nombre est premier et retourne un booléen Calcule le carré d un nombre passé en paramètre Calcule la division de deux nombres passés en paramètre

5 4 1. Au début était la socket

6 5 Principe Deux programmes écrits en deux classes Java Une pour le serveur Server.java Une pour le client Client.java Dans chaque classe est implémenté Le code fonctionnel : manipulation des chaînes Le code technique : construction / analyse des messages réseau

7 6 Architecture version 1 Client Server Réseau

8 7 Interactions version 1 Client Server Servant connect () send (request) send (response)

9 8 Côté serveur Initialisation du réseau Instanciation d une socket serveur Gestion des requêtes Attente de connexion (accept) Initialisation des flux d entrée et de sortie Evaluation des requêtes Lecture de la requête sur le flux d entrée Création de la chaîne à retourner Ecriture de la réponse sur le flux de sortie

10 9 Code serveur (i) package step1 ; import java.io.* ; import java.net.* ; public class Server { private ServerSocket asock ; public Server () throws Exception { this.asock = new ServerSocket (12345) ; public static void main (String args[]) { Server s = new Server () ; s.run () ;

11 10 Code serveur (ii) public void run () throws Exception { while (true) { Socket sock = this.asock.accept () ; BufferedReader in = new BufferedReader (new InputStreamReader(sock.getInputStream ())); DataOutputStream out = new DataOutputStream (sock.getoutputstream ()); String msg = in.readline () ; String res = "Hello, " + msg + "\n" ; // fonctionnel out.writebytes (res) ;

12 11 Côté client Initialisation du réseau Instanciation d une socket de communication (connexion implicite) Gestion de l échange réseau Initialisation des flux d entrée et de sortie Demande de service Ecriture de la requête sur le flux de sortie Lecture de la réponse sur le flux entrée Affichage de la chaîne retournée Fermeture de la connexion

13 12 Code client (i) package step1 ; import java.io.* ; import java.net.* ; public class Client { private Socket sock ; public Client () throws Exception { this.sock = new Socket ("localhost", 12345) ; public static void main (String args[]) throws Exception { Client c = new Client () ; c.run (args[0]) ;

14 13 Code client (ii) public void run (String msg) throws Exception { BufferedReader in = new BufferedReader (new InputStreamReader(this.sock.getInputStream ())); DataOutputStream out = new DataOutputStream (this.sock.getoutputstream ()); out.writebytes (msg + "\n") ; String res = in.readline () ; System.out.println ("Server replied: " + res) ; this.sock.close();

15 14 Bénéfices et limitations Bénéfices Invocation d un service distant (hello world) Permet de réaliser des applications client / serveur Limitations Une seule connexion cliente à la fois Beaucoup de code très technique / peu de code métier (40 lignes de code technique pour une ligne de code métier) Un beau plat de spaghetti, non objet et difficilement évolutif

16 15 2. Gestionnaire de connexions

17 16 Principe Du côté serveur Etablissement de la connexion par le serveur (accept) La gestion de la connexion est déléguée Apparition d un objet Manager qui gère une connexion Du côté client Rien ne change pour le moment Réutilisation du client de l étape 1

18 17 Architecture version 2 Client Manager Réseau

19 18 Interactions version 2 Client Server Manager Servant create () connect () process (sock) send (request) send (response)

20 19 Côté serveur (Serveur) Intialisation De la socket d administration / serveur Création d un manager de connexions Gestion des requêtes Attente de connexion Délégation au manager

21 20 Côté serveur (Manager) Initialisation Rien de spécial Gestion des requêtes Initialisation du flux d entrée et de sortie Evaluation de la requête Lecture de la requête sur le flux entrée Création de la chaîne à retourner Ecriture de la réponse sur le flux de sortie

22 21 Code Serveur (i) package step2 ; import java.io.*; import java.net.*; public class Server { private ServerSocket asock ; private Manager mgr ; public Server () throws Exception { this.asock = new ServerSocket (12345) ; this.mgr = new Manager () ;

23 22 Code Serveur (ii) public void run () throws Exception { while (true) { Socket sock = this.asock.accept () ; this.mgr.process (sock) ; public static void main(string argv[]) throws Exception { Server s = new Server () ; s.run () ;

24 23 Code Manager package step2 ; import java.io.* ; import java.net.* ; public class Manager { public Manager () throws Exception { public void process (Socket sock) throws Exception { BufferedReader in =... DataOutputStream out =... String msg = in.readline () ; String res = "Hello, " + msg + "\n" ; out.writebytes (res) ;

25 24 Bénéfices et limitations Bénéfices Ebauche de structuration Distinction entre établir une connexion et la gérer Limitations Le manager ne sait répondre qu à une invocation Le code n est pas encore objet (i.e. le service)

26 25 3. Décodage des requêtes

27 26 Principe Côté serveur Le manager propose plusieurs services Le manager gère plusieurs requêtes par connexion Côté client Utilise les services séquentiellement Réalise plusieurs invocations avec la même connexion

28 27 Architecture version 3 Client Manager Réseau

29 28 Interactions version 3 Client Server Manager Servant create () connect () process (sock) send (request) send (response) send (request) send (response) send (request) send (response)

30 29 Côté serveur Gestion des requêtes par le Manager Initialisation des flux d entrée et de sortie Evaluation de la requête Lecture de la requête sur flux d entrée Décodage de la requête (quel service?) requête = numéro de service + arguments Evaluation du service demandé Ecriture de la réponse sur flux de sortie

31 30 Code Manager (i) public void process (Socket sock) throws Exception { BufferedReader in =... DataOutputStream out =... while (true) { String msg = in.readline () ; if (msg == null) // end of client connexion break ; String res ; switch (msg.charat (0)) {

32 31 Code Manager (ii) case 0 : res = "hello, " + msg.substring (1) + "\n" ; break ; case 1 : res = msg.substring (1).toLowerCase () + "\n" ; break ; case 2 : res = msg.substring (1).toUpperCase () + "\n" ; break ; default: res = "Unknown operation requested" ; out.writebytes (res) ;

33 32 Côté client Initialisation du réseau Instanciation de la socket de communication Gestion des échanges réseaux Intialisation des flux d entrée et de sortie Demande de service (x3) Requête réseau = numéro de service + arguments Ecriture requête, lecture réponse et affichage Fermeture de la connexion

34 33 Code Client (i) public void run (String msg) throws Exception { BufferedReader in =... DataOutputStream out =... String res ; out.writebytes ("0" + msg + "\n") ; res = in.readline () ; System.out.println ("Server replied (hello): " + res) ;

35 34 Code Client (ii) out.writebytes ("1" + msg + "\n") ; res = in.readline () ; System.out.println ("Server replied (lower): " + res) ; out.writebytes ("2" + msg + "\n") ; res = in.readline () ; System.out.println ("Server replied (upper): " + res) ; this.sock.close();

36 35 Bénéfices et limitations Bénéfices Un seul serveur propose plusieurs services Utilisation d une seule connexion par client Limitations Le code du service n est toujours pas objet Le code client est toujours un plat de spaghetti

37 36 4. Passage à un service objet

38 37 Principe Côté serveur Le service est implémenté comme un objet : le Servant Le manager est dédié au réseau décode les requêtes invoque le Servant Côté client Rien ne change

39 38 Architecture version 4 Client Servant Manager Réseau

40 39 Interactions version 4 Client Server Manager Servant create () create (servant) connect () process (sock) send (request) hello (str) send (response)

41 40 Côté serveur Initialisation du Manager dans le serveur Passage du Servant comme paramètre Gestion des requêtes par le Manager Initialisation des flux Evaluation des requêtes lecture et décodage de la requête invocation du Servant écriture de la réponse

42 41 Code Server public class Server { private ServerSocket asock ; private Manager mgr ; public Server () throws Exception { this.asock = new ServerSocket (12345) ; this.mgr = new Manager (new Servant ()) ; // unchanged

43 42 Code Servant public class Servant { public String hello (String msg) { return "hello, " + msg ; public String lower (String msg) { return msg.tolowercase () ; public String upper (String msg) { return msg.touppercase () ;

44 43 Code Manager (i) public class Manager { private Servant ref ; public Manager (Servant s) throws Exception { this.ref = s ; public void process (Socket sock) throws Exception { BufferedReader in =... DataOutputStream out =... while (true) { String msg = in.readline () ; if (msg == null) // no more to be read break ; String res ; switch (msg.charat (0)) {

45 44 Code Manager (i) case 0 : res = this.ref.hello (msg.substring (1)) + "\n" ; break ; case 1 : res = this.ref.lower (msg.substring (1)) + "\n" ; break ; case 2 : res = this.ref.upper (msg.substring (1)) + "\n" ; break ; default: res = "Unknown operation requested" ; out.writebytes (res) ;

46 45 Bénéfices et limitations Bénéfices Découplage complet entre code technique et code métier (côté serveur) Les services sont implantés comme des objets (Servant) Limitations L interface du service n est pas connue comme telle du client Le code client n est toujours pas objet

47 46 5. Passage à l objet du côté client

48 47 Principe Côté serveur Définition d un contrat à partager avec le client Le servant implémente le contrat commun Côté client Utilisation d un objet représentant le service : Proxy Même interface que le service Encapsule le code technique de gestion du réseau

49 48 Architecture version 5 Client Servant Proxy Contrat Manager Réseau

50 49 Interactions version 5 Client Proxy Server Manager Servant create () create (servant) init () connect () process (sock) hello (str) send (message) hello (str) send (message) return

51 50 Côté serveur Modifications Définition d un contrat de service Le servant implémente le contrat de service Contrat de service Définit toutes les méthodes accessibles à distance Chaque méthode peut lever une exception liée au réseau

52 51 Contrat de service package step5 ; interface Service { public String hello (String msg) throws Exception ; public String lower (String msg) throws Exception ; public String upper (String msg) throws Exception ;

53 52 Modification du Servant public class Servant implements Service { public String hello (String msg) throws Exception { return "hello, " + msg ; public String lower (String msg) throws Exception { return msg.tolowercase () ; public String upper (String msg) throws Exception { return msg.touppercase () ;

54 53 Côté client Programme client Instancie un proxy Invocation des méthodes du proxy Mise en œuvre du Proxy Implémente l interface de contrat Initialise la connexion au serveur Gère toute la partie échanges réseaux

55 54 Code du Client public class Client { private Service ref ; public Client () throws Exception { this.ref = (Service) new Proxy () ; public void run (String msg) throws Exception { System.out.println (this.ref.hello (msg)) ; System.out.println (this.ref.lower (msg)) ; System.out.println (this.ref.upper (msg)) ; // unchanged

56 55 Code du Proxy (i) public class Proxy implements Service { private Socket sock ; private BufferedReader in ; private DataOutputStream out ; public Proxy () throws Exception { this.sock = new Socket ("localhost", 12345) ; this.in =... this.out =... public String hello (String msg) throws Exception { this.out.writebytes ("0" + msg + "\n") ; String res = this.in.readline () ; return res ;

57 56 Code du Proxy (ii) public String lower (String msg) throws Exception { this.out.writebytes ("1" + msg + "\n") ; String res = this.in.readline () ; return res ; public String upper (String msg) throws Exception { this.out.writebytes ("2" + msg + "\n") ; String res = this.in.readline () ; return res ; protected void finalize () throws Throwable { this.sock.close () ;

58 57 Bénéfices et limitations Bénéfices Du point de vue du client la répartition est masquée Le service est vu et manipulé comme un objet local Limitations Comment utiliser des paramètres autres que de type String Comment désigner un service distant (sans le coder en dur)

59 58 6. Encodage et décodage des données

60 59 Principe Traduction des paramètres Empaquetage : application vers les messages réseau type de base vers représentation chaîne Dépaquetage : messages réseau vers application représentation chaîne vers type de base Opérations de traduction symétriques Serveur : dépaquetage des paramètres, empaquetages des valeurs de retour Client : empaquetage des paramètres, dépaquetages des valeurs de retour

61 60 Architecture version 6 Client Servant Proxy Contrat Manager Réseau

62 61 Interactions version 6 Client Proxy Server Manager Servant create () create (servant) init () connect () process (sock) sqr (val) marshal () send (message) unmarshall () sqr (val) send (message) marshall () return unmarshall ()

63 62 Côté serveur Modification du contrat de service Offre une opération supplémentaire Calcul du carré d un entier (retourne un entier) Modification de la mise en œuvre Manager : message réseau supplémentaire et décodage entier Servant : implémentation de la nouvelle méthode

64 63 Contrat Service interface Service { public String hello (String msg) throws Exception ; public String lower (String msg) throws Exception ; public String upper (String msg) throws Exception ; public int sqr (int a) throws Exception ;

65 64 Code Manager public void process (Socket sock) throws Exception { // unchanged switch (msg.charat (0)) { // unchanged for 0-2 case 3 : int val = Integer.parseInt (msg.substring (1)) ; res = "" + this.ref.sqr (val) + "\n" ; break ; default: res = "Unknown operation requested" ; out.writebytes (res) ;

66 65 Code Servant public class Servant implements Service { // unchanged public int sqr (int val) throws Exception { return val * val ;

67 66 Côté client Modification de la mise en œuvre Le proxy implémente la nouvelle opération Le programme client utilise la nouvelle opération Mise en œuvre du Proxy Empaquetage de l entier paramètre dans une chaîne Dépaquetage de l entier contenu dans la chaîne retour

68 67 Code Proxy public class Proxy implements Service { // unchanged public int sqr (int val) throws Exception { this.out.writebytes ("3" + val + "\n") ; String res = this.in.readline () ; return Integer.parseInt (res) ;

69 68 Code Client public class Client { // unchanged public void run (String msg) throws Exception { System.out.println (this.ref.hello (msg)) ; System.out.println (this.ref.lower (msg)) ; System.out.println (this.ref.upper (msg)) ; int res = this.ref.sqr (123) ; System.out.println (res) ;

70 69 Bénéfices et limitations Bénéfices Utilisation transparente des types de base autres que String Vision objet d une application répartie Limitations Comment désigner un service distant sans le coder en dur Comment écrire un client pouvant utiliser plusieurs services

71 70 7. Notion de référence distante

72 71 Principe Désignation d un service distant Equivalent à une référence Java mais en réparti Permet d établir une connexion avec un service Définition d une référence (base) Hôte distant : adresse IP Serveur distant : port IP

73 72 Architecture version 7 Client Servant Proxy Contrat Manager Réseau

74 73 Interactions version 7 Client Proxy Server Manager Servant create () create (servant) init () connect () process (sock) hello (str) marshal () send (message) unmarshall () hello (str) send (message) marshall () return unmarshall ()

75 74 Côté client Fourniture de la référence du serveur Propriété java contenant la référence Référence donnée sous la forme machine:port Ajout d un méthode de gestion des références Analyse la référence Instancie et initialise le Proxy d accès au service # utilisation avec une reference > java -Dservice.reference=localhost:12345 \ step7.client DrNo

76 75 Code Client public class Client { private Service ref ; public Client () throws Exception { this.ref = (Service) this.ref2proxy () ; // other methods unchanged

77 76 Code Client public Proxy ref2proxy () throws Exception { Properties props = System.getProperties () ; String ref = props.getproperty ("service.reference") ; if (ref == null) throw new Exception ("no server reference given") ; String parts[] = ref.split (":") ; if (parts.length < 2) throw new Exception ("malformed reference") ; String host = parts [0] ; int port = Integer.parseInt (parts [1]) ; return new Proxy (host, port) ;

78 77 Bénéfices et limitations Bénéfices Le code client n est pas lié à une instance de serveur Possibilité d utiliser différents serveurs Limitations Un seul objet service par serveur Un client ne peut utiliser qu un objet à la fois Le client doit connaître le type de la référence à la compilation

79 78 8. Notion d adaptateur d objet

80 79 Principe Rendre plusieurs objets (Servant) disponibles dans un serveur Chaque objet est associé à une clé unique dans le serveur Un référence inclut désormais la clé de l objet Adaptateur d objet Aiguillage et lien entre le réseau et les objets Gère les clés associées aux objets et leurs références Raffinement du Manager Adaptateur : lien référence / objet d implémentation Squelette : décodeur de requête pour un objet

81 80 Architecture version 8 Client Servant Servant Proxy Contrat Skeleton Skeleton ObjectAdapter Réseau

82 81 Interactions version 8 Client Proxy Server Object Adapter Skeleton Servant init () create () create (servant) register (skel) init () connect () process () run (sock) hello (str) marshal () send (message) unmarshall () hello (str) send (message) marshall () return unmarshall ()

83 82 Côté serveur Adaptateur d objet Gestion du accept et du routage des requêtes Connecte les objets et crée leurs références Squelette de service Défini par rapport au contrat de Servant Décodeur de messages réseau pour un Servant particulier Définition de deux squelettes Programme serveur Crée un adaptateur d objet Crée deux squelettes et servants, les enregistre Active l adaptateur d objet

84 83 Contrats interface ServiceA { public String hello (String msg) throws Exception ; public String lower (String msg) throws Exception ; public String upper (String msg) throws Exception ; interface ServiceB { public boolean isprime (int a) throws Exception ; public int sqr (int a) throws Exception ;

85 84 Code Server public class Server { public void run () throws Exception { ObjectAdapter oa = ObjectAdapter.init () ; SkeletonA skel_a = new SkeletonA (new ServantA ()) ; oa.register (skel_a) ; System.out.println (oa.obj2ref (skel_a)) ; SkeletonB skel_b = new SkeletonB (new ServantB ()) ; oa.register (skel_b) ; System.out.println (oa.obj2ref (skel_b)) ; oa.start () ; // rest is unchanged

86 85 Code ObjectAdapter (i) public class ObjectAdapter extends Thread { private static ObjectAdapter ref ; private ServerSocket asock ; private Vector skeletons ; protected ObjectAdapter () throws Exception { this.skeletons = new Vector () ; this.asock = new ServerSocket (0) ; public static ObjectAdapter init () throws Exception { if (ObjectAdapter.ref == null) ObjectAdapter.ref = new ObjectAdapter () ; return ObjectAdapter.ref ;

87 86 Code ObjectAdapter (ii) public String obj2ref (Skeleton obj) { int key = this.skeletons.indexof (obj) ; if (key == -1) return null ; String host = null ; try { host = InetAddress.getLocalHost ().gethostaddress () ; catch (UnknownHostException uhe) { return null ; int port = this.asock.getlocalport () ; return host + ":" + port + ":" + key ;

88 87 Code ObjectAdapter (iii) public void run () { try { while (true) { Socket sock = this.asock.accept () ; BufferedReader in =... String msg = in.readline () ; if (msg == null) { // no more to be read sock.close () ; continue ; int key = Integer.parseInt (msg.substring (0,1)) ;

89 88 Code ObjectAdapter (iv) try { Skeleton skel = (Skeleton)this.skeletons.elementAt (key) ; skel.init (sock) ; new Thread (skel).start () ; catch (ArrayIndexOutOfBoundsException e) { sock.close () ; catch (Exception e) { return ;

90 89 Interface Skeleton interface Skeleton extends Runnable { void init (Socket sock) throws Exception ;

91 90 Code SkeletonA (i) public class SkeletonA implements Skeleton { private ServantA ref ; public SkeletonA (ServantA s) throws Exception { this.ref = s ; public void init (Socket sock) throws Exception { this.in =... this.out =...

92 91 Code SkeletonA (ii) public void run () { try { while (true) { String msg = this.in.readline () ; if (msg == null) // no more to be read break ; String res ; switch (msg.charat (0)) { case 0 : res = this.ref.hello (msg.substring (1)) + "\n" ; break ; // etc.

93 92 Côté client Modification du proxy Prise en compte des clés d objets Connexion en deux temps au squelette Définition d un Proxy pour chacun des services Deux chaînes Proxy / Skeleton / Servant Fourniture de la référence comme une propriété Définition de deux programes clients Chacun utilise un proxy pour un service particulier

94 93 Code ProxyA (changes) public class ProxyA implements ServiceA { private Socket sock ; private BufferedReader in ; private DataOutputStream out ; public ProxyA (String host, int port, String key) throws Exception { this.sock = new Socket (host, port) ; this.in =... this.out =... this.out.writebytes (key + "\n") ;

95 94 Code ClientA (changes i) public class ClientA { private ServiceA ref ; public ClientA () throws Exception { this.ref = (ServiceA) this.ref2proxy () ; public void run (String msg) throws Exception { System.out.println (this.ref.hello (msg)) ; System.out.println (this.ref.lower (msg)) ; System.out.println (this.ref.upper (msg)) ;

96 95 Code ClientA (changes ii) public ProxyA ref2proxy () throws Exception { Properties props = System.getProperties () ; String ref = props.getproperty ("service.reference") ; if (ref == null) throw new Exception ("no server reference given") ; String parts[] = ref.split (":") ; if (parts.length < 3) throw new Exception ("malformed reference") ; String host = parts [0] ; int port = Integer.parseInt (parts [1]) ; String key = parts [2] ; return new ProxyA (host, port, key) ;

97 96 Bénéfices et limitations Bénéfices Serveur multi-services et multi-threadé (Skeleton) Identification complète d un service adresse:port:cle Les références sont créées au niveau du serveur Limitations Comment définir et utiliser des exceptions applicatives? Comment simplifier la traduction de référence en Proxy

98 97 9. Exceptions et traduction référence vers Proxy

99 98 Principe Exceptions Ajout d un code dans les messages de retour 0 : OK ; sinon un numéro d exception... Traduction automatique de références en Proxy Extension des références pour contenir le type des références Contrôle du typage lors de la création du proxy Instanciation et initialisation automatique du Proxy

100 99 Architecture version 9 Client Servant Servant Proxy Contrat Skeleton Skeleton ObjectAdapter Réseau

101 100 Interactions version 9 Client Proxy Server Object Adapter Skeleton Servant init () create () create (servant) register (skel) init () connect () process () run (sock) hello (str) marshal () send (message) unmarshall () hello (str) send (message) marshall () return unmarshall ()

102 101 Chargement automatique de proxy Motivations Transformation d une référence de service distant en proxy Contrôler la conformité entre le type du proxy et du service Modifications des implémentations Extension des références Ajout du type du service dans la référence : adresse:port:cle:type Règles de nommage des classes NomDuServiceProxy, NomDuServiceSkeleton, NomDuServiceServant Les squelettes fournissent le type du service (pour construire la référence) Interface de base Proxy implémentée par tous les proxy (pour init)

103 102 Opération ref2proxy (i) public class Util { public static Proxy ref2proxy (String ref) throws Exception { String parts[] = ref.split (":") ; if (parts.length < 4) throw new Exception ("malformed reference") ; String host = parts [0] ; int port = Integer.parseInt (parts [1]) ; String key = parts [2] ; String type = parts [3] ;

104 103 Opération ref2proxy (ii) // instanciation du bon proxy (present dans classpath) Class pclass = Class.forName (type + "Proxy") ; Proxy p = (Proxy) pclass.newinstance () ; // initialisation p.init (host, port, key) ; return p ;

105 104 Côté serveur Gestion des exceptions Définition des exceptions dans le contrat du service Modification des squelettes pour transférer les exceptions Ajout de try catch pour les exceptions applicatives Ajout d un code en début de message réponse réseau Typage des références Modification des squelettes : fourniture du type du servant Modification de l opération obj2ref dans l adapteur d objet

106 105 Contrat ServiceB public class DivByZero extends Exception { interface ServiceB { public boolean isprime (int a) throws Exception ; public int sqr (int a) throws Exception ; public int div (int a, int b) throws Exception, DivByZero ;

107 106 Interface Skeleton interface Skeleton extends Runnable { void init (Socket sock) throws Exception ; String type () ;

108 107 Code ServiceBSkeleton (changes i) public String type () { return "step9.serviceb" ; public void run () { // unchanged // managing isprime method from ServiceB case 0 : int val0 = Integer.parseInt (msg.substring (1)) ; res = "0" + this.ref.isprime (val0) + "\n" ; break ;

109 108 Code ServiceBSkeleton (changes ii) // managing div method from ServiceB case 2 : String args [] = msg.substring (1).split (" ") ; int arg0 = Integer.parseInt (args [0]) ; int arg1 = Integer.parseInt (args [1]) ; try { res = "0" + this.ref.div (arg0,arg1) + "\n" ; catch (DivByZero e) { res = "1\n" ; // first exception raised break ; // etc.

110 109 Code ObjectAdapter public String obj2ref (Skeleton obj) { int key = this.skeletons.indexof (obj) ; if (key == -1) return null ; String host = null ; try { host = InetAddress.getLocalHost ().gethostaddress () ; catch (UnknownHostException uhe) { return null ; int port = this.asock.getlocalport () ; return host + ":" + port + ":" + key + ":" + obj.type () ;

111 110 Côté client Modification des proxy Gestion des exceptions Si code interne supérieur à 0 alors lever l exception équivalente Modification des clients Utilisation de l opération ref2proxy Plus besoins préciser le nom du Proxy Utiliser le proxy avec le type de son interface

112 111 Code ServiceBProxy (changes i) public boolean isprime (int val) throws Exception { // automatic conversion of int to string out.writebytes ("0" + val + "\n") ; String res = in.readline () ; return Boolean.valueOf (res.substring (1)).booleanValue () ;

113 112 Code ServiceBProxy (changes ii) public int div (int a, int b) throws Exception, DivByZero { out.writebytes ("2" + a + " " + b + "\n") ; String res = in.readline () ; if (res.charat (0) == 1 ) throw new DivByZero () ; return Integer.parseInt (res.substring (1)) ;

114 113 Code ClientB (changes) public ClientB () throws Exception { Properties props = System.getProperties () ; String ref = props.getproperty ("service.reference") ; this.refb = (ServiceB) Util.ref2proxy (ref) ;

115 114 Bénéfices et limitations Bénéfices Bénéfices des exceptions sur le code produit Contrôle du typage à l utilisation des références Limitations Partage des références compliqué et réduit au fichier Utiliser facilement plusieurs services dans un même client?

116 Service de désignation

117 116 Principe Désignation des objets par des noms symboliques Association : nom symbolique / références Les serveurs enregistrent une référence avec un nom Les clients recherchent une référence avec un nom Service notoire : l annuaire

118 117 Architecture version 10 Client Naming Servant Service Servant Proxy Contrats Skeleton OAdapt Skeleton OAdapt Réseau

119 118 Interactions version 10 (*) Client Naming Proxy Service Proxy NameServer Naming Proxy Server Service connect () init () send (message) bind (ref) create () init () connect () lookup () send (message) ref2proxy () connect () hello (str) return send (message) send (message)

120 119 Annuaire Service au même titre qu un autre Défini par une interface Hébergé par un serveur Accessible au travers d un Proxy Particularités Serveur dédié initialisé sur un port prédéfini Connaître la machine = point d entrée du système Proxy particulier pour simplifier l utilisation Patron de conception Singleton

121 120 Contrat NameService interface NameService { public void export (String name, String ref) throws Exception ; public String lookup (String name) throws Exception ;

122 121 Proxy Naming (extrait) public class Naming { private static Naming ref ; private Naming () throws Exception { Properties props = System.getProperties () ; String host = props.getproperty ("naming.host") ; // etc. public static Naming init () throws Exception { if (Naming.ref == null) Naming.ref = new Naming () ; return Naming.ref ; // etc. // etc.

123 122 Côté serveur Diffusion des références Plus d affichage sur la ligne de commande Export des références de services Vers une application répartie Le serveur est client du service de nommage Utilisation du proxy de ce dernier Unique point d entrée : référence du service de nommage $ java -Dnaming.host=localhost step9.server

124 123 Code Server (changes) public void run () throws Exception { Naming ns = Naming.init () ; ObjectAdapter oa = ObjectAdapter.init () ; ServiceASkeleton skel_a = new ServiceASkeleton (new ServiceAServant ()) ; oa.register (skel_a) ; ns.export ("ServiceA", oa.obj2ref (skel_a)) ; ServiceBSkeleton skel_b = new ServiceBSkeleton (new ServiceBServant ()) ; oa.register (skel_b) ; ns.export ("ServiceB", oa.obj2ref (skel_b)) ; oa.run () ;

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. RMI Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. Méthode proche de RPC. Outils et classes qui rendent l'implantation d'appels de méthodes d'objets distants aussi simples

Plus en détail

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Remote Method Invocation Les classes implémentant Serializable

Remote Method Invocation Les classes implémentant Serializable Parallélisme Architecture Eric Goubault Commissariat à l Energie Atomique Saclay Classe qui implémente la méthode distante (serveur): - dont les méthodes renvoient un objet serializable - ou plus généralement

Plus en détail

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant. Chapitre 7 Le mode de communication en connexion est, a priori, supporté par le protocole TCP. Ce protocole fournit une communication fiable; les données sont transmises comme chaînes d octets. Avant de

Plus en détail

Gestion distribuée (par sockets) de banque en Java

Gestion distribuée (par sockets) de banque en Java Gestion distribuée (par sockets) de banque en Java Université Paris Sud Rappel sur la solution locale de gestion simple de banque L objet de cet exercice était de créer une application java qui implante

Plus en détail

Calcul Parallèle. Cours 5 - JAVA RMI

Calcul Parallèle. Cours 5 - JAVA RMI Calcul Parallèle Cours 5 - JAVA RMI Eric Goubault Commissariat à l Energie Atomique & Chaire Ecole Polytechnique/Thalès Saclay Le 28 février 2012 Eric Goubault 1 28 février 2012 Remote Method Invocation

Plus en détail

Synchro et Threads Java TM

Synchro et Threads Java TM Synchro et Threads Java TM NICOD JEAN-MARC Master 2 Informatique Université de Franche-Comté UFR des Sciences et Techniques septembre 2008 NICOD JEAN-MARC Synchro et Threads avec Java TM 1 / 32 Sommaire

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA Stéphane Vialle Stephane.Vialle@supelec.fr http://www.metz.supelec.fr/~vialle 1 Principes 2 Architecture 3 4 Aperçu d utilisation

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

RMI le langage Java XII-1 JMF

RMI le langage Java XII-1 JMF Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine

Plus en détail

Remote Method Invocation en Java (RMI)

Remote Method Invocation en Java (RMI) Remote Method Invocation en Java (RMI) Modélisation et construction des applications réparties (Module M-4102C) J. Christian Attiogbé Fevrier 2015 J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation

Plus en détail

Java RMI. Arnaud Labourel Courriel: arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 8 mars 2011

Java RMI. Arnaud Labourel Courriel: arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 8 mars 2011 Java RMI Arnaud Labourel Courriel: arnaud.labourel@lif.univ-mrs.fr Université de Provence 8 mars 2011 Arnaud Labourel (Université de Provence) Java RMI 8 mars 2011 1 / 58 Web services Services par le réseau

Plus en détail

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE JAVA INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

Programmation Par Objets

Programmation Par Objets Programmation Par Objets Structures de données package java.util B. Carré Polytech Lille 1 Tableaux et structures de données Tableaux «Objets» taille fixe type des éléments : primitif (homogène) ou objets

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle F. Butelle, E. Viennet, Système GTR2 IUT Paris 3 Communication inter-processus (IPC) : tubes & sockets exemples en C et en Java F. Butelle F. Butelle, E. Viennet, Système GTR2 IUT Paris 3 Java : implémentation

Plus en détail

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry. : Java Agent DEvelopment framework Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.fr Introduction à la plateforme JADE 1) Modèle d agent 2) Services 3) Norme FIPA

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

Une introduction à Java

Une introduction à Java Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Java - Historique Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)

Plus en détail

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

Objets et Programmation. origine des langages orientés-objet

Objets et Programmation. origine des langages orientés-objet Objets et Programmation origine des langages orientés-objet modularité, encapsulation objets, classes, messages exemples en Java héritage, liaison dynamique G. Falquet, Th. Estier CUI Université de Genève

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

Auto-évaluation Programmation en Java

Auto-évaluation Programmation en Java Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Composants Logiciels. Le modèle de composant de CORBA. Plan

Composants Logiciels. Le modèle de composant de CORBA. Plan Composants Logiciels Christian Pérez Le modèle de composant de CORBA Année 2010-11 1 Plan Un rapide tour d horizon de CORBA 2 Introduction au modèle de composant de CORBA Définition de composants CORBA

Plus en détail

Corrigé des exercices sur les références

Corrigé des exercices sur les références Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile

Plus en détail

Intergiciel - concepts de base

Intergiciel - concepts de base Intergiciel - concepts de base Ada Diaconescu, Laurent Pautet & Bertrand Dupouy ada.diaconescu _at_ telecom-paristech.fr Rappel : système réparti Système constitué de multiples ressources informatiques

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

Java Naming and Directory Interface

Java Naming and Directory Interface Introduction Java Naming and Directory Interface Gaël Thomas gael.thomas@lip6.fr Université Pierre et Marie Curie Master Informatique M2 Spécialité SAR Java Naming and Directory Interface (JNDI) Java Standard

Plus en détail

Introduction au langage Java

Introduction au langage Java Introduction au langage Java 1 Introduction : Langage développé par Sun et purement orienté objet. N a pas de rapport direct avec Javascript développé par Netscape. Les applications java peuvent être des

Plus en détail

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

Programmation Internet en Java

Programmation Internet en Java Chapitre 8 Programmation Internet en Java Vous avez déjà utilisé Internet, le plus connu des inter-réseaux mondiaux d ordinateurs et quelques-uns de ses services, en particulier le web et le courrier électronique.

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

Plus en détail

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée) Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée) Propriétés Description Intitulé long Formation concernée Matière Présentation Développement d un logiciel de messagerie

Plus en détail

2 Chapitre 1 Introduction

2 Chapitre 1 Introduction 1 Introduction Ce livre présente les Enterprise JavaBeans 2.0 et 1.1 qui constituent la troisième et la deuxième version de la spécification des Enterprise JavaBeans. Tout comme la plate-forme Java a révolutionné

Plus en détail

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework Gaël de Chalendar CEA LIST / LIC2M Journée de Présentation des Technologies WebContent INSTN 14/12/2009 Présentation de gsoap Plan

Plus en détail

Cahier des Charges du Projet Domotique. Choquet Mathieu Masson Jérôme Groupe 6. Domotique. p.1

Cahier des Charges du Projet Domotique. Choquet Mathieu Masson Jérôme Groupe 6. Domotique. p.1 Choquet Mathieu Masson Jérôme Groupe 6 Domotique p.1 SOMMAIRE : Introduction...... I/ Envoi de SMS...... II/ Architecture...... III/ Serveur...... IV/ Détection de mouvement...... V/ Problème rencontré......

Plus en détail

PROGRAMMATION PAR OBJETS

PROGRAMMATION PAR OBJETS PROGRAMMATION PAR OBJETS Java Environnement et constructions spécifiques Walter Rudametkin Maître de Conférences Bureau F011 Walter.Rudametkin@polytech-lille.fr B. Carré Polytech Lille 2 Java (Sun 1995)

Plus en détail

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. Encapsulation L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. La visibilité dépend des membres : certains membres peuvent être visibles et d'autres

Plus en détail

Threads. Threads. USTL http://www.lifl.fr/ routier 1

Threads. Threads. USTL http://www.lifl.fr/ routier 1 Threads USTL http://www.lifl.fr/ routier 1 Rappels - Définitions un Process est un programme qui tourne et dispose de ses propres ressources mémoire. OS multi-tâche plusieurs process en concurrence un

Plus en détail

Environnements de développement (intégrés)

Environnements de développement (intégrés) Environnements de développement (intégrés) Tests unitaires, outils de couverture de code Patrick Labatut labatut@di.ens.fr http://www.di.ens.fr/~labatut/ Département d informatique École normale supérieure

Plus en détail

Projet de programmation (IK3) : TP n 1 Correction

Projet de programmation (IK3) : TP n 1 Correction Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public

Plus en détail

Programmation client-serveur sockets - RPC

Programmation client-serveur sockets - RPC Master Informatique M Plan de la suite Programmation client-serveur sockets - RPC Sacha Krakowiak Université Joseph Fourier Projet Sardes (INRIA et IMAG-LSR) http://sardes.inrialpes.fr/people/krakowia

Plus en détail

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites Java Licence Professionnelle 2009-2010 Cours 7 : Classes et méthodes abstraites 1 Java Classes et méthodes abstraites - Le mécanisme des classes abstraites permet de définir des comportements (méthodes)

Plus en détail

Projet gestion d'objets dupliqués

Projet gestion d'objets dupliqués Projet gestion d'objets dupliqués Daniel Hagimont Daniel.Hagimont@enseeiht.fr 1 Projet Service de gestion d'objets dupliqués Mise en cohérence lors de la prise d'un verrou sur un objet Pas de verrous imbriqués

Plus en détail

Création d une application JEE

Création d une application JEE Création d une application JEE Rédacteurs : Alexandre Baillif, Philippe Lacomme, Raksmey Phan et Michaël PLAN Date : juillet 2010 Mise à jour : Michaël PLAN Date : octobre 2014 Avertissement : - ce document

Plus en détail

Développement Logiciel

Développement Logiciel Développement Logiciel Éxamen session 1-2012-2013 (Vendedi 25 mai, 9h-11h) Seuls les documents liés directement au cours sont autorisés (comme dit sur le site) : sujets de TD, notes de cours, notes personnelles

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

Langage Java. Classe de première SI

Langage Java. Classe de première SI Langage Java Table des matières 1. Premiers pas...2 1.1. Introduction...2 1.2. Mon premier programme...2 1.3. Les commentaires...2 2. Les variables et les opérateurs...2 3. La classe Scanner...3 4. Les

Plus en détail

La base de données XML exist. A. Belaïd

La base de données XML exist. A. Belaïd La base de données XML exist Introduction Qu est-ce-que exist? C est une base de donnée native, entièrement écrite en Java XML n est pas une base de données en soi Bien qu il possède quelques caractéristiques

Plus en détail

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets Licence Professionnelle CISII, 2009-2010 Cours 2 : Classes et Objets 1 Classes et Objets Objectifs des LOO : - Manipuler des objets - Découper les programmes suivant les types des objets manipulés - Regrouper

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Architecture Orientée Service, JSON et API REST

Architecture Orientée Service, JSON et API REST UPMC 3 février 2015 Précedemment, en LI328 Architecture générale du projet Programmation serveur Servlet/TOMCAT Aujourd hui Quelques mots sur les SOA API - REST Le format JSON API - REST et Servlet API

Plus en détail

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose. Université Paris 7 M2 II Protocole Internet TP3 Mail Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose. 1 Protocole SMTP 1. Le protocole SMTP est définit dans

Plus en détail

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T> Page 1 sur 5 TP3 Lectures préalables : l Java_II l tutorial Interfaces Thèmes du TP : l la classe Object l Vector l Stack Une pile d'objects Les éléments de la classe Pile sont maintenant des instances

Plus en détail

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

Programmation répartie RPC & RMI

Programmation répartie RPC & RMI Programmation répartie RPC & RMI Plan du cours Introduction Définitions Problématiques Architectures de distribution Distribution intra-applications Notion de processus Programmation multi-thread Distribution

Plus en détail

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr Initiation à JAVA et à la programmation objet raphael.bolze@ens-lyon.fr O b j e c t i f s Découvrir un langage de programmation objet. Découvrir l'environnement java Découvrir les concepts de la programmation

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Programme Compte bancaire (code)

Programme Compte bancaire (code) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; Programme Compte bancaire (code) namespace compte_bancaire /// Classe Program public

Plus en détail

Package Java.util Classe générique

Package Java.util Classe générique Package Java.util Classe générique 1 Classe Vector La taille est dynamique: dès qu un tableau vectoriel est plein, sa taille est doublée, triplée, etc. automatiquement Les cases sont de type Object add(object

Plus en détail

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2 Langage et Concepts de Programmation Objet Travaux Dirigés no2 Pôle Informatique École Nationale Supérieure des Mines de St-Etienne Vous trouverez plus de détails sur les concepts abordés lors de ce TD

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

OS Réseaux et Programmation Système - C5

OS Réseaux et Programmation Système - C5 OS Réseaux et Programmation Système - C5 Rabie Ben Atitallah rabie.benatitallah@univ-valenciennes.fr RPC - XDR Rappel RPC: Remote Procedure Call Besoin d un environnement de haut niveau pour le développement

Plus en détail

ACTIVITÉ DE PROGRAMMATION

ACTIVITÉ DE PROGRAMMATION ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,

Plus en détail

Flux de données Lecture/Ecriture Fichiers

Flux de données Lecture/Ecriture Fichiers Flux de données Lecture/Ecriture Fichiers 1 Un flux de données est un objet qui représente une suite d octets d un programme pour une certaine destination ou issus d une source pour un programme flux d

Plus en détail

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers. Programmation Orientée Objet - Licence TIS CM8/9 Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.fr Poitiers, le 13/03/2006 Rappel sur la séance précédente La fois précédente, nous avons vu : 1 UML

Plus en détail

TD/TP PAC - Programmation n 3

TD/TP PAC - Programmation n 3 Université Paris Sud Licence d informatique/iup-miage2 Année 2004-2005 Auteur : Frédéric Vernier Semaine : 11-16 octobre 2004 Conditions : sur machine avec les outils standards java web: http://vernier.frederic.free.fr/indexpac.html

Plus en détail

Programmation Réseau. Sécurité Java. Jean-Baptiste.Yunes@univ-paris-diderot.fr. UFR Informatique 2012-2013. jeudi 4 avril 13

Programmation Réseau. Sécurité Java. Jean-Baptiste.Yunes@univ-paris-diderot.fr. UFR Informatique 2012-2013. jeudi 4 avril 13 Programmation Réseau Sécurité Java Jean-Baptiste.Yunes@univ-paris-diderot.fr UFR Informatique 2012-2013 Java Sécurité? différentes sécurités disponibles et contrôlables intégrité contrôle d accès signature/authentification/cryptographie

Plus en détail

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5 UNIVERISTE MOHAMMED PREMIER Faculté des Sciences d Oujda Oujda - Maroc Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5 Pr. El Mostafa DAOUDI Département de Mathématiques

Plus en détail

Intergiciels pour la répartition CORBA : Common Object Request Broker. Patrice Torguet torguet@irit.fr Université Paul Sabatier

Intergiciels pour la répartition CORBA : Common Object Request Broker. Patrice Torguet torguet@irit.fr Université Paul Sabatier Intergiciels pour la répartition CORBA : Common Object Request Broker Patrice Torguet torguet@irit.fr Université Paul Sabatier Plan du cours 2 Introduction à CORBA Architecture de l ORB Implémentation

Plus en détail

Arbres binaires de recherche

Arbres binaires de recherche 1 arbre des comparaisons 2 recherche dichotomique l'arbre est recalculé à chaque recherche 2 5 3 4 7 9 1 6 1 2 3 4 5 6 7 9 10 conserver la structure d'arbre au lieu de la reconstruire arbre binaire de

Plus en détail

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris : Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens

Plus en détail

Une introduction à la technologie EJB (2/3)

Une introduction à la technologie EJB (2/3) Une introduction à la technologie EJB (2/3) 1 Les singletons des EJB 3.1 1.1 Synchronisation gérée manuellement Depuis la version 3.1, des EJB Statless à instance unique sont maintenant disponibles : ce

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Généralités sur le Langage Java et éléments syntaxiques.

Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...

Plus en détail

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET I. INTRODUCTION 1.1. HISTORIQUE 1991: Concepts Java pour Sun -conception d'un langage pour des appareils électroniques(code embarqué) -syntaxe proche du C++

Plus en détail

Un ordonnanceur stupide

Un ordonnanceur stupide Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire

Plus en détail

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008 Introduction Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008 Forms 10g permet l utilisation du JAVA côté client et côté application

Plus en détail

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Le MSMQ. Version 1.0. Pierre-Franck Chauvet Le MSMQ Version 1.0 Z Pierre-Franck Chauvet 2 [Le MSMQ] [Date : 10/10/09] Sommaire 1 Introduction... 3 2 Le Concept... 5 2.1 Les messages... 5 2.2 Les files d attentes... 5 2.3 WorkGroup... 7 2.4 Active

Plus en détail

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Serveur d'archivage 2007 Installation et utilisation de la BD exist Type du document Procédure d'installation Auteur(s) Eric Bouladier Date de création 26/02/20007 Domaine de diffusion tous Validé par Equipe Versions Date Auteur(s) Modifications V1.00 26/02/2007 Eric Bouladier

Plus en détail

Protocole SSH-2.0. Tuan-Tu, TRAN. Janvier 2009

Protocole SSH-2.0. Tuan-Tu, TRAN. Janvier 2009 Janvier 2009 1 2 Etablissement des clés de session Protection des données échangées 3 Identification par mot de passe Identification par clé publique Identification par hôte 4 Utilisations de Secure Shell

Plus en détail

Corrigés des premiers exercices sur les classes

Corrigés des premiers exercices sur les classes Corrigés des premiers exercices sur les classes Exercice 2.1.1 utilisation d une classe Voici le texte d une classe représentant de façon sommaire un compte bancaire et les opérations bancaires courantes.

Plus en détail

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr Aide mémoire UML & Java 1ère partie : Introduction marc.lemaire@u-cergy.fr 9 septembre 2014 1 2014 v1.11 Table des matières 1 Généralités 6 1.1 Notations utilisées.....................................

Plus en détail

Bases Java - Eclipse / Netbeans

Bases Java - Eclipse / Netbeans Institut Galilée PDJ Année 2014-2015 Master 1 Environnements Java T.P. 1 Bases Java - Eclipse / Netbeans Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement

Plus en détail

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN fbertin@neotilus.com

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN fbertin@neotilus.com Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184 Frédéric BERTIN fbertin@neotilus.com Présentaion : Mobile 3D Graphics API JSR 184 M3G :présentation Package optionnel de l api J2ME. Prend

Plus en détail

Lier Erlang avec d autres langages de programmation

Lier Erlang avec d autres langages de programmation 16 Lier Erlang avec d autres langages de programmation Les logiciels actuels, quelle que soit leur taille, sont souvent écrits dans plusieurs langages de programmation. Généralement, les pilotes de périphériques

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée forax at univ-mlv dot fr - ParisJUG Java.next() - Mars 2012 What Else? Lambda == Inner class? Java a des lambdas depuis la version 1.1 Exemple utilisant

Plus en détail

Programmation Réseau SSH et TLS (aka SSL)

Programmation Réseau SSH et TLS (aka SSL) Programmation Réseau SSH et TLS (aka SSL) Jean-Baptiste.Yunes@liafa.jussieu.fr Coloriages: François Armand armand@informatique.univ-paris-diderot.fr UFR Informatique 2011-2012 Réseau et Sécurité Problèmes

Plus en détail