system menu Sommaire minimize maximize close

system menu Sujet minimize maximize close
Realisation d'un framework de window-manager et de services distants sous Netscape

Le but de ce projet est de realiser un framework permettant a la fois de gerer le fenetrage d'applications sous Netscape 4.x et la mise a disposition de ces applications par un serveur de "plugins".
Le fenetrage des applications sous Netscape se fera en dynamique HTML et devra offrir un Look and Feel a la Windows (barre des taches, menu demarrer, ...).
Les applications seront fournies sous forme de "plugin". Ceux-ci devront implementer une interface donnee. En effet, ils seront composes de deux parties: une partie locale (Applet Java et stub Rmi) et une partie distante (skeleton Rmi).
Ce framework pourra typiquement etre utilise pour developper un bureau virtuel.

system menu Contexte minimize maximize close
Partout dans le monde, l'Internet, et plus particulierement le web, se developpe plus que jamais. On assiste meme a une proliferation des browsers web dans tous les appareils electroniques de notre quotidien: telephone portable, assistant electronique, etc...
Pourquoi alors ne pas proposer un environnement de travail similaire a celui de son bureau, et acceder ainsi de n'importe ou a ses donnees et a ses applications d'une facon conviviale et pratique ?

system menu Prerequis minimize maximize close
Le lancement de l'exemple d'utilisation necessite les applications suivantes:
  • Netscape 4.5 avec Java, Javascript et les style sheets actives
  • JDK 1.2
  • Java Plugin 1.2
 IMPORTANT:
Whos 98 n'a ete teste que sous environnement Windows. En effet, le Java Plugin 1.2 est, pour l'instant, uniquement disponible sur cette plateforme.

system menu Lancement de l'exemple d'utilisation de Whos 98 minimize maximize close
  1. Lancez le serveur grace au fichier batch start_RemoteFileSystem.bat,
  2. Placez le fichier .java.policy dans le bon repertoire:
    • sous un environnement Windows NT:
       C:\Winnt\Profiles\login\
    • sous un environnement Windows 95 multi utilisateur:
       C:\Winnt\Profiles\login\
    • sous un environnement Windows 95 standard:
       C:\Windows\
    • sous un environnement Unix:
       ~/
  3. Ouvrez le fichier index.html avec Netscape 4.5,
  4. Decouvrez !...
 IMPORTANT:
Si le RemoteFileSystem serveur n'est pas lance en local (ce qui devrait etre le cas le plus courant, en utilisation normale), il faut bien evidemment positionner le parametre HOST de l'applet EditorApplet, dans le fichier index.html.

system menu Les exemples fournis minimize maximize close
Trois applets sont fournies a titre d'exemples avec Whos 98 pour illustrer les facilites offertes par son API.
  • ChemApplet est une applet de visualisation de molecule chimique en 3D. Elle fonctionne de maniere "traditionnelle" (entierement en local), n'utilise aucune connection vers un autre serveur et ne necessite pas de permissions supplementaires pour, par exemple, l'ecriture sur disque dur;
  • SCApplet est un tableur qui fonctionne en local, mais dont l'utilite serait bien superieur si les donnees manipulees pouvaient etre sauvegarder;
  • EditorApplet est un editeur de texte, qui montre bien les possibilites offertes par le framework de Whos 98. En effet, cette editeur utilise les capacites de stockage de l'API Java de Whos 98, qui permet d'ouvrir un fichier, de l'editer, puis de le sauvegarder.

system menu Technologies mises en jeux minimize maximize close
Les technologies etudies pour ce projet sont les suivantes:
  • le dynamique HTML, pour le fenetrage des applications;
  • les Java RMI (Remote Method Invocation), pour la communication entre Applet et Application;
  • les CSS (Cascading Style Sheet), pour la mise en style du framework;
  • les certificats et les policy files, pour la securite des Applets, du a l'ouverture d'une connection vers un serveur "inconnu".

system menu La hierarchie des repertoires de Whos 98 minimize maximize close
La hierarchie des repertoires de Whos 98 est la suivante:
  1. system contient les fichiers necessaires au fonctionnement du systeme,
    • gui contient les fichiers JavaScript implementant l'interface graphique,
    • net contient les fichiers Java facilitant la mise en oeuvre d'applications distantes (RMI),
    • classes contient les binaires des fichiers Java du repertoire precedent,
  2. help contient les fichiers d'aide en HTML,
    • api contient le javadoc de l'API Java,
  3. template contient un modele de fichier HTML permettant de creer une application utilisant le framework (ce fichier comporte les inclusions et initialisations necessaires au bon fonctionnement du systeme),
  4. images contient les images utilisees par l'interface graphique,
  5. examples regroupe les applets et les plugins utilises par l'exemple.

system menu L'API JavaScript minimize maximize close
Le code HTML suivant montre la facon d'initialiser Whos 98:

<html> <head> <title>WHOS 98</title> </head> <!-- Les inclusions necessaires au bon fonctionnement de Whos 98 --> <script language="JavaScript" src="system/gui/whos.js"></script> <script language="JavaScript" src="system/gui/div.js"></script> <script language="JavaScript" src="system/gui/window.js"></script> <script language="JavaScript" src="system/gui/component.js"></script> <script language="JavaScript" src="system/gui/frame.js"></script> <script language="JavaScript" src="system/gui/taskbar.js"></script> <script language="JavaScript" src="system/gui/button.js"></script> <script language="JavaScript" src="system/gui/menuitem.js"></script> <script language="JavaScript" src="system/gui/menu.js"></script> <script language="JavaScript" src="system/gui/separator.js"></script> <script language="JavaScript"> function main() { WHOSInitialize() //---------------------------------------- // Le code utilisateur prend place ici ... //---------------------------------------- //---------------------------------------- // et se termine ici. //---------------------------------------- whos.addSeparator(); whos.addLink("Help&nbsp;...", "help/help.html"); whos.addFrame("About&nbsp;...", 260, 390, "help/about.html"); } </script> <body bgcolor="#00AAAA" onLoad="main()"> <center> <img name="logo" vspace="150" src="images/logo.gif"> </center> </body> </html>
Apres l'appel de WHOSInitialize() l'utilisateur doit invoquer des methodes de l'objet global whos afin de placer ses applications dans le menu de la barre des taches.
Ces methodes sont les suivantes:
  • addApplet(title, width, height, code, codebase [, param]*)
    1. title est une chaine representant le texte affiche dans le menu
    2. width est la largeur de la fenetre contenant l'applet
    3. height est la hauteur de la fenetre contenant l'applet
    4. code est une chaine contenant le nom du fichier contenant l'applet
    5. codebase est une chaine contenant l'URL de l'applet
    6. param est une chaine contenant un parametre de l'applet sous la forme "name=XXX value=YYY"
  • addPlugin(title, width, height, code, codebase [, param]*)
    1. title est une chaine representant le texte affiche dans le menu
    2. width est la largeur de la fenetre contenant l'applet
    3. height est la hauteur de la fenetre contenant l'applet
    4. code est une chaine contenant le nom du fichier contenant l'applet
    5. codebase est une chaine contenant l'URL de l'applet
    6. param est une chaine contenant un parametre de l'applet sous la forme "varX=valueX"
  • addFrame(title, width, height, url)
    1. title est une chaine representant le texte affiche dans le menu
    2. width est la largeur de la fenetre contenant la fenetre
    3. height est la hauteur de la fenetre contenant la fenetre
    4. url est une chaine representant l'URL de la page a charger dans une fenetre interne
  • addLink(title, url)
    1. title est une chaine representant le texte affiche dans le menu
    2. url est une chaine representant l'URL de la page a charger dans une fenetre externe du navigateur
  • addSeparator(). Cette methode ajoute un separateur dans le menu de la barre des taches

system menu L'API Java minimize maximize close
L'API Java fournie par Whos 98, pour faciliter le developpement d'applications, propose un systeme de stockage distribue, permettant la sauvegarde et l'ouverture de n'importe quel fichier a partir d'un browser web.
Un Javadoc decrit les classes composant cette API Java.
Ce systeme de stockage est compose de deux elements:
  1. D'une part, un syteme de fichier distant. Celui fournit les methodes de base d'un systeme de fichier, a savoir:
    • la creation d'un fichier,
    • l'effacement d'un fichier,
    • la sauvegarde d'un fichier,
    • la liste des fichiers d'un repertoire,
    • etc...
  2. D'autre part, un file chooser fonctionnant au-dessus du systeme de fichier et permettant de parcourir les repertoires et de selectionner un fichier a distance.
file chooser

Pour pouvoir ouvrir une connection avec un serveur distant, il faut avoir des droits supplementaires. La section suivante detail les manieres et les outils permettant d'acquerir ces permissions.

system menu Les Applets et la securite minimize maximize close
Version Support Outils
JDK 1.0 Netscape 4.05 (et inférieur), Appletviewer
JDK 1.1 Appletviewer, Java Plugin 1.1.2, HotJava
  • Javakey, signe les archives avec un algorithme DSA et un certificat X.509.
Netscape 4.08 (et supérieur)
  • Signtool, signe les archives avec un algorithme RSA et un certificat X.509.
JDK 1.2 Appletviewer, Java Plugin 1.2
  • Keytool, gère une base de clés privées et leurs certificats.
  • Jarsigner, signe les archives avec un algorithme DSA et un certificat X.509.

Quelques documents indispensables sur la sécurité des Applets:

system menu Les applications possibles du framework minimize maximize close
Avant d'evoquer les applications possibles d'un tel framework il faut souligner certains points lies aux choix de conceptions:
  • La partie client, c'est-a-dire les fichiers JavaScript, est concue de facon a etre la plus "legere" possible (a peine 30ko pour JavaScript et les icones) afin de rendre le framework reellement utilisable sur Internet,
  • L'API JavaScript est extremement simple afin de rendre aisee la creation dynamique de pages HTML par le serveur.

Quelques unes des applications envisageable de ce framework sont:
  • la realisation d'un serveur d'applets:
    1. l'utilisateur choisit une serie d'applets qu'il desire visualiser,
    2. le serveur genere une page Whos 98 avec le menu de la barre des taches contenant les applets selectionnees,
    3. l'utilisateur peut utiliser chaque applet dans une seule page
    On peut noter que chaque applet peut, dans ces conditions, communiquer avec les autres au moyen d'InfoBus puisqu'elles font partie d'une seule et meme page,
  • la realisation d'un bureau virtuel:
    1. l'utilisateur donne son login et son mot-de-passe,
    2. le serveur lance un serveur RMI et cree une page Whos 98 contenant des applets auxquelles il passe l'URL du serveur RMI en parametre,
    3. selon la demande de l'utilisateur, celui-ci dispose d'applets permettant "d'uploader" ou d'editer des fichiers sur son compte distant. Au besoin, si l'utilisateur se connecte depuis autre chose qu'un ordinateur, il peut demander des accessoires divers tels qu'une calculatrice ou toute autre chose dont il ne dispose pas.

system menu Problemes rencontres minimize maximize close
Premierement, il a fallu "jongler" avec les incompatibilites entre le dynamique HTML de Netscape et celui d'Internet Explorer (notre but premier etait de faire un framework fonctionnant sous les deux browsers). Devant les problemes rencontres, nous avons decide de nous diriger vers une application pour Netscape. Un portage vers le browser de Microsoft est possible, mais aurait demande beaucoup plus de temps.
Ensuite, il a fallu tenir compte des differentes versions de Netscape (4.05, 4.08 et 4.5), des interpreteurs JavaScript qu'elles utilisaient et des JVM qu'elles proposaient. Notre choix s'est porte sur la version 4.5 parce qu'elle supporte convenablement le dynamique HTML et le CSS.
Enfin, il a fallu etudier la securite que propose Java pour les Applets. Notre choix initiale s'etant porte sur le JDK 1.1.5 (celui de Netscape 4.x), nous avons du etudier la signature des Applets par certificat, avec l'outil signtool de Netscape. Puis, nous avons finalement opte pour l'installation du Java plugin 1.2 (pour son support de Swing) et avons du travailler avec des policy files.

system menu Demonstration et telechargement minimize maximize close
Pour lancer la demonstration, cliquez ici. Cette demonstration ne comprend pas la partie RMI de l'application : elle offre simplement un apercu de l'interface graphique et de la facon dont l'affichage dynamique des applets est gere.
Pour telecharger le programme source, c'est ici qu'il faut cliquer.

system menu Conclusion minimize maximize close
Ce projet nous a permis d'etudier de nombreux outils et technologies Internet. Il nous a familiarise avec l'une des grandes tendances de demain, a savoir l'acces de documents et applications personnels a partir d'un browser web.
Enfin, il nous a ouvert les yeux sur la multitude, la diversite et l'incompatibilite des differents outils Internet, et la difficulte qu'il y avait a developper des applications pour tous ces derniers.