Le code des applets est chargé depuis une machine (le serveur) et exécutées sur une autre machine (le client). Une applet est appelée à partir d’une page HTML. L’exécution du « code-byte » de l’applet est réalisée par la machine virtuelle du navigateur qui a chargé la page HTML. Les navigateurs récents possèdent en fait un compilateur qui génère à partir du « code-byte » un exécutable en code natif de la machine hôte. Dans ces conditions la vitesse d’exécution est celle d’un programme compilé.
Afin d’assurer la sécurité de l’utilisateur les possibilités des applets sont limitées :
une applet ne peut pas écrire de fichiers sur la machine du client.
une applet ne peut communiquer qu’avec la machine serveur.
une applet ne peut pas lancer de programmes sur le client.
une applet ne peut pas charger de programmes écrits en langage natif sur le client.
Compte tenu de ces restrictions, JAVA est langage sûr : en principe il ne permet pas l’introduction de virus ni d'investigations indiscrètes sur le contenu de la machine client.
Une applet est une classe de JAVA déclarée public qui étend la classe java.applet.Applet.
public nom_applet extends java.applet.Applet
Comme en général on utilise des méthodes de la classe java.applet, il est plus simple d'importer le package correspondant. L'en-tête prend alors la forme simplifiée suivante :
import java.applet.*;
public 
    nom_applet extends Applet
Pour faire quelque chose de visible par l'utilisateur, une applet doit comporter au minimum la méthode paint( ). Dans cet exemple, nous allons uniquement afficher un texte.
import java.applet.*;
import 
    java.awt.*;
public message0 extends Applet{
public void paint(Graphics 
    g){
    g.drawString("Premier exemple",20,30);}}
Après compilation de ce fichier source (de nom message0.java), on obtient un fichier exécutable ayant comme nom message0.class. Il faut incorporer ce fichier à une page HTML avec la balise <APPLET>. Celle-ci doit au minimum contenir le nom de la classe et les dimensions de la fenêtre dans laquelle l'applet va s'exécuter.
<html>
<head><title>message0</title></head>
<body>
<applet    code=message0.class    width=200    height=50 
></applet>
</body>
</html>
L'applet message0.
    Les navigateurs définissent une couleur de fond, une couleur d'écriture et 
une fonte par défaut. Ainsi dans IE la couleur du fond est un gris pâle 
alors que dans Netscape 4.x c'est le blanc.
Pour obtenir des résultats reproductibles, il faut toujours 
commencer par définir ces trois paramètres. On va déclarer une variable de type 
"Font", 
une variable taille et entrer le message à afficher dans une chaîne. Lors du 
chargement d'une applet la méthode init ( ) est toujours appelée. Nous 
allons la surcharger en initialisant ces variables. mafonte étant un 
objet Font doit être initialisée par une instruction new;  TimesRoman est 
le nom d'une fonte standard de JAVA, font.BOLD est une constante de JAVA (en fait déclarée 
:  public final static int BOLD) ; taille définit la taille (en points) 
de la fonte utilisée.
import java.applet.*;
import 
    java.awt.*;
public message1 extends Applet
{   Font 
    mafonte;
    String s = "Second exemple";
    int 
    taille;
public void init()
{   setBackground (Color.lightGray);
    taille 
    = 16;
          mafonte = new Font("TimesRoman",font.BOLD,taille);}
public void paint(Graphics g)
{   g.setFont(mafonte);
    g.setColor(Color.red);
    g.drawString(s,20,30);}}
L'applet message1.
Si l'on désire modifier le message à afficher dans la page HTML, il faut modifier le fichier source puis le recompiler et placer le nouveau fichier message1.class sur le serveur. Il est plus simple de modifier le code de notre programme pour qu'il puisse recevoir des informations depuis la page HTML de chargement. Les données sont transmises au moyen des balises <param >. Dans ces balises, on trouve le nom du paramètre et sa valeur sous la forme d'une chaîne de caractères.
<html>
<head><title>message0</title></head>
<body>
<applet    code 
= message0.class    width = 200    height 
= 50 
>
<param name = "Mes" 
value="Message">
<param name = "Tail" value="14">
</applet>
</body>
</html>
    Dans le programme JAVA, avec la méthode getParameter(nom_du_parametre) 
on récupère la chaîne de caractères contenue dans "value".
Mes étant 
une chaîne, il n'y a pas de conversion de type à réaliser pour la valeur qui 
est récupérée. Par contre pour la 
taille de la fonte, il faut convertir une chaîne de caractères en entier. Cette 
opération est réalisée par la méthode parseInt de la classe Integer (Classe 
de java.lang).  Les conversions de type seront examinées au chapitre 6.
import java.applet.*;
import 
    java.awt.*;
public message2 extends Applet
{   Font 
    mafonte;
    String s ;
    int 
    taille;
public void init()
{   setBackground (Color.lightGray);
    s 
    = getParameter("mes");             //noms 
    insensibles à la casse
    taille 
    = Integer.parseInt(getParameter("Tail");
    mafonte = new Font("TimesRoman",font.BOLD,taille);}
public void paint(Graphics g)
{   g.setFont(mafonte);
    g.setColor(Color.red);
    g.drawString(s,20,30);}}
L'applet message2 avec "Mes" = "Nouveau message" et "Tail" = "16"
L'applet message2 avec "Mes" = "Message nouveau" et "Tail" = "20"
L'applet se comporte, pour son positionnement par rapport au texte qui 
l'entoure, comme une image :
 Le paramètre align 
 permet de préciser la position de la fenêtre de l'applet dans 
la page.
 
De même les paramètres hspace et vspace définissent un cadre vide autour de l'applet.
 
La balise <applet> des deux exemples ci-dessus est la suivante :
<applet 
code="message2.class" width="200" height="50" 
hspace="20" align="middle"></applet>
Toute applet hérite de l'objet Applet un certain nombre de méthodes qui sont appelées par le navigateur de manière bien précise lors de son exécution .
init ( ) : cette méthode est exécutée juste après le chargement du code ou un rechargement par le navigateur.
start ( ) cette méthode est invoquée immédiatement après la fin de l'exécution de la méthode init. Cette méthode est aussi invoquée quand la page HTML contenant l'applet redevient visible pour l'utilisateur.
stop ( ) cette méthode est invoquée quand la page HTML disparaît.
destroy ( ) cette méthode est invoquée juste avant la disparition de l'applet afin de pouvoir éventuellement libérer des ressources.
    L'applet hérite également de la classe java.awt.Component 
et de la méthode paint (Graphics g) qui permet de dessiner dans 
le composant graphique g attribué à l'applet. Cette méthode est exécutée à la 
fin  de l'exécution de la méthode start.
     Si 
l'applet était masquée (totalement ou partiellement) par une autre fenêtre, 
elle se redessine lorsqu'elle redevient totalement visible. Ceci est effectué 
par la méthode repaint ( ). C'est une méthode qui commence par invoquer 
la méthode update (Graphics g ) puis la méthode paint 
(Graphics g ). update est une méthode qui peint le composant 
graphique avec la couleur du fond afin de  réaliser son effacement.
 La méthode 
repaint ( )  peut également être invoquée par d'autres méthodes qui vont 
répondre aux actions de l'utilisateur (souris, clavier ...).

    Cette classe possède un certain nombre de méthodes, 
appelées par le navigateur, qui ne font rien et qui doivent être surchargées 
avant de pouvoir être utilisées : ce sont les méthodes init ( ) start 
( ), stop ( )  et destroy ( ).
Cette classe possède 
aussi un certain nombres de méthodes qui utilisent des URL (Uniform 
Resource Locator) permettant de localiser le 
serveur de l'applet, des fichiers 
images et des fichiers sons.
 getParameter( ) : Cette méthode 
a déjà été étudiée plus avant (§ 5.2.1).
getAppletInfo( 
) : Cette méthode retourne une chaîne de caractères. Elle doit être surchargée 
comme dans l'exemple sinon elle retourne "null".
getParameterInfo( 
) : Cette méthode retourne un tableau de chaînes de caractères. Elle doit 
être surchargée comme dans l'exemple sinon elle retourne "null".
Pour 
chaque paramètre, on peut construire trois chaînes avec par exemple le nom, 
le type et un commentaire.
 getCodeBase( ) : Cette méthode retourne 
un URL qui pointe sur le répertoire du serveur qui contient l'applet. Si on 
désire examiner sa valeur, il faut convertir l'URL en chaîne de caractères avec 
la méthode getCodeBase( ).toString( ).
getDocumentBase( ) : Cette 
méthode retourne un URL qui pointe sur le répertoire du serveur qui contient 
la page HTML de chargement de l'applet. Si on désire examiner sa valeur, il 
faut convertir l'URL en chaîne de caractères avec  getDocumentBase( 
).toString( ).
getAudioClip( ) : Cette méthode retourne un objet AudioClip 
qui est en fait un fichier son au format "AU". Comme arguments, il 
faut indiquer le chemin absolu de fichier (URL) et son nom. Quand le fichier 
est chargé, il est possible de l'exécuter avec la méthode play( ).
getImage( 
) : Cette méthode retourne un objet Image qui est en fait un fichier 
au format "GIF" ou "JPG". Comme arguments, il faut indiquer 
le chemin absolu du fichier (URL) et son nom. Quand le fichier correspondant 
est chargé, il 
est possible de visualiser l'image avec la méthode drawImage( ). 
showStatus( 
) : Cette méthode affiche sa chaîne argument dans la barre d'état du navigateur.
L'applet ci-dessous utilise un certain nombre de ces méthodes. En voici le code :
import java.applet.*;
import java.awt.*;
public 
    class applet1 extends Applet
{   Font mafonte;                //choix 
    de la fonte
    Image 
    monimage;            //objet 
    image
    String 
    sima="sign141.gif"; //le nom d'un fichier 
    image
    AudioClip bip;             //objet 
    sonore
    String 
    base;
    String 
    [][] paramInfo={{"par1","1-10","valeur 1"},
                 {"par2","1-5","valeur 
    2"}};//declaration et 
    assignation
    String 
    st[][];
   public String getAppletInfo()
   {  return 
    "Auteur: J.J. Rousseau 2001";}
   public 
    String[][] getParameterInfo()
   {  return paramInfo;}
   public 
    void init()
   {  setBackground (Color.lightGray); 
      //couleur du fond
      mafonte 
    = new Font("Helvetica",0,12);
      st 
    = new String[3][2];
      monimage 
    = getImage(getDocumentBase(),sima);
      base=getCodeBase().toString();    //conversion 
    de l'URL en chaîne
      bip=getAudioClip(getCodeBase(),"ding.au");}  //nom 
    du fichier son
  public 
    void paint(Graphics g)
   {  g.setFont(mafonte);
      g.drawString(getAppletInfo(),10,15);
      st=getParameterInfo();
      g.drawString(base,10,30); 
        //adresse 
    du fichier sur le serveur
      g.drawImage(image,20,50,this);/*affichage 
    de l'image "sign141.gif"
                        origine 
    en x=20, y=50*/
      g.drawString(st[0][0],150,60);//affiche 
    "par1"
      g.drawString(st[0][1],150,80);//affiche 
    "1-10"
      g.drawString(st[0][2],150,100);//affiche 
    "valeur 1"
      bip.play(); 
        /*execute 
    le fichier "ding.au". 
                il faut disposer d'une carte son 
    pour l'entendre.*/
      showStatus("Dans 
    la barre d'état");} 
     //examiner la barre d'état 
    du navigateur.
}
Applet correspondant au code ci-dessus.
Placez le pointeur de la 
souris dans le cadre de l'applet ,cliquez et regardez la barre d'état.