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 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 (pré-compilé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

LOG4430 : Architecture logicielle et conception avancée

LOG4430 : Architecture logicielle et conception avancée LOG4430 : Architecture logicielle et conception avancée Abdou Maiga Composition et architectures par composants Département de génie informatique et de génie logiciel École Polytechnique de Montréal Guéhéneuc

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

Chapitre 4. Le modèle de composants : les services

Chapitre 4. Le modèle de composants : les services Chapitre 4 Le modèle de composants : les services 1 Les services "A Service is an application component that can perform long-running operations in the background and does not provide a user interface."

Plus en détail

Modèle client-serveur

Modèle client-serveur Modèle client-serveur Daniel Hagimont IRIT/ENSEEIHT 2 rue Charles Camichel - BP 7122 31071 TOULOUSE CEDEX 7 Daniel.Hagimont@enseeiht.fr http://hagimont.perso.enseeiht.fr Remerciements Michel Riveill 1

Plus en détail

objectif : plan : Java, CORBA et RMI A. Le Grand,1997 1 JAVA, CORBA et RMI

objectif : plan : Java, CORBA et RMI A. Le Grand,1997 1 JAVA, CORBA et RMI JAVA, CORBA et RMI objectif : développer des applications client/serveur incluant des objets répartis Java / CORBA : client/serveur hétérogènes Java / RMI : client/serveur homogènes plan : l architecture

Plus en détail

Package java.net. Interfaces Interface ContentHandlerFactory Interface SocketImplFactory Interface URLStreamHandlerFactory

Package java.net. Interfaces Interface ContentHandlerFactory Interface SocketImplFactory Interface URLStreamHandlerFactory Package java.net Classes class ContentHandler class DatagramPacket class DatagramSocket class InetAddress final class ServerSocket final class Socket class SocketImpl final class URL abstract class URLConnection

Plus en détail

Servlets (fin) Accès aux paramètres. GET différend de POST GET : Paramètres dans l'url POST : Paramètres dans l'header

Servlets (fin) Accès aux paramètres. GET différend de POST GET : Paramètres dans l'url POST : Paramètres dans l'header Servlets (fin) Accès aux paramètres GET différend de POST GET : Paramètres dans l'url POST : Paramètres dans l'header Masqué par l'api Méthode getparameter(), getparametervalues() [page de forumulaire]

Plus en détail

Programmation multitâches avec les Threads

Programmation multitâches avec les Threads Programmation multitâches avec les Threads A. Introduction A.1. Programmation multitâche Tous les systèmes d'exploitation actuels ont la possibilité d'effectuer plusieurs tâches en simultané. En effet,

Plus en détail

1 Le Parking revisité

1 Le Parking revisité Module I6 - Manipulation de threads II 13 décembre 2012 1 Le Parking revisité Une société de gestion de parkings de voitures souhaite mettre en place un système automatique d affichage en temps réel de

Plus en détail

Modèle client-serveur

Modèle client-serveur Modèle client-serveur Daniel Hagimont IRIT/ENSEEIHT 2 rue Charles Camichel - BP 7122 31071 TOULOUSE CEDEX 7 Daniel.Hagimont@enseeiht.fr http://hagimont.perso.enseeiht.fr 1 Plan Principes généraux Modèle

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

Sockets. Karima Boudaoud IUT- R&T

Sockets. Karima Boudaoud IUT- R&T Sockets Karima Boudaoud IUT- R&T Rappels sur les sockets Qu est ce qu un socket? Point d entrée entre 2 appli. du réseau Permet l échange de donnée entre elles à l aide des mécanismes d E/S (java.io) Différents

Plus en détail

La programmation réseau. Java

La programmation réseau. Java Chapitre 7 : Java et les réseaux La programmation réseau Java Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 1 Sommaire La programmation réseau La classe URL Les Sockets TCP/IP et les principaux

Plus en détail

CSC4002 : Contrôle Final Session 1. Date : jeudi 26 janvier 2012 Durée : 1H30. Coordonnateurs : Christian Bac et Denis Conan

CSC4002 : Contrôle Final Session 1. Date : jeudi 26 janvier 2012 Durée : 1H30. Coordonnateurs : Christian Bac et Denis Conan Corrigé et Barème Contrôle de connaissances 2011/2012 des étudiants de 2 è année (EI2) CSC4002 : Contrôle Final Session 1 Date : jeudi 26 janvier 2012 Durée : 1H30 Coordonnateurs : Christian Bac et Denis

Plus en détail

Java Remote Method Invocation

Java Remote Method Invocation Java Remote Method Invocation Ce support est très largement inspiré du livre et du cours de S. Krakowiak S. Krakowiak Java Remote Method Invocation 1 / 25 Intérêt des objets pour la construction d applications

Plus en détail

Programmation Java Avancée

Programmation Java Avancée Programmation Java Avancée Module RPCI01 Département R&T IUT de Villetaneuse 2 novembre 2015 Département R&T Programmation Java Avancée 2 novembre 2015 1 / 74 Plan du cours 1 La gestion des exceptions

Plus en détail

Données et communications en Java

Données et communications en Java Données et communications en Java Programmation des applications réparties Olivier Flauzac Master EEAMI-Informatique première année Olivier Flauzac (URCA) Données et communications en Java EEAMI-INFO 1

Plus en détail

Exécution des applications réparties

Exécution des applications réparties Exécution des applications réparties Programmation des Applications Réparties Olivier Flauzac URCA Master STIC-Informatique première année Olivier Flauzac (URCA) PAR : Exécution des applications réparties

Plus en détail

TP Java RMI. Alexandre Denis Alexandre.Denis@inria.fr. Inria Bordeaux Sud-Ouest France ENSEIRB PG306

TP Java RMI. Alexandre Denis Alexandre.Denis@inria.fr. Inria Bordeaux Sud-Ouest France ENSEIRB PG306 TP Java RMI Alexandre Denis Alexandre.Denis@inria.fr Inria Bordeaux Sud-Ouest France ENSEIRB PG306 Paradigme RMI RMI (Remote Method Invocation) RPC orientés objet (encapsulation, héritage,...) objet :

Plus en détail

Projet M1 : Application P2P Hybride avec RMI

Projet M1 : Application P2P Hybride avec RMI Projet M1 : Application P2P Hybride avec RMI Applications Réparties 2008-2009 Université Paris VIII / Parcours SRM / M1 Sujet : Le but de ce projet est d'implémenter une application de partage de fichiers

Plus en détail

Programmation concurrente en java

Programmation concurrente en java Programmation concurrente en java M. Belguidoum Université Mentouri de Constantine Département Informatique M. Belguidoum (UMC) Programmation concurrente 1 / 29 Plan 1 Introduction 2 Création d'un thread

Plus en détail

Les tâches et la synchronisation en langage Java

Les tâches et la synchronisation en langage Java Les tâches et la synchronisation en langage Java Les threads, les verrous, les sémaphores et les moniteurs en Java D après les cours de D. Genthial et B. Caylux Langage Java Threads et synchronisation

Plus en détail

Programmation Socket en Java

Programmation Socket en Java Programmation Socket en Java Cours sockets Université Paul Sabatier Plan Un bon réflexe Les adresses IP en Java Sockets en mode flot La classe Socket La classe ServerSocket Communication via les Sockets

Plus en détail

Le modèle de composants Fractal

Le modèle de composants Fractal Plan Le modèle de composants Fractal Université Lille 1 LIFL & INRIA Lille ADAM 1. Introduction 2.1 Notions de base 2.2 Notions avancées 3. Développer avec Fractal 4. Plates-formes 3.1 Julia 3.2 AOKell

Plus en détail

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

Modèle à messages. Daniel Hagimont. IRIT/ENSEEIHT 2 rue Charles Camichel - BP 7122 31071 TOULOUSE CEDEX 7. Remerciements. Modèle à messages Daniel Hagimont IRIT/ENSEEIHT 2 rue Charles Camichel - BP 7122 31071 TOULOUSE CEDEX 7 Daniel.Hagimont@enseeiht.fr http://hagimont.perso.enseeiht.fr Remerciements André Freyssinet 1 Plan

Plus en détail

Systèmes Distribués Des protocoles client serveur au paradigme objets distribués avec Java

Systèmes Distribués Des protocoles client serveur au paradigme objets distribués avec Java Systèmes Distribués Des protocoles client serveur au paradigme objets distribués avec Java (application avec Java RMI) Éric Leclercq Département IEM / Laboratoire LE2i Décembre 2010 émail : Eric.Leclercq@u-bourgogne.fr

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

Cours 8 : Exceptions, un peu de graphique

Cours 8 : Exceptions, un peu de graphique 1 Cours 8 : Exceptions, un peu de graphique 1. Traiter les exceptions usuelles 2. Créer ses propres exceptions 3. Exemples: les files. 4. Quelques éléments sur les graphiques 2 Exceptions Une exception

Plus en détail

Master M1 Informatique: Analyse et Conception des Logiciels

Master M1 Informatique: Analyse et Conception des Logiciels Master M1 Informatique: Analyse et Conception des Logiciels Pascal Molli Juin 2008 Les documents de cours sont autorisés 1 Exercice en 5 lignes maximums répondez aux questions suivantes : 1. Qu est ce

Plus en détail

La programmation réseau. Java

La programmation réseau. Java Chapitre 7 : Java et les réseaux La programmation réseau Java Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 1 Sommaire La programmation réseau Rappel Réseau Couches réseau et TCP-IP Notion

Plus en détail

Communications et synchronisations

Communications et synchronisations Communications et synchronisations Polytech Paris-Sud Cycle ingénieur de la filière étudiant Louis Mandel Université Paris-Sud 11 Louis.Mandel@lri.fr année 2012/2013 Le problème des philosophes (Dijkstra

Plus en détail

Le Langage Java et le Monde des Objets

Le Langage Java et le Monde des Objets . p.1 Le Langage Java et le Monde des Objets Les principes de la modélisation Orientée Objet. Qu est-ce qu une classe?. Les types de base. Utiliser les classes. Les tentacules de Java. . p.2 Bibliographie

Plus en détail

CEG3585/CEG3555 Tutorat 2. Été 2015

CEG3585/CEG3555 Tutorat 2. Été 2015 CEG3585/CEG3555 Tutorat 2 Été 2015 Architecture TCP/IP Les applications sont développées avec le socket API (en Java les classes Socket et ServerSocket) Adresse socket: Port TCP Adresse IP Les deux adresses

Plus en détail

WildCAT : un cadre générique pour la construction d'applications sensibles au contexte

WildCAT : un cadre générique pour la construction d'applications sensibles au contexte WildCAT : un cadre générique pour la construction d'applications sensibles au contexte Pierre-Charles David France Télécom, Recherche & Développement Réunion Adapt, Paris 2006-04-06 Plan 1 Introduction

Plus en détail

Implémentée sous forme de JavaBean ou EJB, c est dans cette couche que l on retrouve l ensemble des traitements d une application.

Implémentée sous forme de JavaBean ou EJB, c est dans cette couche que l on retrouve l ensemble des traitements d une application. Introduction Nous allons parler, dans ce document consacré aux architectures multi-tiers en environnement J2EE, de 3 des cinq couches les plus représentatives. Faisons tout d'abord un petit rappel sur

Plus en détail

Objets distribués et Appel de Méthodes à Distance 2009-2010

Objets distribués et Appel de Méthodes à Distance 2009-2010 Objets distribués et Appel de Méthodes à Distance 2009-2010 1 Objectif : construire une application où différents modules peuvent être situés sur des machines différentes, en utilisant un modèle à objets

Plus en détail

Programmation orientée objet appliquée avec le langage Java Réseaux

Programmation orientée objet appliquée avec le langage Java Réseaux Programmation orientée objet appliquée avec le langage Java Réseaux IUT d'aix en Provence Réseaux et Télécommunications Décembre 2013 Ivan Madjarov Partie XIII Programmation en Java par Socket en mode

Plus en détail

Serveurs réseau. 2011 Pearson Education France Java, mise à jour pour Java 7 Timothy Fisher

Serveurs réseau. 2011 Pearson Education France Java, mise à jour pour Java 7 Timothy Fisher 11 Serveurs réseau En pratique, il y a bien plus de chances que vous écriviez du code de client réseau que du code de serveur réseau. Toutefois, bon nombre d applications intègrent à la fois des fonctionnalités

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

Correction langage Java

Correction langage Java MINISTÈRE DE L ÉCOLOGIE, DU DÉVELOPPEMENT DURABLE, DES TRANSPORTS ET DU LOGEMENT EXAMEN PROFESSIONNEL DE VÉRIFICATION D APTIDUDE AUX FONCTIONS DE PROGRAMMEUR Session 2010 Correction langage Java Langage:

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

POO LES EXCEPTIONS LES EXCEPTIONS

POO LES EXCEPTIONS LES EXCEPTIONS CHAPITRE 7 : LES EXCEPTIONS Objectifs spécifiques 1. Introduire la notion d exception, les règles d utilisation et de définition des exceptions. 2. Distinguer entre les exceptions prédéfinies et les exceptions

Plus en détail

Année 2011-2012 Master 2 T.P. 1. Sockets

Année 2011-2012 Master 2 T.P. 1. Sockets Institut Galilée E-services Année 2011-2012 Master 2 T.P. 1 Sockets L objectif de ce TP est de compléter vos connaissances sur la manipulation de sockets en reprenant certains des exercices expliqués en

Plus en détail

Java RMI. Programmation des applications réparties. Olivier Flauzac URCA. Master EEAMI-Informatique première année

Java RMI. Programmation des applications réparties. Olivier Flauzac URCA. Master EEAMI-Informatique première année Java RMI Programmation des applications réparties Olivier Flauzac URCA Master EEAMI-Informatique première année Olivier Flauzac (URCA) PAR : Java RMI MSTIC-INFO 1 1 / 30 1 RMI 2 Architecture 3 Développement

Plus en détail

Programmation par sockets-java

Programmation par sockets-java 2A-SI 3 Prog. réseau et systèmes distribués 3.1 - Programmation par sockets-java Stéphane Vialle Stephane.Vialle@supelec.fr http://www.metz.supelec.fr/~vialle Support de cours élaboré avec l aide de l

Plus en détail

Programmation par RPC et Java-RMI :

Programmation par RPC et Java-RMI : 2A-SI 3 Prog. réseau et systèmes distribués 3.2 et JavaRMI Stéphane Vialle Stephane.Vialle@supelec.fr http://www.metz.supelec.fr/~vialle Support de cours élaboré avec l aide de l équipe pédagogique du

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

JAVA - Compléments du cours 9

JAVA - Compléments du cours 9 JAVA - Compléments du cours 9 Nicolas Baudru Année 2008-2009 Exercice 1 (Création de threads) En Java, il existe deux méthodes pour créer des threads. La première étend la classe Thread : class MonThread

Plus en détail

CORBA. Cycle de développement

CORBA. Cycle de développement CORBA Cycle de développement Projet MIAGe Toulouse Groupe 2 1 Le cycle de développement (1/3) On s intéresse au développement selon le mode statique, c est à dire en utilisant les talons (stub, skeleton,

Plus en détail

Architectures à composants

Architectures à composants Interaction requête/réponse Architectures à composants!communication par requête/réponse client requête réponse serveur Gaël Thomas gael.thomas@lip6.fr Université Pierre et Marie Curie Master Informatique

Plus en détail

Communications et synchronisations. Système L3, 2014-2015 1/21

Communications et synchronisations. Système L3, 2014-2015 1/21 Communications et synchronisations Système L3, 2014-2015 1/21 Le problème des philosophes (Dijkstra 1965) Cinq philosophes sont assis autour d une table ronde Chaque philosophe a devant lui un plat de

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

Ala Eddine BEN SALEM. T.P. 2 Servlet

Ala Eddine BEN SALEM. T.P. 2 Servlet EPITA Ala Eddine BEN SALEM App-Ing2 J2EE T.P. 2 Servlet 1. Création d'un projet Web: A l'aide d'eclipse, créer un nouveau projet «sampleservlet» avec comme environnement d'exécution le serveur Tomcat installé

Plus en détail

Dr. M.W. Youssef Systèmes d exploitation Avancées 1ING ISI - 2009

Dr. M.W. Youssef Systèmes d exploitation Avancées 1ING ISI - 2009 Institut Supérieur d Informatique Chapitre 02 Synchronisation des processus Dr. Mohamed-Wassim YOUSSEF 2009 [www.wassimyoussef.info] Systèmes d exploitation avancées 1 ING ISI 1 ére année Ingénieur en

Plus en détail

Java Spring Le socle technique des applications JEE

Java Spring Le socle technique des applications JEE Avant-propos 1. Préambule 15 2. Introduction 17 3. Organisation du livre 19 4. Public visé 19 5. Pourquoi Spring 20 6. Prérequis pour aborder sereinement la lecture de ce livre 20 7. Objectifs du livre

Plus en détail

MANUEL DU KIT DE DEVELOPPEMENT DE CONNECTEURS Référence: W4JC_DEVKIT_020_FR

MANUEL DU KIT DE DEVELOPPEMENT DE CONNECTEURS Référence: W4JC_DEVKIT_020_FR W4 CONNECTORS FOR JAVA MANUEL DU KIT DE DEVELOPPEMENT DE CONNECTEURS Référence: W4JC_DEVKIT_020_FR Les prochaines mises à jour de ce document seront disponibles sur www.myw4.com W4 CONNECTORS FOR JAVA

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

Syntaxe du langage JAVA. Philippe Roose (IUT Bayonne) Olivier Dedieu (INRIA)

Syntaxe du langage JAVA. Philippe Roose (IUT Bayonne) Olivier Dedieu (INRIA) Syntaxe du langage JAVA Philippe Roose (IUT Bayonne) Olivier Dedieu (INRIA) Structure du langage Les types primitifs boolean(true/false), byte (1 octet), char (2 octets), short (2 octets), int (4 octets),

Plus en détail

Programmation - Java - Fiches du Langage. Marie Beurton-Aimar

Programmation - Java - Fiches du Langage. Marie Beurton-Aimar Programmation - Java - Fiches du Langage Marie Beurton-Aimar Fiche Numéro 1 1.1 Structure d un programme Java Toutes les instructions se terminent par un ; Le nom du fichier qui contient une classe doit

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

VisualAge Pacbase 3.0 et WebSphere

VisualAge Pacbase 3.0 et WebSphere VisualAge Pacbase 3.0 et WebSphere Conférence VisualAge Pacbase 13 décembre 2001 Fernand Bonaguidi Jean-François Lévi 1 La plateforme logicielle WebSphere Applications de s et de Partenaires Accélérateurs

Plus en détail

Familiarisation avec Eclipse / Netbeans

Familiarisation avec Eclipse / Netbeans Institut Galilée LEE Année 011-01 Master T.P. 0 Familiarisation avec Eclipse / Netbeans Lien important contenant le pdf du cours et du TP, et ensuite des sources : http://www-lipn.univ-paris13.fr/~fouquere/mpls

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

pac4j : la librairie de sécurité pour Java par Jérôme LELEU

pac4j : la librairie de sécurité pour Java par Jérôme LELEU pac4j : la librairie de sécurité pour Java par Jérôme LELEU www.parisjug.org Copyright @ 2014 ParisJug. Licence CC - Creatve Commons 2.0 France Paternité - Pas d'utlisaton Commerciale - Partage des Conditons

Plus en détail

Université Mohammed Premier Année universitaire 2011-2012. Correction de l examen écrit de la session ordinaire 18 Février 2012

Université Mohammed Premier Année universitaire 2011-2012. Correction de l examen écrit de la session ordinaire 18 Février 2012 Université Mohammed Premier Année universitaire 2011-2012 Faculté des Sciences Filière SMI Département de Mathématiques Module : POO Java et d Informatique Semestre : S5 Correction de l examen écrit de

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

Interface De Service AIDL. Android Interface Definition Language

Interface De Service AIDL. Android Interface Definition Language Client Interface De Service Serviteur AIDL Android Interface Definition Language Client Serviteur Service Process Process IPC IPC Inter Process Communication... mais sur une même machine. pas entre plusieurs

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

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

Développement d un client REST, l application Vélib

Développement d un client REST, l application Vélib Développement d un client REST, l application Vélib Description du thème Propriétés Description Intitulé long Formation concernée Matière Présentation Application en C# qui utilise un service REST informant

Plus en détail

Exceptions. Fiabilité d un logiciel. Fiabilité en Java. Erreurs/exceptions. Localisation du traitement des erreurs/exceptions.

Exceptions. Fiabilité d un logiciel. Fiabilité en Java. Erreurs/exceptions. Localisation du traitement des erreurs/exceptions. Fiabilité d un logiciel Exceptions Université Française d Egypte Version O 5.7 5/10/15 Richard Grin Robustesse : fonctionne correctement, même en présence d événements exceptionnels Correction : donne

Plus en détail

Figure 1. Structure répartie

Figure 1. Structure répartie Chapitre I: Applications Réparties et Middleware 1. Définition d une application répartie Une application répartie est constituée d un ensemble de processus (d objets, d agents, d acteurs) s exécutant

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

Plan du cours 5:Threads

Plan du cours 5:Threads Plan du cours 5:Threads introduction Définition Création des Threads Gestion des priorités Synchronisation Page : 1 Introduction(1) Les structure de contrôle: If.. Else.. While Switch. Try..catch.. Offrent

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

Analyse statique de programmes Typage et analyse statique au sein de Java

Analyse statique de programmes Typage et analyse statique au sein de Java Analyse statique de programmes Typage et analyse statique au sein de Java Master Professionnel Informatique spécialité FSIL/FSI Jean-Marc Talbot jean-marc.talbot@lif.univ-mrs.fr Aix-Marseille Université

Plus en détail

Arbres binaires. Illustration avec des arbres binaires de décision Généricité bornée Synthèse sur les assertions et les exceptions

Arbres binaires. Illustration avec des arbres binaires de décision Généricité bornée Synthèse sur les assertions et les exceptions Arbres binaires Illustration avec des arbres binaires de décision Généricité bornée Synthèse sur les assertions et les exceptions FMIN220 Structures de données Université de Montpellier 2015 FMIN220 (UM)

Plus en détail

INTRODUCTION À JAVA EE. Cours Master 2 - Java EE

INTRODUCTION À JAVA EE. Cours Master 2 - Java EE INTRODUCTION À JAVA EE 1 LA NÉBULEUSE JAVA Java Micro Edition (JME) développement d applications embarquées Java Standard Edition (JSE) développement d applications classiques Java Enterprise Edition (JEE)

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

Année 2008-2009. Les threads Java. Nicolas Baudru mél : nicolas.baudru@esil.univmed.fr page web : nicolas.baudru.perso.esil.univmed.

Année 2008-2009. Les threads Java. Nicolas Baudru mél : nicolas.baudru@esil.univmed.fr page web : nicolas.baudru.perso.esil.univmed. Année 2008-2009 Les threads Java Nicolas Baudru mél : nicolas.baudru@esil.univmed.fr page web : nicolas.baudru.perso.esil.univmed.fr 1 Présentation du problème Revenons quelques instants à nos animaux.

Plus en détail

Objectifs. Comprendre l architecture typique d une application web Exemple: Expérimenter avec:

Objectifs. Comprendre l architecture typique d une application web Exemple: Expérimenter avec: Cedric Dumoulin Objectifs Comprendre l architecture typique d une application web Exemple: Application permettant de lister un catalogue d articles, et de créer des articles Expérimenter avec: EJB, JPA

Plus en détail

Résumé Introduction Programmation Java

Résumé Introduction Programmation Java Résumé Introduction Programmation Java Concepts Un programme : séquence, test conditionnel, boucles. Objets : Les objets Java modélisent les objets d un problème donné Classe : Les objets sont crées à

Plus en détail

Sérialisation sur le système de fichiers. Gestion des exceptions en Java.

Sérialisation sur le système de fichiers. Gestion des exceptions en Java. Sérialisation sur le système de fichiers. Gestion des exceptions en Java. Christophe Gravier, Frédérique Laforest, Julien Subercaze Télécom Saint-Étienne Université Jean Monnet {pnom.nom}@univ-st-etienne.fr

Plus en détail

Plan. Environnement Client/Serveur. Cours 6 Rappels Java (suite) Appel de méthode à distance. Utilité. static

Plan. Environnement Client/Serveur. Cours 6 Rappels Java (suite) Appel de méthode à distance. Utilité. static Plan Environnement Client/Serveur Cours 6 Rappels Java (suite) Appel de méthode à distance kn@lri.fr http://www.lri.fr/~kn 1 Rappels sur les systèmes d'exploitations / Communication par mémoire partagée

Plus en détail

LISE 3. Template pour les mails. Version 1.0 du 13/04/2010. Etat : Validé

LISE 3. Template pour les mails. Version 1.0 du 13/04/2010. Etat : Validé Template pour les mails Version 1.0 du 13/04/2010 Etat : Validé SUIVI DES MODIFICATIONS Version Rédaction Description Vérification Date 1.0 A. Lesuffleur création du document 13/04/10 Document validé dans

Plus en détail

Web services en Java (services Web) Jean-marc Farinone

Web services en Java (services Web) Jean-marc Farinone Web services en Java (services Web) Jean-marc Farinone Web services (services web) : qu'est ce? Une architecture orientée objet et distribuée où les messages sont en syntaxe XML. Une définition : Les Services

Plus en détail

Architecture Logicielle

Architecture Logicielle Architecture Logicielle Chapitre 3: UML pour la description et la documentation d une architecture logicielle Année universitaire 2013/2014 Semestre 1 Rappel L architecture d un programme ou d un système

Plus en détail

Etude de cas PLM. Patrice TORGUET IRIT Université Paul Sabatier

Etude de cas PLM. Patrice TORGUET IRIT Université Paul Sabatier Etude de cas PLM Patrice TORGUET IRIT Université Paul Sabatier Plan Exemple PLM Répartition avec Sockets Répartition avec RMI Répartition avec CORBA Répartition avec JMS Répartition avec Java EE Améliorations

Plus en détail

TP6 EJB : Création d'un EJB3 Entité

TP6 EJB : Création d'un EJB3 Entité TP6 EJB : Création d'un EJB3 Entité Objis : nous allons vous faire aimer JAVA - www.objis.com 1 Table des matières Formation EJB - TP 'Développement EJB3 entity avec Eclipse' Propriété du document...3

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

Plan Rappels sur les patrons de conception Contexte Annuaire JNDI Conception d Applications Hétérogènes Distribuées

Plan Rappels sur les patrons de conception Contexte Annuaire JNDI Conception d Applications Hétérogènes Distribuées Conception d Applications Hétérogènes Distribuées Master 2 Traitement de l Information Lionel Médini Septembre-novembre 2015 du cours Outils de programmation avancés Retour sur les patrons de conception

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

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

Systèmes distribués. Les Sockets

Systèmes distribués. Les Sockets Systèmes distribués Plusieurs technologies existent : Les sockets Les remote procedure call (RPC) Remote Method Invocation (RMI) Les Sockets L'utilisation des Sockets nécessite De gérer le codage et le

Plus en détail

Programmation réseaux avec le langage Java

Programmation réseaux avec le langage Java Programmation réseaux avec le langage Java Février 2015 Ivan Madjarov Partie I Introduction à la programmation Java réseau 2 Introduction Le modèle OSI (Open System Interconnexion) 3 Routage et Passerelle

Plus en détail

Le réseau est l ordinateur

Le réseau est l ordinateur Le réseau est l ordinateur (Bill Joy) Les applets 1 Les applets : principe Les applets sont des programme Java téléchargés à partir d un serveur WEB et qui s exécutent dans le browser d un client : Fichier.html

Plus en détail