Le terme applet ou appliquette en français signifie "petite application" java s'exécutant à l'interieur d'une autre application. La plupart du temps, le terme désigne les classes java dérivant de la classe Applet et s'exécutant dans un navigateur web. Un applet est souvent de taille réduite pour permettre les transferts via Internet.
Ces applets ne sont pas lancées comme des programmes stand-alone, c'est-à -dire en lançant java maClasse. Une page HTML est nécessaire. Elle doit contenir un TAG dans lequel sera indiqué le programme Java à lancer. Les principaux navigateurs présents sur le marché possédent une JVM (Java Virtual Machine ) en standard mais ce sont souvent des JVM java 1 (1.1) . Dans ce cas, les navigateurs ne peuvent exécuter les classe écrites en Java 2. Il faut alors installer le JRE (Java Runtime Environment ) qui est une JVM Java 2 et qui ne contient que les éléments utiles à l'exécution des classes et non à leur compilation. Une applet s'exécute sur le poste CLIENT, c'est-à-dire le poste qui a appelé l'applet. L'applet est téléchargée par le navigateur et le JRE l'exécute. Il est à noter que les applets de grande taille peuvent être compressées grâce à l'utilitaire JDK jar pour optimiser les temps de chargement; cependant le navigateur interprête aussi bien les fichiers .jar que les fichiers .class.
L'applet suivante charge simplement un bouton "ok"
import
java.applet.*;
import javax.swing.*;
class TestApplet extends
Applet{
void
init(){
getContentPane().add(new
Jbutton("ok"));
}
}
Pour exécuter ce programme il faut donc écrire une page HTML qui fait référence à ce fichier.
<HTML>
<BODY>
<applet
code="TestApplet.class" width="760" height="400"
align="middle"</applet>
</BODY>
</HTML>
Le fichier HTML doit se trouver dans le même répertoire que le fichier .class. Dans le cas contraire, l'instruction codebase="répertoire du .class" doit être rajouter au TAG. Il ne reste plus qu'à lancer le navigateur et à ouvrir le fichier HTML. Pour un exemple de fichier HTML lançant une applet Java 2, voir le paragraphe 10.5.
Les applets ont un processus de vie lorsqu'elles tournent dans un navigateur. Elles suivent ce cycle :
init() -> start() -> stop() ->
destroy()
L'applet est chargée dans le navigateur et sa méthode init() est exécutée ( une seule fois). C'est dans cette méthode que les composants de l'interface utilisateur sont généralement initialisés.
Après la naissance, le navigateur lance l'applet en appelant la méthode start(). Si la page HTML qui a lancé le programme Java est quittée, ( pour aller à une autre URL ) et que l'utilisateur y retourne, la méthode start() sera relancée. La méthode start() est un bon moyen de lancer toutes les opérations comme du son ou des animations lors du lancement de la page HTML.
Lorsque l'utilisateur change de page HTML, l'applet courante se met en mode "veille". La méthode stop() est appelée à ce moment. start() sera relancée si l'utilisateur revient sur la page HTML qui a lancé l'applet.
Lorsque le
navigateur se fermera la méthode destroy() sera
exécutée. Cette méthode ne doit pas être
appelée directement.
Il est possible de passer dans la page HTML des paramètres qui seront transmis à l'applet. Les paramètres sont definis dans la page HTML comme il suit:
<param name="[Nom du paramètre]" value="[valeur]">
Exemple: <param
name="color" value="blue">
Nous
disposons donc d'un paramètre nommé "color"
et valant "blue". Il n'est possible de passer que
des chaînes de caractères en paramètre. Pour
récupérer ces valeurs, nous utilisons la méthode
getParameter(String s). Exemple:
String sMonParametre=getParameter("Color");
//sMonParametre="blue"
<HTML>
<TITLE>Titre de
l'application</TITLE>
<BODY>
<!-- Partie lue par
InterNet Explorer !-->
<object
classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="760" height="400"
align="middle">
<PARAM
NAME="CODE" value="ex.MonExemple.class">
<PARAM
NAME="NAME" value="MonExemple">
<PARAM
NAME=TRACE VALUE="ON">
<PARAM
NAME="cache_option" VALUE="PLUGIN">
<PARAM
NAME="cache_archive" VALUE="exemple.jar">
<!--
Partie lue par Netscape qui ignore le tag <COMMENT> !-->
<comment>
<embed
type="application/x-java-applet;version=1.3" width="760"
height="400" align="middle"
CODE="ex.MonExemple.class" name="MonExemple"
cache_option="PLUGIN" cache_archive="exemple.jar"
TRACE="ON">
</OBJECT>
</BODY>
</HTML>
Remarques:
Le nom de la classe à lancer par le navigateur comprend le nom complet ( avec le package ) suivi de ".class". Le fichier HTML se trouve ici dans le même répertoire que le répertoire "ex".
Le paramètre "cache_archive" correspond à la variable d'environnement CLASSPATH pour les classes stand-alone et donne la liste des jars à télécharger pour pouvoir utiliser l'applet. De plus, ces fichiers sont alors mis en cache "protégé" du navigateur pour être certain que les classes de l'application ne seront pas téléchargées à chaque lancement mais que dans le cas où l'application a changé.
La taille graphique de l'applet est donnée par les paramètres "width" et "height" en pixels.
Modifier l'applet de test pour que les différentes étapes du cycle de vie des applets s'affichent dans la console Java.
1- Reprendre les écrans des TD9 et les transformer en applet.
2- Modifier ces applets pour qu'elles soient à la fois des
JApplet et des stand-alone que l'on pourra lancer sans
navigateur ( classes possédant une méthode main() )