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

  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)

  ExempleCh03_01_Hello
Exemple simple en RMI : le message HELLO
  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.
  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
  ExempleCh04_01_DPFactory
Exemple du DP Factory
  ExempleCh04_02_DPSingletonCAS1
Exemple du DP Singleton
  ExempleCh04_02_DPSingletonCAS2
Exemple du DP Singleton
  ExempleCh04_03_DPBuilder
Exemple du DP Builder
  ExempleCh04_04_InjectionDependance
Programme qui montre une injection de dependance par un fichier de configuration

  ExempleCh04_05_DPProxy
Exemple du DP Proxy
  ExempleCh04_06_DPDecorateur
Exemple du DP Decorateur
  ExempleCh04_07_DPComposite
Exemple du DP Composite
  ExempleCh04_08_DPIterator
Exemple du DP Iterateur
  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
  ExempleCh04_09_DPStrategie
Exemple du DP Strategie
  ExempleCh04_10a_DPObserverSimple
Exemple du DP Observer
Cas : Synchrone minimal
  ExempleCh04_10b_DPObserverEtat
Exemple du DP Observer
Cas : Synchrone avec separation du changement d'etat et de la notification
  ExempleCh04_10c_DPObserverProxy
Exemple du DP Observer
Cas : Avec un proxy
  ExempleCh04_10d_DPObserverAsynchronePush
Exemple du DP Observer
Cas : Asynchrone push
  ExempleCh04_10e_DPObserverAsynchronePushAndPush
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)
  ExempleCh04_12_Visitor
Exemple simple du DP Visitor.
Exporter des formes en XML.

  ExempleCh04_13_DPAdaptateur
Exemple du DP Adaptateur
  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
  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.
  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.
  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
  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).
  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)

  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.
  ExempleCh07_01_cas1_hello
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.
  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.
  ExempleCh07_01_cas4_devise_avec_Tie
Le même que précédemment mais sans l'héritage des OD.
  ExempleCh07_01_cas5_event_push
Exemple de l'utilisation d'un canal d'évènement en CORBA.
  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.
  ExempleCh07_01_cas7_projections_autres
Exemples de projection en IDL de différents éléments.
  ExempleCh08_01_DPProxyDynamic
Exemple du DP Proxy mais en utilisant un DynamicProxy
  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.
  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
  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.
  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
  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é
  ExempleCh08_05_TesterMyRMI
Programme de test du package myrmi.
Le package est un .jar issu de la compilation de ExempleCh08_04_InterfaceService2.