TUTORIELS 
Principes de fonctionnement d'une applet Java
Bien que passées de mode, certaines applets Java sortent du lot. Utilisées pour optimiser le design d'un site, ou employées à des fins pédagogiques (voire ludiques), elles parviennent à redorer le blason de cette technologie.  (15 novembre 2001)
 

Vous l'avez peut-être remarqué, les applets Java se font rares. Au rayon des inconvénients ses détracteurs mettent en avant la lenteur de chargement ou d'exécution de certaines d'entre elles. De plus, des problèmes de compatibilité existent entre navigateurs: un comble pour une architecture Java. Ces difficultés proviennent des différentes JVM (Java Virtual Machine) disponibles selon les versions ou les types de navigateurs : elles n'interprètent pas toutes le langage Java de la même façon.
Malgré ces défauts, cette technologie n'est pas dénuée d'intérêt, en voici quelques exemples :

- "Contact Applet" : Economise de la place sur une page d'accueil par exemple.
- Des flocons de neige tombent sur vos images...
- Comprendre le threading d'un seul coup d'oeil (cliquez sur les trois applets).

Examinons maintenant l'installation et le fonctionnement général des applets.

L'installation

Voici la procédure à suivre pour faire fonctionner le plus rapidement possible une applet au sein de son navigateur. On considère l'applet suivante, un simple "Hello World" dont voici le code source :

import java.awt.*;
public class HelloWorld extends java.applet.Applet
{
     public void init ()
     {
          add(new Label("Hello world !"));
     }
}

Il s'agit ici de comprendre comment exécuter sur son navigateur une telle applet.
Sauvegardez ces lignes de code dans un fichier nommé "HelloWorld.java".
Afin que ce code soit compréhensible par la JVM, il faut le maintenant le compiler afin d'obtenir un ".class", du bytecode autrement dit :

( Installez un compilateur Java si besoin)

javac HelloWorld.java

Si tout s'est bien passé vous obtenez un fichier nommé "HelloWorld.class", interprétable par la machine virtuelle.
Nous en sommes à la moitié du chemin, il faut maintenant intégrer l'applet au sein du code HTML, ceci est rendu possible grâce à la balise <APPLET>. Cette dernière est normalement remplacée par la balise <OBJECT> depuis HTML 4 mais <APPLET> est la syntaxe que vous croiserez le plus souvent :

<APPLET code="HelloWorld.class" codebase="../tst" width="80" height="30">
</APPLET>

Vous devriez maintenant apercevoir ci-dessous un magnifique "Hello world !"

On trouve ici au sein de cette balise <APPLET>, les attributs "code", "codebase" (facultatif), "width" et "height". Le premier spécifie tout simplement le nom du fichier ".class", le second permet d'indiquer où se trouve le fichier ".class" par rapport au fichier HTML lorsqu'ils ne sont pas tous les deux dans le même répertoire. Enfin les deux derniers attributs spécifient la taille que l'on souhaite attribuer à l'applet sur la page HTML.

Il existe d'autres attributs facultatifs que l'on peut trouver dans la balise <APPLET>.
De plus, certaines applets sont prévues pour recevoir un nombre variable de paramètres. Dans ce cas, ils sont passés de la sorte :

(exemple avec l'applet "neige" mentionnée au début de l'article)
<APPLET CODE="neige.class" WIDTH="200" HEIGHT="100">
    <PARAM NAME="image" VALUE="mon_image.jpg">
    <PARAM NAME="strength" VALUE="3">
</APPLET>

L'applet est alors capable d'appliquer ses paramètres à l'application. Ici la neige s'appliquera sur une image nommée "mon_image.jpg", avec une force de 3.
Une applet bien documentée par son auteur indique les paramètres qu'elle est susceptible de recevoir.

Quelques principes généraux

Pour des raisons de sécurité évidentes, les applets ne sont pas tout à fait des applications Java comme les autres. Imaginez qu'une applet mal intentionnée soit capable de formater votre disque dur... En fait les applets n'ont pas accès au système de fichier des machines sur lesquelles elles s'exécutent. Une applet ne peut pas non plus établir de connection réseau autre que celle qui existe entre elle et la machine qui l'héberge. Elles ont par contre le pouvoir de réagir aux actions de la souris, du clavier ou du système (voir les threads).

Pour notre exemple "Hello World", nous avons utilisé :

public class HelloWorld extends java.applet.Applet

Une applet est l'instanciation d'une classe dérivée de la classe "Applet" située dans le paquetage java.applet. Cette classe "Applet" hérite de plusieurs classes.

L'utilisation de la clause "import" en début de code...

import java.awt.*

... permet en quelque sorte de définir un chemin (l'équivalent du "path") destiné à simplifier l'écriture du programme.

Enfin, une applet n'est pas éternelle, son "cycle de vie" se définit de la manière suivante :

- Le navigateur la présence d'une applet grâce à la balise <APPLET>, il crée une instance de cette applet par la méthode "init()".
- L'exécution de l'applet se fait par la méthode "start()". Si la page est rechargée cette méthode est systématiquement rappelée. Il se peut également que la méthode "init()" soit rappelée, cela dépend du navigateur.
- Lorsque l'internaute quitte la page où est située l'applet, l'exécution de celle-ci est stoppée par le navigateur grâce à la méthode "stop()".
- Ca n'est que lorsque le navigateur sera fermé que l'instance de l'applet sera détruite via la méthode "destroy()".

Nous avons maintenant fait le tour de quelques principes généraux de cette technologie. Dans un prochain article nous vous présenterons une sélection d'applets particulièrement intéressantes, qui vous donnera peut-être l'envie à votre tour d'insérer l'une d'entre elles sur votre site.

 
[ Arnaud GadalJDNet
 
Accueil | Haut de page