Les Applets Java : Bases et différences clés
Une applet est un programme Java qui s'exécute dans un navigateur Web. Une applet peut être une application Java pleinement fonctionnelle car elle dispose de l'ensemble de l'API Java.
Voici les différences importantes entre une applet et une application Java autonome :
- Une applet est une classe Java qui étend
java.applet.Applet. - La méthode
main()n'est pas invoquée sur une applet, et une classe applet ne définit pasmain(). - Les applets sont conçues pour être intégrées dans une page HTML.
- Quand un utilisateur affiche une page HTML contenant une applet, le code est téléchargé sur sa machine.
- Une JVM est nécessaire pour visualiser une applet (plug-in navigateur ou environnement d'exécution séparé).
- La JVM crée une instance de la classe applet et invoque diverses méthodes durant son cycle de vie.
- Les applets ont des règles de sécurité strictes imposées par le navigateur (sécurité de type bac à sable).
- Les autres classes nécessaires peuvent être téléchargées dans une seule archive Java (JAR).
Cycle de vie d'une applet
Quatre méthodes de la classe Applet fournissent le cadre pour construire toute applet sérieuse :
init() : Initialisation de l'applet, appelée après le traitement des balises
<param>.start() : Appelée automatiquement après
init(), et à chaque retour de l'utilisateur sur la page.stop() : Appelée quand l'utilisateur quitte la page. Peut être appelée plusieurs fois.
destroy() : Appelée seulement à l'arrêt normal du navigateur. Libérez les ressources ici.
paint(Graphics g) : Appelée après
start()et à chaque rafraîchissement nécessaire. Héritée dejava.awt.
Applet « Hello, World »
import java.applet.*;
import java.awt.*;
public class HelloWorldApplet extends Applet {
public void paint(Graphics g) {
g.drawString("Hello World", 25, 50);
}
}
Les imports nécessaires : java.applet.Applet et java.awt.Graphics.
La classe Applet
Toute applet étend java.applet.Applet. La classe de base fournit des méthodes pour :
- Obtenir les paramètres de l'applet
- Obtenir l'emplacement réseau du fichier HTML contenant l'applet
- Obtenir l'emplacement du répertoire de la classe applet
- Afficher un message dans la barre de statut du navigateur
- Charger une image ou un clip audio
- Jouer un clip audio
- Redimensionner l'applet
Le navigateur peut aussi : demander des infos sur l'auteur/version/copyright, initialiser, détruire, démarrer ou arrêter l'applet.
Invoquer une applet
On intègre une applet via la balise <applet> dans un fichier HTML :
<html> <title>L'applet Hello, World</title> <hr> <applet code="HelloWorldApplet.class" width="320" height="120"> Si votre navigateur supportait Java, "Hello, World" apparaîtrait ici. </applet> <hr> </html>
L'attribut code est obligatoire (classe à exécuter). width et height définissent la taille initiale. La balise doit être fermée par </applet>.
Pour passer des paramètres, ajoutez des balises <param> entre <applet> et </applet>.
Si l'applet réside dans un package, précisez-le dans code : monpackage.souspackage.MonApplet.class.
Récupérer les paramètres de l'applet
Exemple avec CheckerApplet qui affiche un damier. La couleur et la taille des cases sont des paramètres.
import java.applet.*;
import java.awt.*;
public class CheckerApplet extends Applet {
int squareSize = 50;
public void init() {
String squareSizeParam = getParameter("squareSize");
parseSquareSize(squareSizeParam);
String colorParam = getParameter("color");
Color fg = parseColor(colorParam);
setBackground(Color.black);
setForeground(fg);
}
private void parseSquareSize(String param) {
if (param == null) return;
try { squareSize = Integer.parseInt(param); }
catch (Exception e) { /* garde la valeur par défaut */ }
}
private Color parseColor(String param) { /* implémentation */ }
public void paint(Graphics g) { /* dessin du damier */ }
}
Spécifier les paramètres dans le HTML
<html> <title>Applet Damier</title> <hr> <applet code="CheckerApplet.class" width="480" height="320"> <param name="color" value="blue"> <param name="squaresize" value="30"> </applet> <hr> </html>
Note : Les noms de paramètres ne sont pas sensibles à la casse.
Conversion d'application en applet
Étapes pour convertir une application graphique Java (AWT) en applet :
- Créer une page HTML avec la balise appropriée.
- Fournir une sous-classe publique de
JApplet. - Supprimer la méthode
mainet ne pas construire de fenêtre (Frame). - Déplacer le code d'initialisation du constructeur vers
init(). - Supprimer
setSize()(la taille vient du HTML). - Supprimer
setDefaultCloseOperation()(l'applet se termine avec le navigateur). - Supprimer
setTitle()(pas de barre de titre). - Ne pas appeler
setVisible(true)(affichage automatique).
Gestion des événements
Les applets héritent des méthodes de gestion d'événements de Container. Pour réagir à un événement, surchargez la méthode appropriée.
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.applet.Applet;
import java.awt.Graphics;
public class ExampleEventHandling extends Applet implements MouseListener {
StringBuffer strBuffer;
public void init() {
addMouseListener(this);
strBuffer = new StringBuffer();
addItem("initialisation de l'applet ");
}
public void start() { addItem("démarrage de l'applet "); }
public void stop() { addItem("arrêt de l'applet "); }
public void destroy() { addItem("déchargement de l'applet"); }
void addItem(String word) {
System.out.println(word);
strBuffer.append(word);
repaint();
}
public void paint(Graphics g) {
g.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
g.drawString(strBuffer.toString(), 10, 20);
}
public void mouseClicked(MouseEvent event) { addItem("clic souris ! "); }
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
}
Affichage d'images
Utilisez drawImage() de java.awt.Graphics pour afficher GIF, JPEG, BMP, etc.
import java.applet.*;
import java.awt.*;
import java.net.*;
public class ImageDemo extends Applet {
private Image image;
private AppletContext context;
public void init() {
context = this.getAppletContext();
String imageURL = this.getParameter("image");
if (imageURL == null) imageURL = "java.jpg";
try {
URL url = new URL(this.getDocumentBase(), imageURL);
image = context.getImage(url);
} catch (MalformedURLException e) {
e.printStackTrace();
context.showStatus("Impossible de charger l'image !");
}
}
public void paint(Graphics g) {
context.showStatus("Affichage de l'image");
g.drawImage(image, 0, 0, 200, 84, null);
g.drawString("www.exemple.com", 35, 100);
}
}
Lecture audio
L'interface AudioClip (package java.applet) offre trois méthodes :
- play() : Joue une fois depuis le début.
- loop() : Joue en boucle continue.
- stop() : Arrête la lecture.
Obtenez un AudioClip via getAudioClip() de la classe Applet.
import java.applet.*;
import java.awt.*;
import java.net.*;
public class AudioDemo extends Applet {
private AudioClip clip;
private AppletContext context;
public void init() {
context = this.getAppletContext();
String audioURL = this.getParameter("audio");
if (audioURL == null) audioURL = "default.au";
try {
URL url = new URL(this.getDocumentBase(), audioURL);
clip = context.getAudioClip(url);
} catch (MalformedURLException e) {
e.printStackTrace();
context.showStatus("Impossible de charger le fichier audio !");
}
}
public void start() { if (clip != null) clip.loop(); }
public void stop() { if (clip != null) clip.stop(); }
}
Appel HTML (applet invisible, width=0 height=0) :
<html> <title>Applet Audio</title> <hr> <applet code="AudioDemo.class" width="0" height="0"> <param name="audio" value="test.wav"> </applet> <hr> </html>
Java
- Maîtriser les opérateurs Java : Types, syntaxe et exemples pratiques
- Commentaires Java : Types, utilisation et bonnes pratiques
- Maîtriser la boucle for améliorée en Java : Syntaxe, exemples et bonnes pratiques
- Maîtriser les chaînes de caractères en Java : Création, méthodes et bonnes pratiques
- Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
- Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
- Maîtriser le try-with-resources Java : gestion automatique des ressources expliquée
- Annotations Java expliquées : types, placement et exemples pratiques
- Assertions Java : guide pratique pour détecter les bugs et assurer la fiabilité du code