Voici deux exemples (un programme console, et une applet) permettant d'avoir un aperçu de ce à quoi peut ressembler un programme Java. La section suivante présentera les primitives du langage Java, c'est-à-dire les briques élémentaires pouvant être utilisées dans une classe...
Premier programme avec Java
La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes :
/** Votre premier programme Java */
class FirstApp {
public static void main (String[] args){
System.out.println("Hello World");
}
}
Étant donné que l'on a donné le nom de FirstApp à notre classe, il est essentiel de sauver ce fichier sous le nom FirstApp.java (un autre nom provoquera une erreur lors de la compilation). A l'aide de la JDK (ou d'un environnement de développement intégré qu'il l'utilise), compilez le programme en vous plaçant. En ouvrant une invite de commande (un terminal) et en utilisant la commande suivante :
javac FirstApp.java
Si tout se déroule normalement, le compilateur devrait créer un fichier nommé
FirstApp.class. dans le cas contraire, vous avez soit une erreur dans votre programme (vérifiez la syntaxe) ou bien vous avez mal installé la JDK...
En supposant que la JDK ait été installée correctement et que la syntaxe de votre programme est bonne, vous pouvez désormais exécuter votre programme grâce à la machine virtuelle Java, en tapant la commande suivante :
java FirstApp
Il ne faut pas spécifier l'extension (.class) au risque d'obtenir une erreur !
Pour passer des arguments lors de l'exécution, il suffit de préciser ces arguments après le nom du fichier :
java NomFichier arg1 arg2 ...
Si il y a plusieurs arguments, ceux-ci doivent être séparés par un espace.
Le programme devrait en toute logique afficher le message "Hello World" à l'écran. Cela est bien peu, mais constitue un bon début pour analyser le programme. Voyons ligne par ligne comment est constitué cette application :
/** Votre premier programme Java */
C'est une ligne de commentaires permettant d'ajouter des remarques sur l'application, elle peut également être utilisée pour générer automatiquement de la documentation.
class FirstApp {
définit la classe principale de votre application grâce au mot clé
class. Le nom que vous donnez à cette classe représente le nom de votre programme, cela signifie qu'une application Java possède au moins une classe, et que celle-ci possède un nom correspondant au nom du programme. Puisque Java est sensible à la casse, le nom que vous donnez au programme doit être rigoureusement le même que celui que vous donnez au fichier portant l'extension
.java
La seconde ligne se termine par une accolade ouvrante "{", correspondant au début d'un
bloc, c'est-à-dire un ensemble de lignes de codes correspondant à la classe et délimité par deux accolades.
public static void main (String[] args){
définit la méthode principale de l'application, c'est-à-dire une procédure propre à la classe est exécutée lors de son appel. Le mot clé
void précédant la méthode
main() indique le type de retour de la fonction, c'est-à-dire le type de valeur que la méthode doit retourner. Dans le cas présent, il s'agit du type
void (signifiant
rien en anglais), donc la méthode ne doit retourner aucune valeur. Les parenthèses suivant le mot
main permettent de définir les paramètres de la méthode, c'est-à-dire les données qu'elle reçoit en entrée. Dans cette application (et dans toutes vos futures applications) le paramètre est
String args[], ce qui correspond à un ensemble (tableau) de chaînes de caractères. Cela correspond en réalité aux paramètres que vous placez après la ligne
javac FirstApp.class, si, par exemple, vous voulez pouvoir préciser des options lors de l'exécution de votre application. Vous rencontrerez parfois l'écriture
String[] args, cette écriture est juste elle aussi, voire plus logique... (cela sera expliqué plus loin).
Enfin les mots clés
public et
static définissent les caractéristiques de la méthode
main(). Le mot clé
public définit les classes pouvant exécuter la méthode
main(),
public signifie donc que toutes les classes peuvent y avoir accès. Or, l'interpréteur Java étant "considéré comme une classe", il est essentiel qu'il puisse y avoir accès afin de lancer l'application... Comme dans le cas de la classe
FirstApp, la ligne déclarant la méthode
main() se termine par une accolade ouvrante indiquant un bloc correspondant au corps de la méthode
main()
System.out.println("Hello World");
correspond au corps de la méthode
main(). Il s'agit de l'appel de la méthode
println(), possédant un paramètre (une chaîne de caractères). Cette méthode permet d'afficher sur la sortie standard (ici, l'écran) la chaîne de caractère qui lui est passée en paramètre, en lui ajoutant automatiquement un caractère de retour à la ligne (il existe aussi une méthode appelée
print(), n'ajoutant pas de retour à la ligne). Cette méthode est précédée de
System.out., cela signifie qu'elle fait partie de l'objet
out, faisant lui-même partie de la classe
System. En réalité toutes les méthodes dépendent d'une classe, chacune faisant parties d'une hiérarchie structurée de classes. Ainsi, la classe
System fait partie du package
lang, qui fait lui même partie du package
java. Toutefois, il n'est pas nécessaire de préciser
java.lang.System.out, car le package
java.lang est importé par défaut. De cette façon, la ligne "
System.out.println("Hello World");" est équivalente à "
java.lang.System.out.println("Hello World");".
*Une application Java est une classe munie d'une méthode public static void main(String[] args)
- Le nom du fichier Java correspond au nom de la classe (avec la même casse, c'est-à-dire orthographié de la même façon aux majuscules près)
Première applet avec Java
Les applets sont différentes des applications dans la mesure où il s'agit de petites applications graphiques destinées à s'exécuter dans un navigateur internet. D'autre part, les applets ont un champ d'action limité pour des raisons de sécurité puisqu'elles s'exécutent dans un environnement distant. Elles ne peuvent donc pas accéder à toutes les ressources de l'environnement distant.
Voici donc le code d'une applet toute simple :
import java.awt.Label;
public class FirstApplet extends java.applet.Applet {
public void init (){
add(new Label("Hello World"));
}
}
Le programme devrait en toute logique afficher le message "Hello World" à l'écran sur le navigateur, à condition de créer le fichier HTML approprié "hébergeant" l'applet :
<HTML>
<BODY>
<APPLET code="FirstApplet.class" width="100" height="30" align="left">
Message s'affichant si l'applet n'est pas supportée par le navigateur
</APPLET>
</BODY>
</HTML>
Pour visualiser l'applet, il vous suffit donc d'enregistrer ce fichier avec l'extension
.html ou
.htm, comme par exemple
FirstApplet.html.
Pour l'exécuter vous pouvez :
- soit utiliser appletviewer, en vous plaçant dans le répertoire contenant l'applet et le fichier HTML, et taper la commande :
appletviewer FirstApplet.html
- soit utiliser votre navigateur en ouvrant le fichier HTML
Voyons ligne par ligne comment est constitué cette applet :
import java.awt.Label;
indique au compilateur qu'il a besoin de la classe située dans le package
java.awt pour pouvoir être compilé correctement. Les classes AWT, représente une bibliothèque de méthodes graphiques permettant d'afficher des éléments graphiques sur le navigateur.
public class FirstApplet extends java.applet.Applet {
définit la classe principale de votre applet grâce au mot clé
class. Le nom que vous donnez à cette classe représente le nom de votre programme, cela signifie qu'une applet Java possède au moins une classe, et que celle-ci possède un nom correspondant au nom du programme. Le nom que vous donnez au programme doit,comme pour les applications, être rigoureusement le même que celui que vous donnez au fichier portant l'extension
.java
Le nom de la classe est précédée du mot clé
public, permettant l'utilisation de cette classe par le navigateur. Elle est aussi suivie de la mention
extends java.applet.Applet, indiquant que la classe que l'on définit hérite d'une classe existante appelée
Applet. Cette classe définit une méthode
init() vide, ce qui signifie que l'applet possède par défaut une méthode
init(), qui peut être redéfinie.
La seconde ligne se termine par une accolade ouvrante "{", correspondant au début d'un
bloc, c'est-à-dire un ensemble de lignes de codes correspondant à la classe et délimité par deux accolades.
public void init (){
redéfinit la méthode
init() de l'applet. Celle-ci ne possède pas d'argument et ne retourne aucune valeur (son type de retour est
void). Par contre cette méthode doit obligatoirement être définie en tant que
public pour pouvoir être exécutée correctement.
add(new Label("Hello World");
correspond au corps de la méthode
init(). Il s'agit de l'appel de la méthode
add(), possédant un paramètre (objet de la classe
java.awt.Label et permettant d'afficher la chaîne de caractère passée en paramètre). La méthode
add() fait en fait partie de la classe
java.awt.Panel, qui est une classe parente de
java.applet.Applet. De cette façon,
java.applet.Applet possède l'ensemble des méthodes qui sont définies en son sein, ainsi que l'ensemble des méthodes définies dans les classes dont elle hérite...