Les exemples
Ces exemples sont tous téléchargeables (script de compilation et d'exécution compris)Ils sont utilisés dans les supports de cours.
Exemple25_Thread
Exemple de création de deux thread qui affichent un caractère different en parallele et une IHM qui permet de gerer l'execution des deux threads
Exemple de création de deux thread qui affichent un caractère different en parallele et une IHM qui permet de gerer l'execution des deux threads
Exemple26_Synchronisation
Demonstration de l'utilisation des methodes wait et notify de Java
Deux programmes : run (exécution de Exemple26)
runSimple (un cas simple de synchronisation)
Demonstration de l'utilisation des methodes wait et notify de Java
Deux programmes : run (exécution de Exemple26)
runSimple (un cas simple de synchronisation)
ExempleCh03_02_Devise
Exemple de création d'OD qui sont des devises monétaires
Chaque devise est un objet distribué dont le nom est la concaténation des deux noms de monnaie.
Le client uilise les devises à travers leurs méthodes distantes.
Exemple de création d'OD qui sont des devises monétaires
Chaque devise est un objet distribué dont le nom est la concaténation des deux noms de monnaie.
Le client uilise les devises à travers leurs méthodes distantes.
ExempleCh03_03_FactoryDevise
Exemple d'un facory simple de création et stockage des devises monétaires.
Chaque devise est un stub géré par le factory
Exemple d'un facory simple de création et stockage des devises monétaires.
Chaque devise est un stub géré par le factory
ExempleCh04_04_InjectionDependance
Programme qui montre une injection de dependance par un fichier de configuration
Programme qui montre une injection de dependance par un fichier de configuration
ExempleCh04_08_DPIterator2
Exemple du DP Iterateur
La différence avec la version précédente, cet exemple utilise
une inner-classe pour créer l'itérateur
Exemple du DP Iterateur
La différence avec la version précédente, cet exemple utilise
une inner-classe pour créer l'itérateur
ExempleCh04_10b_DPObserverEtat
Exemple du DP Observer
Cas : Synchrone avec separation du changement d'etat et de la notification
Exemple du DP Observer
Cas : Synchrone avec separation du changement d'etat et de la notification
ExempleCh04_10e_DPObserverAsynchronePushAndPush
Exemple du DP Observer
Cas : Asynchrone push end push
Exemple du DP Observer
Cas : Asynchrone push end push
ExempleCh04_11_ModeleMVC
Exemple d'implementation du probleme de l'horloge suivant un modele MVC dans lequel la vue est notifie des changement d'etat de l'horloge par un observable et oberver.
L'observer est cree en dehors de la vue et l'observable est cree en dehors du modele afin de faciliter l'implementation du modele en RMI (Voir ExempleCh06_01_ModeleMVC_RMI)
Exemple d'implementation du probleme de l'horloge suivant un modele MVC dans lequel la vue est notifie des changement d'etat de l'horloge par un observable et oberver.
L'observer est cree en dehors de la vue et l'observable est cree en dehors du modele afin de faciliter l'implementation du modele en RMI (Voir ExempleCh06_01_ModeleMVC_RMI)
ExempleCh05_01_InterfaceService1
Exemple d'une interface client / fournisseur utilisée en local d'un programme Java.
Cet exemple illustre les points suivants:
- le service est crée par l'utilisateur du service (un organisme)
- le service crée des objets de natures différentes et les retourne
- l'utilisateur récupère ces objets créés et les stocke dans ses collections
- le service est vu par l'utilisateur sous la forme d'une interface
- les objets créés sont vus par l'utilisateur sous la forme d'une interface
Exemple d'une interface client / fournisseur utilisée en local d'un programme Java.
Cet exemple illustre les points suivants:
- le service est crée par l'utilisateur du service (un organisme)
- le service crée des objets de natures différentes et les retourne
- l'utilisateur récupère ces objets créés et les stocke dans ses collections
- le service est vu par l'utilisateur sous la forme d'une interface
- les objets créés sont vus par l'utilisateur sous la forme d'une interface
ExempleCh05_02a_InterfaceService2
Par rapport à l'exemple précéden, Ch05_01, l'exemple Ch05_02a est un client qui se connecte à un Server distant via un proxy qui assure la conversion d'un appel de methode en une communication par socket et en utiilisant la serialisation native du langage JAVA.
Cet exemple utilise les classes définies dans l'exemple Ch05_01 par le jar exempleCh05_01.jar créé par le script faireJar.bat.
Par rapport à l'exemple précéden, Ch05_01, l'exemple Ch05_02a est un client qui se connecte à un Server distant via un proxy qui assure la conversion d'un appel de methode en une communication par socket et en utiilisant la serialisation native du langage JAVA.
Cet exemple utilise les classes définies dans l'exemple Ch05_01 par le jar exempleCh05_01.jar créé par le script faireJar.bat.
ExempleCh05_02b_InterfaceService2
La seule différence avec l'exemple précédent Ch05_02a, est que les objet créés restent sur le serveur.
Le serveur renvoie au client des stubs de connexion distants à ces objets à la place des objets réels.
La démonstration est aussi de montrer que le code du client est le même que celui précédent.
Cet exemple utilise les classes définies dans ExempleCh05_01 et ExempleCh05_02a par les jar exempleCh05_01.jar et exempleCh05_02a.jar créés par les scripts respectifs faireJar.bat des ExempleCh05_01 et ExempleCh05_02a.
La seule différence avec l'exemple précédent Ch05_02a, est que les objet créés restent sur le serveur.
Le serveur renvoie au client des stubs de connexion distants à ces objets à la place des objets réels.
La démonstration est aussi de montrer que le code du client est le même que celui précédent.
Cet exemple utilise les classes définies dans ExempleCh05_01 et ExempleCh05_02a par les jar exempleCh05_01.jar et exempleCh05_02a.jar créés par les scripts respectifs faireJar.bat des ExempleCh05_01 et ExempleCh05_02a.
ExempleCh05_02c_InterfaceService2
Cet exemple a le même comportement que l'exemple précédent.
Tout est implémenté en simulant ce que fait le prôtocole RMI.
Cela permet de comprendre comment RMI fonctionne
Cet exemple a le même comportement que l'exemple précédent.
Tout est implémenté en simulant ce que fait le prôtocole RMI.
Cela permet de comprendre comment RMI fonctionne
ExempleCh05_03_ServiceRMI
Exemple de l'application d'un Proxy pour l'interface entre une IHM et son applicatif.
L'Ihm étant soit un client en intranet (RMI) soit un client en internet (HTTP).
Exemple de l'application d'un Proxy pour l'interface entre une IHM et son applicatif.
L'Ihm étant soit un client en intranet (RMI) soit un client en internet (HTTP).
ExempleCh06_02_Provider
Exemple d'un provider asynchrone multi-canaux multi-producteurs multi-consommateurs
Voir § 6.4 du cours NSY102-Chapitre-06_LesModesDeCommunication.
Executions :
runProvider.bat (à exécuter qu'une fois) (à exécuter en premier)
runProducteur_Canal1.bat (exécution d'un producteur sur le canal 1) (peut être exécuter plusieurs fois)
runProducteur_Canal2.bat (exécution d'un producteur sur le canal 2) (peut être exécuter plusieurs fois)
runConsommateur_Canal1.bat (exécution d'un consommateur sur le canal 1) (peut être exécuter plusieurs fois)
runConsommateur_Canal2.bat (exécution d'un consommateur sur le canal 2) (peut être exécuter plusieurs fois)
Exemple d'un provider asynchrone multi-canaux multi-producteurs multi-consommateurs
Voir § 6.4 du cours NSY102-Chapitre-06_LesModesDeCommunication.
Executions :
runProvider.bat (à exécuter qu'une fois) (à exécuter en premier)
runProducteur_Canal1.bat (exécution d'un producteur sur le canal 1) (peut être exécuter plusieurs fois)
runProducteur_Canal2.bat (exécution d'un producteur sur le canal 2) (peut être exécuter plusieurs fois)
runConsommateur_Canal1.bat (exécution d'un consommateur sur le canal 1) (peut être exécuter plusieurs fois)
runConsommateur_Canal2.bat (exécution d'un consommateur sur le canal 2) (peut être exécuter plusieurs fois)
ExempleCh07_01_cas0_Corba
Mise en évidence de CORBA à travers des exemples simples avec ou sans service de nommage, utilisation du Tie, évènement et notification.
Mise en évidence de CORBA à travers des exemples simples avec ou sans service de nommage, utilisation du Tie, évènement et notification.
ExempleCh07_01_cas1_hello
Exemple simple de la mise en oeuvre d'un objet distribué en CORBA sans utiliser de service de nommage.
Exemple simple de la mise en oeuvre d'un objet distribué en CORBA sans utiliser de service de nommage.
ExempleCh07_01_cas2_hello_with_ns
Exemple simple de la mise en oeuvre d'un objet distribué en CORBA en utilisant le service de nommage.
Exemple simple de la mise en oeuvre d'un objet distribué en CORBA en utilisant le service de nommage.
ExempleCh07_01_cas3_devise
Exemple plus complet de l'utilisation d'un objet distribué en CORBA qui est une devise monétaire.
Le même exemple que celui fait en RMI dans le cours sur RMI.
Avec en plus, la gestion d'une liste distante des devises possibles.
Exemple plus complet de l'utilisation d'un objet distribué en CORBA qui est une devise monétaire.
Le même exemple que celui fait en RMI dans le cours sur RMI.
Avec en plus, la gestion d'une liste distante des devises possibles.
ExempleCh07_01_cas6_event_push_ref_corba
Exemple de l'utilisation d'un canal d'évènement en CORBA.
Dans l'évènement on fait transiter un objet CORBA afin que le consommateur utilise cet objet distant.
Exemple de l'utilisation d'un canal d'évènement en CORBA.
Dans l'évènement on fait transiter un objet CORBA afin que le consommateur utilise cet objet distant.
ExempleCh08_02_ClassLoader
Cas1 : Exemple de chargement et d'execution d'une classe qui se trouve dans un repertoire "classes"
Cas 2 : Exemple de chargement et d'execution d'une classe qui se trouve sur une machine distante via un serveur de socket.
Cas 3 : Exemple de chargement et d'execution d'une classe qui se trouve sur un serveur HTTP.
Il faut que au preallable un serveur HTTP soit lance. Par exemple EasyPHP. Le web-root est le repertoire "classes" de l'exemple
Cas 4 : le chargement de classe à travers le protocole RMI. Toutes les classes dynamiques sont sur le serveur
Cas 5 : le chargement de classe à travers le protocole RMI. Les classes dynamiques sont sur le client et sur le serveur
Cas 6 : le chargement de classe sans passer par le protocole RMI. . Les classes dynamiques sont sur le client et sur le serveur.
Cas1 : Exemple de chargement et d'execution d'une classe qui se trouve dans un repertoire "classes"
Cas 2 : Exemple de chargement et d'execution d'une classe qui se trouve sur une machine distante via un serveur de socket.
Cas 3 : Exemple de chargement et d'execution d'une classe qui se trouve sur un serveur HTTP.
Il faut que au preallable un serveur HTTP soit lance. Par exemple EasyPHP. Le web-root est le repertoire "classes" de l'exemple
Cas 4 : le chargement de classe à travers le protocole RMI. Toutes les classes dynamiques sont sur le serveur
Cas 5 : le chargement de classe à travers le protocole RMI. Les classes dynamiques sont sur le client et sur le serveur
Cas 6 : le chargement de classe sans passer par le protocole RMI. . Les classes dynamiques sont sur le client et sur le serveur.
ExempleCh08_03a_SimpleProxy
Pour le cours sur le DynamicProxy
Le cas simple de l'utilisation d'un proxy pour que un modele applicatif notifie des vues pour chaque appel aux setteurs du modele
Pour le cours sur le DynamicProxy
Le cas simple de l'utilisation d'un proxy pour que un modele applicatif notifie des vues pour chaque appel aux setteurs du modele
ExempleCh08_03b_ServiceVirtualProxy
Pour le cours sur le DynamicProxy
Le cas de l'utilisation d'un service virtual proxy pour que un modele applicatif notifie des vues pour chaque appel aux setteurs du modele
La classe de modele applicative est chargee dynamiquement sans passer par le CLASSPATH de la JVM.
Ici, la classe est dans un repertoire separe.
Pour le cours sur le DynamicProxy
Le cas de l'utilisation d'un service virtual proxy pour que un modele applicatif notifie des vues pour chaque appel aux setteurs du modele
La classe de modele applicative est chargee dynamiquement sans passer par le CLASSPATH de la JVM.
Ici, la classe est dans un repertoire separe.
ExempleCh08_03c_DynamicProxy
Pour le cours sur le DynamicProxy
Utilisation d'un DynamicProxy pour lier n'importe quel classe de modele applicatif avec les vues qui doivent etre notifiees suite a la modification du modele
Les classes de modele applicative sont chargees dynamiquement sans passer par le CLASSPATH de la JVM.
Ici, les classes sont dans un repertoire separe.
Le dynamic proxy de notification est generique. Il s'adapte a toute classe.
On empile plusieurs proxy :
- un proxy qui loggue les appels aux methodes de l'applicatif dans un fichier
- un proxy qui verifie l'identification (user,password) de l'utilisateur de l'applicatif
Pour le cours sur le DynamicProxy
Utilisation d'un DynamicProxy pour lier n'importe quel classe de modele applicatif avec les vues qui doivent etre notifiees suite a la modification du modele
Les classes de modele applicative sont chargees dynamiquement sans passer par le CLASSPATH de la JVM.
Ici, les classes sont dans un repertoire separe.
Le dynamic proxy de notification est generique. Il s'adapte a toute classe.
On empile plusieurs proxy :
- un proxy qui loggue les appels aux methodes de l'applicatif dans un fichier
- un proxy qui verifie l'identification (user,password) de l'utilisateur de l'applicatif
ExempleCh08_04_InterfaceService2
Cet exemple a le même comportement que l'exemple ExempleCh05_02c_InterfaceService2 mais avec l'utilisation du DynamicProxy pour la création des stubs.
De plus au lieu de simuler un annuaire avec un fichier comme dans l'exemple précédent, ici la gestion d'un annuaire a été codé
Cet exemple a le même comportement que l'exemple ExempleCh05_02c_InterfaceService2 mais avec l'utilisation du DynamicProxy pour la création des stubs.
De plus au lieu de simuler un annuaire avec un fichier comme dans l'exemple précédent, ici la gestion d'un annuaire a été codé
ExempleCh08_05_TesterMyRMI
Programme de test du package myrmi.
Le package est un .jar issu de la compilation de ExempleCh08_04_InterfaceService2.
Programme de test du package myrmi.
Le package est un .jar issu de la compilation de ExempleCh08_04_InterfaceService2.