Un programme Java

WB01624_.gif (281 octets) RETOUR

Les fichiers gérés

Recommandation : Un fichier par classe

Nom du fichier contenant le code source : Nom de la classe suivi de l'extension "java" (Attention aux minuscules/majuscules)

Compilation : Utilisation du compilateur javac (exemple : javac Vehicule.java) -> un fichier classe portant le même nom que le fichier source, mais l'extension "class" (exemple : Vehicule.class). Ce fichier contient le byte-code généré.

Les applications

Application JAVA : Programme JAVA exécuté au moyen d'un Runtime JAVA (généralement le programme java du J.D.K.) (exemple : java Vehicule)

Caractéristiques

  • Définition d'une classe n'héritant d'aucune autre classe, mais possédant une fonction de définition (prototype) :

public static void main(String [] arg) ;

Exemple : Affichage à l'écran des 10 premiers nombres entiers supérieurs à 0

public class MonApplication {

  public static void main(String [] arg) {
    for ( int i = 0 ; i < 10 ; i++ )
      System.out.println(i) ;
  }
}
  • Absence d'interface utilisateur:

-> Exécution en mode texte

-> Utilisation obligatoire de l'AWT de l'API JAVA si on en veut une

Les applettes

Applette : Programme JAVA exécuté au moyen d'un Browser (Navigateur) WEB à l'intérieur d'une fenêtre de ce Browser

Caractéristiques

  • Définition d'une classe dérivant de la classe de base java.applet.Applet

  • Surcharge des méthodes de cette classe pour l'implantation des méthodes propres de l'applette

  • Exploitation de l'environnement d'exécution de l'applette dans le Browser :

 Exploitation d'une zone de la fenêtre du Browser comme zone d'affichage

 Gestion des sons et des images

Méthodes surchargables

  • public void init()

Initialisation effectuée au moment du chargement de l'applette (Exécution unique)

  • public void start()

Lancement de l'applette. Appel de start chaque fois que l'applette devient visible (scrolling, activation d'un lien) sur la fenêtre du Browser

  • public void stop()

Arret de l'applette. Appel de stop chaque fois que l'applette devient invisible (scrolling, activation d'un lien) sur la fenêtre du Browser

  • public void destroy()

Destruction définitive de l'applette

  • public void paint(Graphics g)

Réalisation du dessin de la zone de fenêtre associée à l'applette

Exemple : Affichage à l'écran des 10 premiers nombres entiers supérieurs à 0 (surcharge de la seule fonction paint pour l'affichage)

import java.applet.Applet ;
import java.awt.Graphics ;

public class MonApplette extends Applet {

  public void paint(Graphics g) {
    for ( int i = 0 ; i < 10 ; i++ ) {
      String s = new Integer(i).toString();
      g.drawString(s,10,20+i*15); }
  }
}

Remarques :

g.drawString(String s, int x, int y)

Dessin de la chaîne de caractères s en position x,y à l'intérieur de la zone d'affichage de l'applette

new Integer(i).toString()

Génération de la chaîne de caractères s représentant l'entier i. Utilisation d'une instance de la classe Integer (Objet entier) et appel de la fonction toString() sur cette instance pour générer la chaîne de caractères correspondant.

Intégration dans une page WEB

Nécessité d'intégrer les applettes dans des pages WEB pour pouvoir les exécuter.

Utilisation du TAG HTML <APPLET>

Exemple :

<applet
code=MonApplette.class
width=40
height=150>
</applet>

Insertion dans une page WEB d'une applette sauvegardée dans le fichier MonApplette.class. largeur 40 pixels et hauteur 250 pixels pour la zone d'affichage. Cette zone est placée dans la page web à l'endroit où la tag applet apparait.

Précaution

Pour ne pas bloquer le poste client, ne pas utiliser toute la puissance CPU de la machine cliente dans une applette (animation, boucle infinie, ...)

Exemple :

void paint(Graphics g) {
  int x = 0 ;
  while (true) {
    sleep(10) ;
    g.drawString("Hello",x,15) ;
    x++ ; }
  }

-> Placement de la partie calcul de l'applette dans un Thread pour une exécution en tâche de fond

-> Le Thread redonne la main au système d'exploitation de manière régulière pour que celui-ci donne du CPU aux autres composants de l'application ou aux autres applications

Exemple :

Cette applette s'instancie elle-même (dans la fonction start) en tant que Thread et se lance elle-même (appel à la fonction run par un start dans la fonction start) avec une temporisation de 10 ms entre les réaffichages. Cette applette possède le comportement des applettes et des Threads.

import java.applet.Applet ;
import java.awt.Graphics ;

public class Hello extends Applet
                   implements Runnable {
  Thread t = null ;
  private static int xmax = 200 ;
  private int x = 0 ;
  private int xinc = 1 ;

  public void paint(Graphics g) {
    g.drawString("Hello",x,15) ;
    if ( x == xmax ) 
      xinc = -1 ;
    if ( x == 0 ) 
      xinc = 1 ;
    x++ ; 
  }

  public void start() {
    if ( t == null ) {
      t = new Thread(this) ;
      t.start() ; }
  }

  public void run() {
    while ( true ) {
     try {
       repaint() ;
       Thread.sleep(10) ; }
     catch (InterruptedException e) { } ;
    }
  }
}