Modèle à composants. Daniel Hagimont. IRIT/ENSEEIHT 2 rue Charles Camichel - BP TOULOUSE CEDEX 7. Remerciements

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

Download "Modèle à composants. Daniel Hagimont. IRIT/ENSEEIHT 2 rue Charles Camichel - BP 7122 31071 TOULOUSE CEDEX 7. Remerciements"

Transcription

1 Modèle à composants Daniel Hagimont IRIT/ENSEEIHT 2 rue Charles Camichel - BP TOULOUSE CEDEX 7 Daniel.Hagimont@enseeiht.fr Remerciements Eric Bruneton Sacha Krakowiak 1

2 Des objets aux composants Notion de composant logiciel Nécessité perçue très tôt [McIlroy 1968] mais conception et réalisation n'ont pas suivi Les objets : première approche pour la décomposition Encapsulation (séparation interface-réalisation) Mécanismes de réutilisation (héritage, délégation) Limitation des objets Pas d'expression explicite des ressources requises par un objet (autres objets, services fournis par l'environnement) Pas de vue globale de l'architecture d'une application Pas de possibilité d'expression de besoins non-fonctionnels (par ex. persistance, transactions, etc.) Peu d'outils pour le déploiement et l'administration 2

3 Modèles et infrastructures Pour mettre en œuvre des composants, il faut Un modèle de composants, qui définit les entités et leur mode d'interaction et de composition Une infrastructure à composants, qui met en œuvre le modèle et permet de construire, déployer, administrer et exécuter des applications conformes au modèle Situation actuelle Les infrastructures industrielles (EJB, CCM,.Net, OSGi) sont limitées Des modèles issus de la recherche ont été proposés (Fractal, CCM, ) ainsi que des infrastructures prototypes Plus récemment : SCA (Service Component Architecture)... 3

4 Que doit fournir un modèle de composants? Encapsulation Interface = seule voie d'accès, séparation interface-réalisation Possibilité de définir des interface multiples Composabilité Dépendances explicites (expression des ressources fournies et requises) Composition hiérarchique (un assemblage de composants est un composant) Capacité de description globale Si possible exprimée formellement (langage de description) Réutilisation et évolution Modèles génériques de composants (types de composants) Adaptation (interfaces de contrôle) Reconfiguration 4

5 Que doit fournir une infrastructure à composants? Couverture du cycle de vie Non limitée aux phases de développement et d'exécution Administration Déploiement : installation et activation des composants Surveillance : collecte et intégration de données, tenue à jour de la configuration Contrôle : réaction aux événements critiques (alarme, surcharge, détection d'erreur) Service communs Propriétés non-fonctionnelles (persistance, transactions, QoS) 5

6 Paradigmes de la composition Eléments de la composition Composant. Unité de composition et de déploiement, qui remplit une fonction spécifique et peut être assemblé avec d'autres composants. Il porte une description des interfaces requises et fournies. Connecteur. Elément permettant d'assembler des composants en utilisant leurs interfaces fournies et requises. Remplit 2 fonctions : liaison et communication. Configuration : un assemblage de composants (peut, selon les modèles, être lui-même un composant). NB1: la notion de composant est préservée à l'exécution pour faciliter l'adaptation dynamique NB2 : la différence entre composant et connecteur est une différence de fonction, non de nature : un connecteur est lui-même un composant 6

7 Exemples de schémas de composition Liaison simple Client serveur Une autre vue : le connecteur comme composant Client serveur Une autre vue : le connecteur comme composant composite Client talon session talon serveur 7

8 Exemples de schémas de composition subscriber subscriber Publish-subscribe connector subscriber Publisher and subscriber 8

9 Décrire la composition Une description formelle Donner un support aux notions d'architecture logicielle Composants, interfaces, connecteurs, configuration Permettre un traitement formel Vérification, preuves (contrôle de types) Permettre d'automatiser (ou assister) des opérations globales (mettant en jeu des configurations) Déploiement Reconfiguration Servir d'aide à la documentation (description globale, visualisation) Notion d'adl (Architecture Description Language) 9

10 Eléments d'un ADL Description des composants Définition des interfaces (requises, fournies) Types (synchrone, asynchrone, ) Signatures, contrats, annotations Description des configurations Association interfaces fournies-requises Directe (invisible, réalisée par édition de liens) Via un connecteur : description Composition hiérarchique (si le modèle l'autorise) Interfaces importées/exportées Interface graphique (visualisation, action) Aspects dynamiques (reconfiguration) 10

11 Organisation logique d'un composant Interface externe du contrôleur Interface fournie contenu Interface requise Interface interne contrôleur du contrôleur La séparation entre contrôleur et contenu est motivée par la séparation des préoccupations : isoler la partie purement fonctionnelle (propre à l'application) 11

12 Fonctions d'un contrôleur Gestion du cycle de vie Création, destruction Activation, passivation Gestion des composants inclus Si le modèle comporte des composants composites Liaison Connexion avec d'autres composants Réflexion Introspection des interface, composants Met en œuvre l'inversion de contrôle Hollywood : Ne nous appelez pas, c'est nous qui vous appellerons Contrôleur Contenu 12

13 Le modèle à composants Fractal Fractal Modèle général, peu de restrictions Fondé sur une base mathématique rigoureuse Plusieurs implémentations Très utilisé dans la recherche Source Auteurs Eric Bruneton (France Telecom R&D) Jean-Bernard Stefani (INRIA) 13

14 Plan Introduction Premier aperçu Définition du modèle Déploiement des composants Langage de description d'architecture Reconfiguration dynamique Conclusion 14

15 Aperçu : l'exemple Comanche Serveur HTTP minimal Écoute sur un ServerSocket Pour chaque connexion: Lance un nouveau thread Lit l'url Envoie le fichier demandé Ou un message d'erreur public class Server implements Runnable { private Socket s; public Server (Socket s) { this.s = s; } public static void main (String[] args) throws IOException { ServerSocket s = new ServerSocket(8080); while (true) { new Thread(new Server(s.accept())).start(); } } public void run () { try { InputStreamReader in = new InputStreamReader(s.getInputStream()); PrintStream out = new PrintStream(s.getOutputStream()); String rq = new LineNumberReader(in).readLine(); System.out.println(rq); if (rq.startswith("get ")) { File f = new File(rq.substring(5, rq.indexof(' ', 4))); if (f.exists() &&!f.isdirectory()) { InputStream is = new FileInputStream(f); byte[] data = new byte[is.available()]; is.read(data); is.close(); out.print("http/ OK\n\n"); out.write(data); } else { out.print("http/ Not Found\n\n"); out.print("<html>document not found.</html>"); } } out.close(); s.close(); } catch (IOException _) { } } } 15

16 Conception : trouver les composants Composants statiques Durée de vie Celle de l'application Correspondent aux «services» Composants dynamiques Durée de vie plus courte Correspondent aux «données» Définition des composants Trouver Les services [ les structures de données ] Un service = un composant public class Server implements Runnable { private Socket s; public Server (Socket s) { this.s = s; } public static void main (String[] args) throws IOException { ServerSocket s = new ServerSocket(8080); while (true) { new Thread(new Server(s.accept())).start(); } } public void run () { try { InputStreamReader in = new InputStreamReader(s.getInputStream()); PrintStream out = new PrintStream(s.getOutputStream()); String rq = new LineNumberReader(in).readLine(); System.out.println(rq); if (rq.startswith("get ")) { File f = new File(rq.substring(5, rq.indexof(' ', 4))); if (f.exists() &&!f.isdirectory()) { InputStream is = new FileInputStream(f); byte[] data = new byte[is.available()]; is.read(data); is.close(); out.print("http/ OK\n\n"); out.write(data); } else { out.print("http/ Not Found\n\n"); out.print("<html>document not found.</html>"); } } out.close(); s.close(); } catch (IOException _) { } } } 16

17 Conception : trouver les composants Receiver Scheduler Analyzer Logger FileHandler ErrorHandler public class Server implements Runnable { private Socket s; public Server (Socket s) { this.s = s; } public static void main (String[] args) throws IOException { ServerSocket s = new ServerSocket(8080); while (true) { new Thread(new Server(s.accept())).start(); } } public void run () { try { InputStreamReader in = new InputStreamReader(s.getInputStream()); PrintStream out = new PrintStream(s.getOutputStream()); String rq = new LineNumberReader(in).readLine(); System.out.println(rq); if (rq.startswith("get ")) { File f = new File(rq.substring(5, rq.indexof(' ', 4))); if (f.exists() &&!f.isdirectory()) { InputStream is = new FileInputStream(f); byte[] data = new byte[is.available()]; is.read(data); is.close(); out.print("http/ OK\n\n"); out.write(data); } else { out.print("http/ Not Found\n\n"); out.print("<html>document not found.</html>"); } } out.close(); s.close(); } catch (IOException _) { } } } 17

18 Conception : définir l'architecture Structure hiérarchique : Correspond aux niveaux d'abstraction Dépendances : Liaisons entre les composants Receiver Analyzer Logger Frontend Scheduler File Handler Comanche Backend Dispatcher Handler Error Handler 18

19 Conception : définir les interfaces Interfaces entre composants : Doivent être définis avec attention Pour être le plus stable possible ne doivent concerner que les aspects fonctionnels Pour Comanche public interface Logger { void log (String msg); } public interface Scheduler { void schedule (Runnable task); } public interface RequestHandler { void handlerequest (Request r) throws IOException; } public class Request { Socket s; Reader in; PrintStream out; String url; } Passage en paramètre de la requête 19

20 Implémentation : composants Composants sans dépendances : Implémentés comme en Java standard public class BasicLogger implements Logger { public void log (String msg) { System.out.println(msg); } } public class SequentialScheduler implements Scheduler { public synchronized void schedule (Runnable task) { task.run(); } } public class MultiThreadScheduler implements Scheduler { public void schedule (Runnable task) { new Thread(task).start(); } } 20

21 Implémentation : composants Composants avec dépendances : Première solution : ne permet pas la configuration statique public class RequestReceiver implements Runnable { } private Scheduler s = new MultiThreadScheduler(); private RequestHandler rh = new RequestAnalyzer(); // rest of the code not shown Deuxième solution: ne permet pas la reconfiguration dynamique public class RequestReceiver implements Runnable { } private Scheduler s; private RequestHandler rh; public RequestReceiver (Scheduler s, RequestHandler rh) { this.s = s; this.rh = rh; } // rest of the code not shown 21

22 Implémentation : composants Composants avec dépendances : public class RequestReceiver implements Runnable, BindingController { private Scheduler s; private RequestHandler rh; public String[] listfc () { return new String[] { "s", "rh" }; } public Object lookupfc (String n) { if (n.equals("s")) { return s; } else if (n.equals("rh")) { return rh; } else return null; } public void bindfc (String n, Object v) { if (n.equals("s")) { s = (Scheduler)v; } else if (n.equals("rh")) { rh = (RequestHandler)v; } } public void unbindfc (String n) { if (n.equals("s")) { s = null; } else if (n.equals("rh")) { rh = null; } } // 22

23 Configuration : par programme Avantages : Méthode la plus directe Aucun outils requis Inconvénients : Propices aux erreurs Ne montre pas l'architecture public class Server { public static void main (String[] args) { RequestReceiver rr = new RequestReceiver(); RequestAnalyzer ra = new RequestAnalyzer(); RequestDispatcher rd = new RequestDispatcher(); FileRequestHandler frh = new FileRequestHandler(); ErrorRequestHandler erh = new ErrorRequestHandler(); Scheduler s = new MultiThreadScheduler(); Logger l = new BasicLogger(); rr.bindfc("rh", ra); rr.bindfc("s", s); ra.bindfc("rh", rd); ra.bindfc("l", l); rd.bindfc("h0", frh); rd.bindfc("h1", erh); rr.run(); } } 23

24 Configuration : avec un ADL Avantages : Bonne séparation des aspects architecture et déploiement Vérifications statiques possibles Liaisons invalides, Liaisons manquantes, Inconvénients : L'architecture n'est pas très visible <definition name="handlertype"> <interface name="rh" role="server" </definition> signature="comanche.requesthandler"/> <definition name="filehandler" extends="handlertype"> <content class="comanche.filerequesthandler"/> </definition> <definition name="comanche" extends="runnabletype"> <component name="fe" definition="frontend"/> <component name="be" definition="backend"/> <binding client="this.r" server="fe.r"/> <binding client="fe.rh" server="be.rh"/> </definition> 24

25 Configuration : avec un outil graphique Outils graphique pour éditer des fichiers ADL La représentation en graphe montre clairement l'architecture 25

26 Reconfiguration Statique : stopper l'application, changer l'adl, redémarrer Pas toujours possible, par exemple pour raisons de disponibilité Dynamique : reconfigurer l'application pendant son exécution Pose des problèmes de cohérence Outil de base pour aider à les résoudre : gestion du cycle de vie Exemple : Remplacer le composant FileHandler dynamiquement : RequestHandler rh = new FileAndDirRequestHandler(); rd.unbindfc("h0"); rd.bindfc("h0", rh); Le RequestDispatcher (composant englobant) doit être suspendu pendant l'opération 26

27 Cycle de vie Interface LifeCycleController : 1ère solution public class RequestDispatcher implements RequestHandler, BindingController, LifeCycleController { private boolean started; private int counter; public String getfcstate () { return started? STARTED : STOPPED; } public synchronized void startfc () { started = true; notifyall(); } public synchronized void stopfc () { while (counter > 0) { wait(); } started = false; } public void handlerequest (Request r) throws IOException { synchronized (this) { while (!started) { wait(); } ++counter; } try { // original code } finally { synchronized (this) { --counter; if (counter == 0) { notify(); } } } } // rest of the class unchanged 27

28 Reconfiguration: cycle de vie Interface LifeCycleController : autres solutions Implémenter l'interface dans une (sous) classe séparée Meilleure séparation des aspects Composants déployables avec ou sans gestion du cycle de vie Générer cette classe ou cette sous classe automatiquement Génération de code statique ou dynamique Dans le contrôleur LifeCycleController BindingController RequestHandler 28

29 Reconfiguration : autres APIs Avant de stopper ou de reconfigurer un composant, il faut obtenir sa référence D'où les interfaces d'introspection (et de reconfiguration) suivantes : public interface Component { Object[] getfcinterfaces (); Object getfcinterface (String itfname); Type getfctype (); } public interface ContentController { Object[] getfcinternalinterfaces (); Object getfcinternainterface(string itfname); Component[] getfcsubcomponents (); void addfcsubcomponent (Component c); void removefcsubcomponent(component c); } Une interface Fractal implante à la fois l'interface Interface et l'interface métier, ce qui explique le type Object. 29

30 30 Quelques choix de déploiement BC BC BC BC LC BC LC LC LC LC BC LC LC BC C LC BC C LC C LC C LC C LC BC C LC C LC BC C LC CC BC C LC CC BC C LC CC BC C LC CC BC C C BC C C C BC C C BC C CC BC C CC BC C CC BC C CC

31 Quelques choix de déploiement C CC BC LC C BC LC C BC LC C LC C LC C LC C BC LC C LC 31

32 En résumé Les composants Encapsulent du code fonctionnel Possèdent des interfaces (requises et fournies) Possèdent un ensemble de contrôleurs Les contrôleurs Fournissent une API de gestion des composants (non fonctionnelles) L'ADL est un langage de description des composants des assemblages de composants 32

33 Plan Introduction Premier aperçu Définition du modèle Déploiement des composants avec l'api Langage de description d'architecture Reconfiguration dynamique Conclusion 33

34 Modèle : fondations Composant Fractal : Entité à l'exécution Par exemple, en Java, des objets et non pas des classes ou des.jar De n'importe quel type Service, ressource, donnée, activité, processus, protocole, liaison, Sans cible ni granularité particulière Application, intergiciel (middleware), système d exploitation 34

35 Modèle : structure externe De l extérieur, un composant Fractal : Est une boite noire, Avec des points d accès appelés interfaces (externes) Chaque interface à un nom (unique dans le composant) Une signature (ensemble d opérations i.e. méthodes en Java) Un rôle (client, serveur ou contrôle) component, Component interfaces de contrôle interfaces serveur -ou fournies -reçoivent des appels -à gauche par convention s, I t, J u, I v, I w, K interfaces clientes -ou requises -émettent des appels -à droite par convention 35

36 Modèle : structure externe Composant de base : Aucune interface de contrôle => pas d'introspection Équivalent à un objet au sens des langages orienté objets Premier niveau de contrôle : introspection Introspection des composants : Interface Component Donne accès à la liste des interfaces d'un composant Introspection des interfaces : Interface Interface Donne accès au nom d'une interface Donne accès à l'interface Component du composant Autres niveaux de contrôle : BindingController, LyfeCycleController, ContentController... 36

37 Modèle : structure interne composant composite A l intérieur, un composant : À un contrôleur et un contenu Contenu Composants primitifs Composants composites Composants partagés Le contrôleur peut (entre autres) : contenu contrôleur composant primitif Fournir des fonctions d introspection et de reconfiguration Intercepter les appels d opération entrants et sortants Pour les aspects non fonctionnels (cycle de vie, transactions, sécurité, ) Modifier le comportement de ses sous contrôleurs 37

38 Modèle : structure interne Liaisons Liaison primitive Lie une interface cliente à une interface serveur Dans le même espace d adressage Liaison multiple Lie une interface cliente À un nombre arbitraire d interface serveur Liaison composite Est formée d'un ensemble de composants de liaisons Liaisons normales, d import et d export 38

39 Modèle : structure interne Interfaces internes Interfaces du contrôleur Visibles seulement des sous composants Interfaces complémentaires Deux interfaces internes et externes De même nom et même signature, mais de rôle opposés interfaces complémentaires liaison d'export Exporte une interface d'un sous composant à l'extérieur du composant englobant liaison d'import Importe une interface externe à l'intérieur d'un composant composite 39

40 Modèle : typage Type de composant ensemble de types d interface non modifiable à l exécution c, J Type d interface nom signature contingence obligatoire, optionnelle cardinalité singleton, collection s, I c : interface de type singleton c1, J c2, J c3, J c : interface de type collection 40

41 Modèle : API Le modèle se définit principalement au travers de ses API de contrôle 41

42 Modèle : API d'introspection Interface de contrôle pour la découverte d'interfaces Les interfaces ont un nom (valide dans le composant qui possède l'interface) Les interfaces sont typées (interface fonctionnelle et Interface Fractal) public interface Component { Object[] getfcinterfaces (); Object getfcinterface (String itfname) throws NoSuchInterfaceException; Type getfctype (); } public interface Interface { String getfcitfname (); Type getfcitftype (); Component getfcitfowner (); boolean isfcinternalitf (); } public interface Type { boolean isfcsubtypeof (Type type); } 42

43 Modèle : API de gestion des liaisons Interface de gestion des liaisons entre interfaces de composants Les interfaces liées doivent être dans le même composant composite englobant Les liaisons complexes peuvent impliquer des composants de liaison interface BindingController { String[] listfc (); Object lookupfc (string clientitfname) throws NoSuchInterfaceException; void bindfc (String clientitfname, Object serveritf) throws NoSuchInterfaceException, IllegalBindingException, IllegalLifeCycleException; void unbindfc (String clientitfname) throws NoSuchInterfaceException, IllegalBindingException, IllegalLifeCycleException; } 43

44 Modèle : API de gestion du contenu Interface de gestion de la structure hiérarchique des composants Gestion des liaisons entre sous et super composants interface ContentController { Object[] getfcinternalinterfaces (); Object getfcinternalinterface (String itfname) throws NoSuchInterfaceException; Component[] getfcsubcomponents (); void addfcsubcomponent (Component c) throws IllegalContentException, IllegalLifeCycleException; void removefcsubcomponent (Component c) throws IllegalContentException, IllegalLifeCycleException; } interface SuperController { Component[] getfcsupercomponents (); } 44

45 Modèle : API de gestion d'attributs Les attributs sont des propriétés configurables des composants interface AttributeController { } interface MyAttributeController extends AttributeController { int getmyattributex (); void setmyattributex (int newattributex); } 45

46 Modèle : API de gestion du cycle de vie Permet d'arrêter / démarrer des composants Gère 2 états STARTED et STOPPED Peut s'appuyer sur l'arrêt/démarrage de threads ou de sous composants interface LifeCycleController { string getfcstate (); void startfc () throws IllegalLifeCycleException; void stopfc () throws IllegalLifeCycleException; } 46

47 Plan Introduction Premier aperçu Définition du modèle Déploiement des composants avec l'api Langage de description d'architecture Reconfiguration dynamique Conclusion 47

48 Déploiement : avec l API Component boot = Fractal.getBootstrapComponent(); class Fractal static getbootstrapcomponent interface Component Object[] getfcinterfaces Object getfcinterface getfctype interface Interface Component getfcitfowner getfcitfname m rcomp m ccomp s s scomp getfcitftype isfcinternalitf 48

49 Déploiement : avec l API TypeFactory tf = Fractal.getTypeFactory(boot); interface Component Interface[] getfcinterfaces Interface getfcinterface getfctype TypeFactory createfcinterfacetype createfctype On devrait écrire (TypeFactory)boot.getFcInterface("type-factory"); 49

50 Déploiement : avec l API ComponentType rtype = tf.createfctype(new InterfaceType[] { tf.createfcitftype("m", "pkg.main", false, false, false)}); TypeFactory createfcinterfacetype createfctype ComponentType extends Type getfcinterfacetypes getfcinterfacetype InterfaceType extends Type getfcitfname getfcitfsignature isfcclientitf isfcoptionalitf isfccollectionitf m m ccomp s s scomp rcomp 50

51 Déploiement : avec l API ComponentType ctype = tf.createfctype(new InterfaceType[] { tf.createfcitftype("m", "pkg.main", false, false, false), tf.createfcitftype("s", "pkg.service", true, false, false)}); ComponentType stype = tf.createfctype(new InterfaceType[] { tf.createfcitftype("s", "pkg.service", false, false, false), tf.createfcitftype("attribute-controller","pkg.serviceattributes", )}); nom signature isclient isoptional iscollection m m ccomp s s scomp rcomp 51

52 Déploiement : avec l API GenericFactory gf = Fractal.getGenericFactory(boot); GenericFactory newfcinstance 52

53 Déploiement : avec l API Component rcomp = gf.newfcinstance(rtype, "composite", null); LifeCycleController, BindingController, ContentController contenu m rcomp 53

54 Déploiement : avec l API Component ccomp = gf.newfcinstance(ctype, "primitive", "pkg.clientimpl"); LifeCycleController, BindingController m m ccomp s rcomp 54

55 Déploiement : avec l API Component scomp = gf.newfcinstance(stype, "parametricprimitive", "pkg.serverimpl"); si attributs m m ccomp s s scomp rcomp 55

56 Déploiement : avec l API Fractal.getContentController(rComp).addFcSubComponent(cComp); ContentController getfcinternalinterfaces getfcinternalinterface getfcsubcomponents addfcsubcomponent removefcsubcomponent m m ccomp s s scomp rcomp 56

57 Déploiement : avec l API Fractal.getContentController(rComp).addFcSubComponent(sComp); m m ccomp s s scomp rcomp 57

58 Déploiement : avec l API Fractal.getBindingController(rComp).bindFc( "m", ccomp.getfcinterface("m")); BindingController listfc lookupfc bindfc unbindfc m m ccomp s s scomp rcomp 58

59 Déploiement : avec l API Fractal.getBindingController(cComp).bindFc( "s", scomp.getfcinterface("s")); m m ccomp s s scomp rcomp 59

60 Déploiement : avec l API Fractal.getLifeCycleController(rComp).startFc(); ((pkg.main)rcomp.getfcinterface("m")).main(null); LifeCycleController getfcstate startfc stopfc m m ccomp s s scomp rcomp 60

61 Plan Introduction Premier aperçu Définition du modèle Déploiement des composants avec l'api Langage de description d'architecture Reconfiguration dynamique Conclusion 61

62 Déploiement : Fractal ADL Définition des types de composants <definition name="roottype"> <interface name="m" role="server" signature="pkg.main" contingency="mandatory" cardinality="singleton"/> </definition> <definition name="clienttype"> <interface name="m" role="server" signature="pkg.main"/> <interface name="s" role="client" signature="pkg.service"/> </definition> optionnel 62

63 Déploiement : Fractal ADL Héritage entre définitions <definition name="clienttype" extends="roottype"> <interface name="s" role="client" signature="pkg.service"/> </definition> Est équivalent à : <definition name="clienttype"> <interface name="m" role="server" signature="pkg.main" contingency="mandatory" cardinality="singleton"/> <interface name="s" role="client" signature="pkg.service"/> </definition> 63

64 Déploiement : Fractal ADL Héritage entre définitions (suite) <definition name="extendedclienttype" extends="clienttype"> <interface name="s" role="client" signature="pkg.extendedservice"/> </definition> Est équivalent à : <definition name="extendedclienttype"> <interface name="m" role="server" signature="pkg.main" contingency="mandatory" cardinality="singleton"/> <interface name="s" role="client" signature="pkg.extendedservice"/> </definition> 64

65 Déploiement : Fractal ADL Définition des composants primitifs <definition name="basicclient" extends="clienttype"> <content class="pkg.clientimpl"/> </definition> <definition name="basicserver" extends="servertype"> <content class="pkg.serverimpl"/> <attributes signature="pkg.serviceattributes"> <attribute name="header" value="-> "/> <attribute name="count" value="1"/> </attributes> </definition> 65

66 Déploiement : Fractal ADL Définition des composants composites <definition name="basicclientserver" extends="roottype"> <component name="client" definition="basicclient"/> <component name="server" definition="basicserver"/> <binding client="this.m" server="client.m"/> <binding client="client.s" server="server.s"/> </definition> m m client s s server BasicClientServer 66

67 Déploiement : Fractal ADL Définition des composants composites (suite) <definition name="abstractclientserver" extends="roottype"> <component name="client" definition="clienttype"/> <!-- pas d'implémentation --> <component name="server" definition="servertype"/> <!-- pas d'implémentation --> <binding client="this.m" server="client.m"/> <binding client="client.s" server="server.s"/> </definition> <definition name="basicclientserver" extends="abstractclientserver"> <component name="client" definition="basicclient"/> <component name="server" definition="basicserver"/> </definition> 67

68 Déploiement : Fractal ADL Création d'un composant avec l'adl (en Java) en ligne de commande java org.objectweb.fractal.adl.launcher template par programme Factory f = FactoryFactory.getFactory(FRACTAL_BACKEND); Component c = (Component)f.newComponent("template", null); les définitions doivent être dans le CLASSPATH 68

69 Composants primitifs : utilisation d'annotation : une interface public interface Service { : un composant Fournit les interfaces qu'il public class ServerA implements Service { : une interface fournie importée signature=java.lang.runnable.class, cardinality=cardinality.singleton, contingency=contingeny.mandatory)} public class Client implements Runnable { } 69

70 Composants primitifs : utilisation d'annotation une propriété configurable d'un composant Génère un controller CompAttibuteController (pour un composant private String message : une interface = "service", cardinality = Cardinality.COLLECTION) private Map<String,Service> services = new : une méthode à exécuter lors d'un private void init() {... } 70

71 Plan Introduction Premier aperçu Définition du modèle Déploiement des composants Langage de description d'architecture Reconfiguration dynamique Conclusion 71

72 Reconfiguration dynamique ContentController rcompcc = Fractal.getContentController(rComp); Component ccomp = rcompcc.getfcsubcomponents()[0]; Component scomp = rcompcc.getfcsubcomponents()[1]; Fractal.getLifeCycleController(rComp).stopFc(); Fractal.getBindingController(cComp).unbindFc("s"); m m ccomp s s scomp rcomp 72

73 Reconfiguration dynamique rcompcc.removefcsubcomponent(scomp); m m ccomp s rcomp 73

74 Reconfiguration dynamique scomp = gf.newfcinstance(stype, "primitive", "pkg.newserverimpl"); rcompcc.addfcsubcomponent(scomp); m m ccomp s s scomp rcomp 74

75 Reconfiguration dynamique Fractal.getBindingController(cComp). bindfc("s", scomp.getfcinterface("s")); Fractal.getLifeCycleController(rComp).startFc(); m m ccomp s s scomp rcomp 75

76 Bilan de Fractal Principes architecturaux pour l ingénierie des systèmes Construction par composition de briques logicielles : les composants Vision homogène de la topologie des systèmes logiciels applications, intergiciel, systèmes d exploitation Gestion uniforme des ressources, des activités et des domaines de contrôle Couverture du cycle de vie complet : - développement, déploiement, supervision Réalisation d un support d exécution pour composants : Fractal Julia Le modèle peut être mis en oeuvre dans de nombreux environnements (Think, Plasma...) des tutoriaux en ligne... 76

Composants logiciels Introduction aux composants

Composants logiciels Introduction aux composants Des objets aux composants Composants logiciels Introduction aux composants Sacha Krakowiak Université Joseph Fourier Projet Sardes (INRIA et IMAG-LSR) http://sardes.inrialpes.fr/~krakowia! Notion de composant

Plus en détail

Introduction au Déploiement

Introduction au Déploiement Introduction au Déploiement Noël De Palma - Projet SARDES - INRIA - IMAG LSR Remerciement à d. donsez 03/03/06 PLAN Définition et problématique OSGI FRACTAL JADE Conclusion 03/03/06 2 Définition Environnement

Plus en détail

Modélisation et évaluation de performance des systèmes basés composants

Modélisation et évaluation de performance des systèmes basés composants 9 ième Atelier en Evaluation de Performances Aussois 1-4 juin 2008 Modélisation et évaluation de performance des systèmes basés composants N.Salmi, P.Moreaux, M.Ioualalen LISTIC, Polytech'Savoie LSI, USTHB

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

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

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

FROGi : Déploiement de composants Fractal sur OSGi

FROGi : Déploiement de composants Fractal sur OSGi FROGi : Déploiement de composants Fractal sur OSGi Humberto Cervantes, Mikael Désertot, Didier Donsez Universidad Autonoma Metropolitana-Iztapalapa, San Rafael Atlixco Nº 186, Col. Vicentina, C.P. 09340

Plus en détail

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

Dis papa, c est quoi un bus logiciel réparti? Dis papa, c est quoi un bus logiciel réparti? Raphael.Marvie@lifl.fr LIFL IRCICA Equipe GOAL Octobre 2006 10. Des sockets aux bus logiciels répartis 1 0. Une application répartie 2 Objectif Découvrir la

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

Introduction : les processus. Introduction : les threads. Plan

Introduction : les processus. Introduction : les threads. Plan IN328 Programmation distribuée avec Java et J2EE 2 - Threads en Java Introduction : les processus Un processus est un ensemble d instructions à exécuter, un espace mémoire réservé et éventuellement d autres

Plus en détail

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet TP Composants Java ME - Java EE Vous allez, dans ce TP, construire une architecture client serveur, plus précisément MIDlet cliente, servlet serveur. Pour cela, on va d'abord installer la partie serveur

Plus en détail

Composants logiciels Exemples : Java Beans, Enterprise Java Beans

Composants logiciels Exemples : Java Beans, Enterprise Java Beans Composants logiciels Exemples : Java Beans, Enterprise Java Beans Sacha Krakowiak Université Joseph Fourier Projet Sardes (INRIA et IMAG-LSR) http://sardes.inrialpes.fr/~krakowia Introduction : évolution

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

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

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011 Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr Université de Provence 9 février 2011 Arnaud Labourel (Université de Provence) Exclusion Mutuelle 9 février 2011 1 / 53 Contexte Epistémologique

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

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java Info0604 Programmation multi-threadée Cours 5 Programmation multi-threadée en Java Pierre Delisle Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique 18 février 2015 Plan

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

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

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

Introduction à la programmation concurrente

Introduction à la programmation concurrente Introduction à la programmation concurrente Moniteurs Yann Thoma Reconfigurable and Embedded Digital Systems Institute Haute Ecole d Ingénierie et de Gestion du Canton de Vaud This work is licensed under

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

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

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation Cycle Ingénierie 2e année SIGL Dernière mise à jour : 19/10/2006 Christophe Porteneuve Threads Principes Cycle de vie Création java.lang.thread

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

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

Android et le Cloud Computing

Android et le Cloud Computing Android et le Cloud Computing 1 Plan de l'exposé Rappels sur Android et le cloud Présentation de GCM Notions fondamentales de GCM Construire un projet GCM Ecrire un client GCM (récepteur GCM) Ecrire un

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

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

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

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

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

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés) Introduction à la POO 1. Histoire de la POO 9 2. Historique du 12 La conception orientée objet 1. Approche procédurale et décomposition fonctionnelle 13 2. La transition vers l'approche objet 14 3. Les

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

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

Administration d'infrastructures logicielles avec Jade

Administration d'infrastructures logicielles avec Jade Administration d'infrastructures logicielles avec Jade Daniel Hagimont IRIT, décembre 2006 Contexte Infrastructures logicielles réparties Complexité et hétérogénéité Besoin d administration Fonctions d

Plus en détail

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki Institut Supérieur de Gestion Cours pour 3 ème LFIG Java Enterprise Edition Introduction Bayoudhi Chaouki 1 Java EE - Objectifs Faciliter le développement de nouvelles applications à base de composants

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

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

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

Messagerie asynchrone et Services Web

Messagerie asynchrone et Services Web Article Messagerie asynchrone et Services Web 1 / 10 Messagerie asynchrone et Services Web SOAP, WSDL SONT DES STANDARDS EMERGEANT DES SERVICES WEB, LES IMPLEMENTATIONS DE CEUX-CI SONT ENCORE EN COURS

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

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 Plan 1. Généralités sur la persistance des données dans les applications 2. La connection

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

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

Héritage presque multiple en Java (1/2)

Héritage presque multiple en Java (1/2) Héritage presque multiple en Java (1/2) Utiliser deux classes ou plus dans la définition d'une nouvelle classe peut se faire par composition. class Etudiant{ int numero; Diplome d; float passeexamen(examen

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

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

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

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

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

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

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

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

Web Tier : déploiement de servlets

Web Tier : déploiement de servlets Web Tier : déploiement de servlets 1 / 35 Plan 1 Introduction 2 Servlet : Principe de fonctionnement 3 Création et développement sur un serveur JEE 4 Quelques méthodes de l API des servlets 5 Utilisation

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Chapitre 10. Les interfaces Comparable et Comparator 1 Chapitre 10: Les interfaces Comparable et Comparator 1/5 Chapitre 10 Les interfaces Comparable et Comparator 1 1 Ce chapitre a été extrait du document "Objets, Algorithmes, Patterns" de [René Lalement],

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

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

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/

Plus en détail

Tolérance aux Fautes des Grappes d Applications J2EE. Applications Internet dynamiques

Tolérance aux Fautes des Grappes d Applications J2EE. Applications Internet dynamiques Application statique Tolérance aux Fautes des Grappes d Applications J2EE Sara Bouchenak Sacha Krakowiak, Noël de Palma, Stéphane Fontaine Projet SARDES INRIA IMAG CFSE'4, 6-8 avril 2005 Tolérance aux

Plus en détail

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

Avant-propos 1. Avant-propos...3 2. Organisation du guide...3 3. À qui s'adresse ce guide?...4

Avant-propos 1. Avant-propos...3 2. Organisation du guide...3 3. À qui s'adresse ce guide?...4 Les exemples cités tout au long de cet ouvrage sont téléchargeables à l'adresse suivante : http://www.editions-eni.fr. Saisissez la référence ENI de l'ouvrage EP5EJAV dans la zone de recherche et validez.

Plus en détail

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web. ASTRIUM - Toulouse JEE Formation 2013 TP JEE Développement Web en Java Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web. Figure 1 Architecture

Plus en détail

Design patterns. Design patterns - définition. Design patterns - avantages

Design patterns. Design patterns - définition. Design patterns - avantages Design patterns Conception UML Implantation Java Anne Lapujade 1 Design patterns - définition 2 v Objectif : proposer des solutions standardisées à des problèmes de conception classiques v Design pattern

Plus en détail

Programmation par composants (1/3) Programmation par composants (2/3)

Programmation par composants (1/3) Programmation par composants (2/3) Programmation par composants (1/3) La programmation par composant vise le développement de logiciel par aggrégation de briques logicielles existantes est indépendante de la POO La programmation par composant

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

CORBA. (Common Request Broker Architecture)

CORBA. (Common Request Broker Architecture) CORBA (Common Request Broker Architecture) Projet MIAGe Toulouse Groupe 2 1 CORBA, introduction (1/4) Les systèmes répartis permettent de créer des applications basées sur des composants auto-gérables,

Plus en détail

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s) Propriétés du Document Source du Document SDK_accords.odt Titre du Document SDK Python et Java pour le développement de services ACCORD Module(s) PyaccordsSDK, JaccordsSDK Responsable Prologue Auteur(s)

Plus en détail

Architectures Web Services RESTful

Architectures Web Services RESTful Architectures Web Services RESTful Alexandre Denis Alexandre.Denis@inria.fr Inria Bordeaux Sud-Ouest France ENSEIRB PG306 REST REST Representational State Transfer Roy Fielding (2000) Décollage vers 2006-2007

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

Mise en œuvre des serveurs d application

Mise en œuvre des serveurs d application Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés

Plus en détail

LOG4430 : Architecture logicielle et conception avancée

LOG4430 : Architecture logicielle et conception avancée LOG4430 : Architecture logicielle et conception avancée Yann-Gaël Guéhéneuc Cours 3 Bibliothèques et chargement Dynamique de composants Département de génie informatique et de génie logiciel École Polytechnique

Plus en détail

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Polymorphisme, la classe Object, les package et la visibilité en Java... 1 Polymorphisme, la classe Object, les package et la visibilité en Java. Polymorphisme, la classe Object, les package et la visibilité en Java.... 1 Polymorphisme.... 1 Le DownCast... 4 La Classe Object....

Plus en détail

Alfstore workflow framework Spécification technique

Alfstore workflow framework Spécification technique Alfstore workflow framework Spécification technique Version 0.91 (2012-08-03) www.alfstore.com Email: info@alfstore.com Alfstore workflow framework 2012-10-28 1/28 Historique des versions Version Date

Plus en détail

JavaServer Pages (JSP)

JavaServer Pages (JSP) JavaServer Pages (JSP) XVIII-1 Prérequis pour ce cours Ce cours a trait à la programmation Java coté serveur Il faut connaître un minimum de technologie J2EE Il faut connaître les servlets XVIII-2 Motivation

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

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

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 SHERLOCK 7 Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 Cette note montre comment intégrer un script Java dans une investigation Sherlock et les différents aspects de Java script. S T E M M E R I M A G I N

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

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles Types d applications pour la persistance Université de Nice Sophia-Antipolis Version 0.9 28/8/07 Richard Grin Toutes les applications n ont pas une complexité qui nécessite une architecture n- tiers Ce

Plus en détail

La technologie Java Card TM

La technologie Java Card TM Présentation interne au CESTI La technologie Java Card TM sauveron@labri.u-bordeaux.fr http://dept-info.labri.u-bordeaux.fr/~sauveron 8 novembre 2002 Plan Qu est ce que Java Card? Historique Les avantages

Plus en détail

Programmation Objet Java Correction

Programmation Objet Java Correction INSA - 4 AE 2007 2008 Durée : 1H00 Contrôle Programmation Objet Java Correction Consignes Tous les documents sont autorisés, mais ils seront peu utiles. Indiquez vos nom et prénom sur chaque feuille. Le

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

Patrons de Conception (Design Patterns)

Patrons de Conception (Design Patterns) Patrons de Conception (Design Patterns) Introduction 1 Motivation Il est difficile de développer des logiciels efficaces, robustes, extensibles et réutilisables Il est essentiel de comprendre les techniques

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

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

Applet pour visualiser les variables «automate» notifiées

Applet pour visualiser les variables «automate» notifiées Applet pour visualiser les variables «automate» notifiées Sommaire 1. Introduction...2 2. Lecture de variables «automate» notifiées...2 2.1. IHM servant au test :...2 2.2. Codage de l'applet :...2 3. Codage

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

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

Documentation CAS à destination des éditeurs

Documentation CAS à destination des éditeurs Documentation CAS à destination des éditeurs Sommaire Préambule... 1 Présentation de CAS...2 Intérêt... 2 Fonctionnement de base...2 Synoptique des échanges (1ère connexion)... 2 Synoptique des échanges

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

Exercices INF5171 : série #3 (Automne 2012)

Exercices INF5171 : série #3 (Automne 2012) Exercices INF5171 : série #3 (Automne 2012) 1. Un moniteur pour gérer des ressources Le moniteur MPD 1 présente une première version d'un moniteur, exprimé en pseudo-mpd, pour gérer des ressources le nombre

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

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. fortier@lipn.univ-paris13.fr A308, Université de Paris 13

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. fortier@lipn.univ-paris13.fr A308, Université de Paris 13 WEBSERVICES Michael Fortier Master Informatique 2ème année fortier@lipn.univ-paris13.fr A308, Université de Paris 13 https ://lipn.univ-paris13.fr/ fortier/enseignement/webservices/ Sommaire 1 Rappels

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

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

Description de la formation

Description de la formation Description de la formation Modalités Ce parcours de formation est un parcours en alternance, d une durée de 2ans, à raison d une semaine de formation par mois, soit 770 heures et de trois semaines de

Plus en détail

Conception des systèmes répartis

Conception des systèmes répartis Conception des systèmes répartis Principes et concepts Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Octobre 2012 Gérard Padiou Conception des systèmes répartis 1 / 37 plan

Plus en détail

Annuaires LDAP et méta-annuaires

Annuaires LDAP et méta-annuaires Annuaires LDAP et méta-annuaires Laurent Mynard Yphise 6 rue Beaubourg - 75004 PARIS yphise@yphise.com - http://yphise.fr T 01 44 59 93 00 F 01 44 59 93 09 LDAP020314-1 Agenda A propos d Yphise Les annuaires

Plus en détail