Le royaume de Eric Buist >> Informatique >> Quelques-unes de mes recherches personnelles >> Trucs et astuces
Me contacter Plan du site
<< Optimisation des performances de Windows Me Faire tourner une applet Swing dans un navigateur À bas l'espionnage! >>

Faire tourner une applet Swing dans un navigateur

Swing constitue une innovation apparue dans JDK1.1 en tant qu'extension de ce dernier et en tant que partie intégrante de Java 2 SDK 1.2 et 1.3. Grâce à Swing, il est possible de créer des applets plus attrayantes avec des boutons pourvus d'images, une interface utilisateur unique quelle que soit la plate-forte, la possibilité de changer l'apparence de tous les éléments de l'interface, le support des technologies adaptées et d'autres choses encore. Un jour peut-être, vous serez tenté de créer une applet Swing au point de le faire et si vous parvenez à un résultat potable, comme ce fut le cas pour moi, vous voudrez certainement voir l'applet apparaître sur votre site.

Vous ajouterez donc, comme d'habitude, le marqueur APPLET avec son attribut code pour indiquer où se trouve la classe héritière de la classe JApplet, celle qui contient une méthode init qui doit être appelée par le navigateur afin d'initialiser l'applet. Toutefois, vous vous rendrez vite compte qu'en lieu et place de l'applet, dans Internet Explorer, apparaîtra un rectangle vide! Internet Explorer 4, 5 et même 5.5 ne supportent pas Java 2! C'est un manque flagrant qui pèse lourd, mais il faut vivre avec cela.

Première solution: installer Netscape Navigator, la version 6 comporte JRE (Java Runtime Environment) et un plug-in permettant d'utiliser Java sous Netscape. Toutefois, Netscape prenant presqu'une minute pour apparaître, je doute fort que bien des gens apprécieraient la nécessité de l'utiliser!

Netscape semble automatiquement utiliser le plug-in JRE plutôt qu'une machine virtuelle Java de son crû. Toutefois, Internet Explorer utilise une machine virtuelle Microsoft qui ne supporte que JDK 1.1, et non Java 2 SDK 1.2, encore moins 1.3. Il faut donc modifier l'appel de l'applet pour qu'au lieu d'activer la machine virtuelle Microsoft, elle utilise un plug-in externe pour s'afficher. Heureusement, il existe un outil, un convertisseur HTML, qui permet de modifier un marqueur APPLET ordinaire pour en faire un marqueur appelant JRE.

Lorsque le navigateur rencontre un tel marqueur, si le Java Plug-in n'est pas installé sur le système, l'installation se fait sur-le-champ et l'applet est exécutée. Internet Explorer pourra alors afficher l'applet correctement.

Exécuter des applets Java 2

Pour l'utilisateur, une telle stratégie, comme je l'ai expérimenté moi-même, peut mener à une baisse marquée, voire insupportable, de vitesse. L'apparition de l'applet a nécessité plus de temps et faire défiler la fenêtre du navigateur provoquait un rafraîchissement de la fenêtre de l'applet visuellement perceptible, très perceptible même! Je ne connais pas de façon d'éviter cet ennuyeux problème, sauf éviter de faire défiler l'écran, mais j'ai une hypothèse sur le problème de vitesse. Si vous avez installé JDK, il n'y a pas une mais deux versions de JRE sur votre système, en tout cas lorsque le plug-in Java sera installé. Il y en a une provenant de JDK, et que je soupçonne pourvue de code pour le débogage et une autre destinée à l'utilisateur moyen, qui s'exécute plus rapidement, qui vient avec le plug-in. Il va donc falloir s'assurer que la bonne version du JRE est utilisée, car on n'a pas besoin d'Internet Explorer pour déboguer une applet, autant utiliser appletviewer pour cela, c'est plus rapide et ça fait mieux le travail.

On effectue cette modification à travers le Panneau de Configuration, icône Java Plug-in. Le démarrage de ce programme prendra un temps fou, en tout cas cela a été le cas sur ma machine. Il a même planté une bonne fois, me forçant au redémarrage complet! Bon, on supposera ici que cela fonctionne et voici la boîte de dialogue qui apparaîtra.

Configuration de Java Plug-in, Propriétés de base

Comme j'ai installé la version internationale du Plug-in, je dispose maintenant d'une interface en français puisque ma version de Windows est française. Dans cette boîte, on doit Activer Java Plug-in et il peut être utile d'Afficher la console Java pour le débogage. Toutefois, malheureusement, l'option que nous cherchions ne se trouve pas dans cette fenêtre. Il va donc falloir passer aux Propriétés avancées pour la trouver.

Propriétés avancées de Java Plug-in

Dans cette boîte, on peut choisir le bon JRE à utiliser et Activer le compilateur Juste à temps. Après avoir cliqué sur Appliquer pour valider les changements, vous pouvez fermer cette boîte de dialogue.

Créez une page Web contenant une applet Java 2

Tout d'abord, créez la page comme si de rien n'était, avec un marqueur APPLET et tout ce qu'il lui faut. Voici un exemple de base d'une page appelant une applet.

Test d'une applet Java

Si vous avez installé JDK, ce qui est plus que probable si vous développez des applets Java, vous pouvez utiliser appletviewer afin de tester le fichier. Comme il m'a fallu le découvrir à force de nombreuses expérimentations infructueuses, contrairement à java, appletviewer ne prend pas le nom de la classe contenant une méthode statique main mais plutôt le nom d'un fichier .html, une page Web donc, qui contient un marqueur APPLET! C'est alors seulement que appletviewer va réagir et utiliser Java 2 pour afficher l'applet.

Pour continuer plus loin, il est nécessaire que l'applet fonctionne bien sous appletviewer. Si ce n'est pas le cas, il est certain qu'elle ne fonctionnera pas dans le navigateur! Lorsque l'applet fonctionne, il faut utiliser le HTML Converter, qu'il faudra télécharger sur le site de Sun afin de pouvoir effectuer la conversion de façon rapide et commode.

Le programme se trouve dans un fichier ZIP qu'il faudra décompresser avec WinZip dans un répertoire de votre choix. Ensuite, vous pourrez exécuter ce dernier qui est une application Java. Puisque vous avez développé l'applet, qu'elle fonctionne et tout, JDK se trouve sur votre machine et vous avez fini par ajouter à l'instruction PATH le chemin vers le répertoire contenant javac, java et appletviewer. Si ce n'est pas le cas, faites-le, cela va vous sauver du temps. La technique est décrite sur la page traitant de l'installation de JDK.

Dans le répertoire htmlconv1_3\converter\classes se trouve l'application recherchée. Supposons que ce répertoire se trouve dans c:\. La séquence de commandes suivante devrait activer le programme.

cd \htmlconv1_3\converter\classes
java HTMLConverter

Écran de HTML Converter

Après un temps bien long à mon goût, quelque chose devrait apparaître. Vous pouvez alors configurer les options, comme l'endroit où se trouvent les fichiers à convertir et le modèle utilisé. Mon choix se porte sur Extended qui prend en charge un plus grand nombre de navigateurs et de plate-formes, mais vous pouvez en choisir un autre, selon vos besoins. Lorsque tout est en place, cliquez sur Convert... et c'est parti! Les nouveaux fichiers HTML seront apparemment identiques aux anciens, sauf pour les endroits où on trouvent des marqueurs APPLET.

Lorsqu'un utilisateur ouvrira cette page modifiée depuis Internet Explorer ou Netscape Navigator, le navigateur mettra en marche son Plug-in, après l'avoir téléchargé et installé au besoin, et pourra afficher, avec un peu de chance, l'applet.

Malheureusement, je trouve la vitesse plus que déplorable. Si des progrès en matière de vitesse ne sont pas effectués, j'estime que Java est appelé à disparaître. Des machines plus performantes, avec un processeur pourvu d'un jeu d'instructions permettant d'interpréter directement le bytecode Java ainsi que du jeu Intel habituel, semblent une solution logique et intéressante à ce problème. En attendant, il faudra regarder les applets se charger lentement et désespérer en se demandant pourquoi on utilise Java lors des cours de programmation!