Introduction aux applets Java

Une applet est un petit programme Java destiné à être téléchargé et exécuté par le navigateur de l’internaute. Dans le principe, créer une applet n’est pas tellement compliqué. Des notions de programmation sont cependant nécessaires dès que l’on souhaite faire des choses un peu évoluées. Cet article se propose de vous présenter ce qu’il faut faire pour créer et mettre en ligne une simple applet.

Les principes de base

« Applet » est le nom d’une classe Java contenue dans le package « java.applet ». Tout programme Java destiné à être exécuté au sein d’un navigateur dérive [1] nécessairement de cette classe. Par extension, on appel applet toute sous classe de la classe « Applet ».

La classe Applet implémente plusieurs méthodes. Les principales sont les méthodes « init() », « start() », « stop() » et « destroy() ».

La méthode « init() » est la première méthode appelée une fois l’applet chargée par le navigateur. C’est dans cette fonction que les opérations d’initialisation doivent être effectuées.

La méthode « start() » est exécutée à la suite de la fonction « init() » et chaque fois que l’applet apparaît à l’écran.

La méthode « stop() » est exécutée chaque fois que l’applet disparaît. C’est par exemple le cas lorsque l’utilisateur réduit la fenêtre de son navigateur.

La méthode « destroy() » est exécutée lorsque les ressources utilisées par l’applet doivent être libérées. C’est par exemple le cas lorsque l’utilisateur ferme son navigateur. Avant d’exécuter cette fonction, la méthode « stop() » est systématiquement exécutée.

Les méthodes « init() », « start() », « stop() » et « destroy() »
implémentées dans la classe Applet ne font rien, elles peuvent donc être redéfinies sans soucis par les classes héritières de la classe Applet.

Créer une applet va simplement consister à écrire une nouvelle classe, dérivée de la classe « Applet » et qui redéfinit tout ou partie de ces quatre fonctions de base. Le code minimal d’une applet ressemble alors à ceci :

//importation des différentes bibliothèques
import java.applet.*;

public class Hello extends Applet
{
public void init()
{
//code d'initialistaion
}

public void start()
{
//code de d'éxécution
}

public void stop()
{
//code de suspension de l'execution
}

public void destroy()
{
//code de terminaison
}
}

Affichage de données dans une applet

Quand un développeur crée un programme, il souhaite que ce programme réalise une opération et affiche un résultat. Le résultat peut être très simple – afficher un texte par exemple – ou plus compliqué – dessin, graphismes, animations…
Une applet n’échappe pas à cette règle, avec la contrainte supplémentaire que le résultat doit être visible au sein du navigateur. Il faut donc afficher le résultat dans l’espace graphique dévolu à l’applet.

La classe « Applet » dérive de la classe « Panel ». Un panel est un composant graphique dans lequel il est possible de dessiner des figures ou d’ajouter d’autres composants graphiques. La classe « Applet » implémente donc les méthodes de la classe « Panel », et en particulier la méthode « paint(Graphics g) » qui permet de dessiner au sein de l’applet.

Dans l’expression « paint(Graphics g) », « g » est une instance de la classe « Graphics », classe qui implémente elle-même différentes fonctions de tracé graphisme. La méthode paint est appelée par le système chaque fois que l’affichage de l’applet doit être rafraîchis. L’objet « g » est alors fourni par le système et c’est à l’utilisateur de manipuler cet objet pour réaliser l’affichage qu’il souhaite obtenir.

Travaux pratiques

Avant de vouloir faire compliqué, il faut commencer par faire simple, voire basic, pour bien comprendre comment se programme une applet. Le premier programme de tout bon programmeur est d’afficher une phrase du type « Coucou tout le monde ». Cet article ne va donc pas déroger à cette règle.
Pour écrire du texte dans un applet, il faut dessiner du texte dans l’objet de type « Graphics » passé en argument de la méthode « paint ».

Le code complet de l’applet est alors :

import java.applet.*;
import java.awt.*;

public class HelloHub extends Applet
{
public void paint(Graphics g)
{
g.drawString("Hello les visiteurs du Hub !!!", 30, 30);
}
}

Petit commentaire sur ce code :
* Tout d’abord, les méthodes « init() », « start() », « stop() » et « destroy() »
n’étant pas utiles ici, elles n’ont pas été définies.
* La classe « Graphics » appartenant à la bibliothèque « awt » – Abstract Windows Toolkit – il est nécessaire d’importer cette bibliothèque pour que la classe « Graphics » soit connue par le compilateur.
* la méthode « drawString » qui s’applique à l’objet « g » permet de dessiner le texte passé en argument aux coordonnées spécifiées.

Une fois ce texte écrit, il suffit de l’enregistrer dans un fichier portant le même nom que la classe et ayant l’extension « .java ». Le nom du fichier est donc ici « HelloHub.java ».
Pour compiler le programme, il faut taper la commande « javac HelloHub.java ». Un fichier « HelloHub.class » est alors créé par le compilateur. C’est ce fichier qui comporte le code natif de la classe « HelloHub ».

Affichage de l’applet dans une page web

L’intégration d’une applet dans une page web se fait, par la balise « Applet » grâce au code suivant [2]] :

Applet java qui fait coucou au Hub...

Les attributs « width » et « height » permettent de définir la surface sur laquelle va s’étaler l’applet. La phrase entre les balises sert de texte alternatif pour les navigateurs qui ne sont pas capables de lire l’applet.

Une fois la page HTML écrite, il est possible de tester l’applet grâce à un petit utilitaire appelé appletviewer, fournit avec le compilateur java de Sun (J2SDK). Pour cela, il suffit de taper la commande « appletviewer » suivit de l’adresse de la page HTML. L’appletviewer a surtout une utilité dans le déboguage de l’applet. Le résultat final peut normalement être vu directement en affichant la page HTML dans un navigateur.

Références

http://java.sun.com : Site officiel du langage Java
http://www.w3.org/TR/html4/struct/objects.html#edef-APPLET : Recommendations du W3C concernant l’intégration des applets dans des pages HTML.


[1] La dérivabilité est une notion importante de la programmation objet. Il est possible de définir une classe à partir d’une autre classe. L’idée est que si la classe B dérive de la classe A, la classe B va hériter de tous les attributs et de toutes les méthodes de la classe A. Dans la pratique, des règles d’héritage existent qui font que B n’hérite pas forcément de tous les attributs et de toutes les méthodes de A, mais ceci n’est pas l’objet de cet article.

[2] [Le W3C préconise une intégration des applets Java à l’aide de la balise « Object ». Cette recommandation fonctionne très bien avec Mozilla, mais il semble qu’Internet Explorer ne reconnaisse pas cette forme d’intégration. Le code recommandé par le W3C est le suivant :

classid="java: HelloHub.class "
width="500" height="200">
Applet java qui fait coucou au Hub...