ENVIRONNEMENTS DISTRIBUES
& COMMUNICATIONS DANS LES RESEAUX

La situation étant la suivante : Ainsi nous avons désormais en main tous les outils pour créer des mondes virtuels sur le web.

PROTOCOLES & CONSORT

API bas niveaux :
API-Sockets (TCP/UDP)
Transfert de données normalisé :
HTTP (flux encapsulé par cgi, java servlets), Irc, Muds ...
Protocole haut niveau :
RMI (Java) , IIOP (CORBA) , COM/DCOM (Microsoft) ...
On choisira un protocole haut niveau supporté par les clients web. Pour des raisons de simplicité de mise en oeuvre, j'ai opté pour Java RMI.

RMI : Remote Method Invocation

Usage
RMI est un protocole client/serveur propre au langage java.
Ce package permet de faire dialoguer des objets java par Internet.
RMI est un peu occulté par le boom Corba, il n'empêche qu'il a quelques différences :

RMI repose sur l'API Sockets (IP), le port par défaut est 1099, ceci peut poser problème lorsque le client se connecte derrière un firewall ne laissant passer que le port http (80). Une alternative permet de contourner le problème : l' encapsulation sur http par l'interface CGI (méthode POST), pour cela il faut installer le programme java-rmi.cgi qui fait le pont entre le serveur httpd et le serveur RMI .

Source Java RMI

/**
 * Serveur RMI
 **/
// [...]
// Gestionnaire de securité du serveur
System.setSecurityManager( new RMISecurityManager() );

//Service de nommage
Registry r=null;
// port par défaut du "socket rmi" : 1099
r = LocateRegistry.createRegistry(1099); 

MonObjetDis oserv = new MonObjetDis();
r.rebind("objetd_0",oserv);
//l'objet est donc accessible par les clients
// [...]


/**
 * Client RMI
 **/
// [...]
MonObjetDisI o ;
// Connecte l'instance de l'objet distribué
o = (MonObjetDisI) Naming.lookup("rmi://localhost/objetd_0";
// o.modify(); 
// [...] 

CONCLUSION

Il faut traiter les problèmes classiques de RVD :

RESSOURCES : Systèmes Distribués

RMI
Tutorial : http://java.sun.com/docs/books/tutorial/rmi/index.html
Faq : http://www.javasoft.com/products/javaspaces/faqs/rmifaq.html , http://java.sun.com/products/jdk/1.2/docs/guide/rmi/faq.html
DIS-Java-VRML Working Group
IEEE DIS : Distributed Interactive Simulation
Infrastructure pour Réalité Virtuelle distribuée du Web3D Consorsium
But du projet : Implantation du protocole DIS en Java & VRML / Distribution GPL