Page d'accueilFindIt !ContactAvant proposLes notions de base

Le langage JavaTM

Table des matièresHierarchie des classes

CJava

 Démarrer en Java

Récupérer le JDK
Installation
Description de l'environnement et des commandes
Votre première applet : le classique "Hello world !"

 

Récupérer le JDK (Java Development Kit)

Introduction

Bonne nouvelle : jusqu'à nouvel ordre, vous pouvez développer en Java sans débourser un Kopeck (ou presque : il vous faut quand même un ordinateur si possible équipé d'un modem...).

Java est un langage de programmation développé par Sun Microsystems (puis par Oracle qui l'a racheté en 2009). Après une vingtaine d'années de vie (les premières versions datent de 1995), c'est un des langages les plus utilisés à travers le monde.

En voici les principaux avantages :

Les deux derniers points ont contribué à utiliser d'abord ce langage pour développer des applets, qui sont des applications qui peuvent être téléchargées via Internet et exécutées dans un navigateur sur n'importe quelle plateforme. Ainsi, une page statique HTML peut s'enrichir de programmes qui lui donneront un comportement dynamique. Cet avantage permet de visualiser directement dans ce manuel le résultat des programmes d'exemples.

Où trouver le JDK

Venons-en aux faits. Le JDK permet de créer vos programmes Java. Il est disponible gratuitement sur le site consacré à Java http:/java.sun.com/. Vous cherchez sur ce site un lien Products / Java SE, qui vous amène sur une page décrivant Java Standard Edition, une dénomination marketing représentant la version de base de Java.
Java et son JDK (Java Development Kit) ou SDK (Software Development Kit) existent sous les versions 1.0, 1.1, 1.2, 1.3, 1.4, 1.5 (ou 5.0), 6, 7 et 8 et la dénomination Java SE / J2SE regroupe les JDK de version >= 1.2. Vous pouvez télécharger le JDK le plus récent (au moins 50 Mo) à partir du lien Download de la page décrivant le Java SE, mais pour débuter en Java, vous pouvez aussi vous satisfaire d'une version antérieure du JDK.
Oracle met à disposition sur son site des versions du JDK pour Windows, Mac OS X (à partir de Lion / 10.7) Linux, Solaris. Les versions antérieures de Mac OS X intègre Java SE avec le JDK, et vous n'aurez donc rien à installer sous ce système. Pour Mac OS 9, seules les versions 1.0 et 1.1 de Java sont disponibles et se dénomment MRJ 1.5 et MRJ 2.2 respectivement. Pour les autres systèmes, voyez avec le site de leur éditeur.

Les deux premières parties de ce tutorial décrivent les fonctionnalités de la version 1.0 du JDK (avec deux chapitres sur les ajouts syntaxiques apportés par le JDK 1.1 et le JDK 1.5). Bien que cette version commence à dater, vous pourrez néanmoins :

Sur son site, Oracle fournit aussi des documentations en anglais accompagnant le JDK. Voici la liste des plus intéressantes, qui ont aidé à rédiger ce manuel :

Bon courage pour télécharger ces fichiers et à tout à l'heure... Voici une petite applet indiquant depuis combien de temps cette page est chargée : déjà Applet Time secondes !

!

Le kit de développement fourni par Sun / Oracle est très sommaire (un ensemble de commandes simples), il vous faudra en plus au moins un éditeur de texte (n'importe lequel, peu importe). De nombreux éditeurs de logiciels fournissent des environnements de développement complet (éditeur, debugger intégré,...), dont certains sont même gratuits !

Installation

Une fois que vous avez (au moins) téléchargé le JDK, vous pouvez vous mettre au travail.

Description de l'environnement et des commandes

Ce chapitre décrit les principales commandes (ou applications pour Mac OS 9) qui vous permettront de programmer en Java. Mais tout d'abord il faut comprendre comment marche un programme Java pour utiliser correctement ces commandes.

Principe de fonctionnement

Rapidement résumé, Java est langage qui doit être compilé et interprété. Compilé et interprété ? En fait dans une première phase, vous compilez un programme (un ou plusieurs fichiers source .java) en fichiers .class et le compilateur génère un fichier .class pour chacune des classes définies dans le(s) fichier(s) .java. L'ensemble des fichiers .class est ensuite interprété par la Machine Virtuelle Java (Java Virtual Machine) pour exécuter le programme. Voici une illustration de ce principe :

Cycle de développement d'une applet
Figure 1. Cycle de développement d'une applet

Il est possible de développer soit des applications isolées (standalone applications), fonctionnant avec l'interpréteur comme un programme habituel, soit des "applets" ; ce sont des programmes téléchargés sur Internet puis exécutés automatiquement quand ils sont intégrés à l'intérieur de pages HTML. Dans ce dernier cas, l'ensemble des fichiers .class du programme est utilisé avec un fichier HTML qui fait appel à une des classes (voir aussi la Description des principales commandes).
Bien que les principes de programmation soient très proches, ce manuel donne surtout des exemples d'applets car elles peuvent être ainsi intégrées dans le texte pour vous montrer le résultat d'un programme "en direct".

Pourquoi ne pas interpréter directement le programme Java ?

  1. Les fichiers .class contiennent du bytecode, une sorte de code machine Java (comparable au code machine d'un microprocesseur), qui sera exécuté beaucoup plus rapidement par l'interpréteur que si ce dernier devait travailler avec les fichiers sources .java.
  2. Seuls les fichiers .class sont nécessaires à l'exécution d'un programme Java. Comme ils contiennent du code machine, ils ne peuvent être lus par des tiers, protégeant ainsi le code source.
  3. Etant compilés, les fichiers .class sont de taille plus petite que le code source Java ; ceci est un argument important pour transférer les programmes sur Internet.
  4. Chaque fichier .class décrivant une classe d'objet, une même classe peut être utilisé par différents programmes, sans que cette classe ne soit dupliquée dans chacun des programmes.

Pourquoi ne pas compiler directement un exécutable ?

Sur ce point, la réponse est plus évidente. En effet, un exécutable contient du code qui n'est exécutable que sur la machine pour lequel il est destiné et le seul moyen de rendre un langage multi-plateforme sans avoir à recompiler le source (comme en C/C++), c'est d'utiliser un interpréteur.
L'autre avantage de l'interpréteur est qu'il peut être incorporé par exemple, à un navigateur ce qui lui permet d'exécuter des programmes Java à l'intérieur de pages HTML.

Limites du système :

A vue d'oeil, ce système a l'air d'être parfait : Vous écrivez des programmes, les compilez et le résultat de la compilation fonctionnera en l'état sur toutes les machines ! Forcément, il doit y avoir un os quelque part...
Le plus gros problème d'un programme Java est son manque de rapidité d'exécution : L'interpréteur prend forcément un certain temps pour interpréter le code des fichiers .class, ce qui rend vos programmes moins rapides que de vrais exécutables.
Mais Java est encore jeune : Sun Microsystems et d'autres éditeurs de logiciels tentent d'optimiser les Machines Virtuelles Java. L'un des axes d'optimisation est actuellement le développement de compilateurs JIT (Just In Time) ou juste à temps : Quand une classe est chargée, elle est traduite dans le code machine de la plateforme où elle est exécutée (traduction à la volée du micro-code Java vers par exemple, le code machine PowerPC ou Intel). Cette opération ralentit le départ de l'application, mais ensuite l'exécution du programme est beaucoup plus rapide !

C

Contrairement au C/C++, le compilateur Java ne génère pas de fichier exécutable. Il crée pour chacune des classes d'un fichier Java un fichier .class qui sera interprété par la Machine Virtuelle Java.


Description des principales commandes du JDK

L'utilisation des commandes varie forcément suivant l'environnement de développement :

Toutes les options de chacune de ces commandes peuvent être obtenues en exécutant la commande sans paramètre.

javac, le compilateur (icône Java Compiler ou javac sous Mac OS 9) :

javac permet de compiler un ou plusieurs fichiers Java passé en paramètres. Le compilateur génère pour chaque classe ClasseI définie dans le(s) fichier(s) Java compilé(s), un fichier ayant pour nom le nom de classe et l'extension .class (ClasseI.class).

En cas d'erreurs dans vos programmes, le compilateur javac vous donne généralement des informations assez précises sur le contexte de l'erreur. C'est pourquoi n'hésitez pas à compiler vos classes en cours de développement quand vous hésitez sur la bonne syntaxe à utiliser : javac vous donnera peut-être la solution !

Principales options à spécifier avant la liste des fichiers Java à compiler (boite de dialogue File | Properties sous Mac OS 9) :

La variable d'environnement CLASSPATH est utilisée comme équivalent de l'option -classpath.

Exemple : javac Cube.java

!

Si vous compilez certains programmes Java respectant la version 1.0 avec le compilateur d'une version ultérieure, vous pouvez avoir des warnings vous indiquant que certaines méthodes que vous utilisez ne sont pas recommandés (deprecated), mais ceci n'empêchera pas le programme de fonctionner correctement.

Note aux utilisateurs de systèmes dont les fichiers ne font pas la différence entre les minuscules et majuscules (Windows et Mac OS 9) : Vous devez créer et utiliser des fichiers utilisant les combinaisons majuscules/minuscules correctes ; par exemple, si vous créez une classe Cube3D, le nom de fichier doit être Cube3D.java et pas cube3d.java ou Cube3d.java.

 

java, l'interpréteur (Icône Java Runner ou JBindery sous Mac OS 9) :

Cette commande est utilisée pour exécuter des applications isolées. Dans ce cas, le fichier .class passé en paramètre doit définir une méthode main () qui sera le point d'entrée de l'application. Toutes les valeurs qui suivent le nom de la classe sont passées en paramètres à la méthode main ().

Principales options de la ligne de commande à spécifier avant le nom de la classe (vous retrouverez ces options dans la boite de dialogue de JBindery sous Mac OS 9) :

La variable d'environnement CLASSPATH est utilisée comme équivalent de l'option -classpath.

Exemple : java ClasseExec

appletviewer, l'interpréteur d'applets (Icône Applet Viewer ou Applet Runner sous Mac OS 9) :

cette commande est utilisée pour exécuter des applets. Dans ce cas, le fichier .html passé en argument doit définir au moins une balise (tag) APPLET respectant la syntaxe suivante :

<APPLET CODE=ClasseApplet WIDTH=largeur HEIGHT=hauteur CODEBASE="repertoire" ALT="Ca marche pas" NAME="NomApplet" ALIGN=alignement ARCHIVE="fichier.jar"> </APPLET>.

appletviewer crée pour chaque balise APPLET, une fenêtre de taille (WIDTH,HEIGHT), où sera exécutée l'applet correspondant à la classe de CODE.
Entre <APPLET ...> et </APPLET> peuvent figurer la description d'un certain nombre de paramètres à passer à l'applet, sous la forme <PARAM NAME="appletAttributei" VALUE="valuei">. Tout le reste du fichier HTML est ignoré.
Vous pouvez aussi exécuter les applets d'un fichier HTML avec un navigateur intégrant un interpréteur Java. Ceci vous est même vivement conseillé afin de pouvoir vérifier comment s'intègre vos applets au milieu du texte dans lequel elles sont utilisées.

!

Tout le code HTML compris entre les balises <APPLET ...> et </APPLET> (sauf bien sûr les balises <PARAM ...>) est affichée par les navigateurs qui ne sont pas dotés de Java ou sur lesquels Java n'est pas autorisé. Ceci est très pratique pour offrir une alternative aux applets sur un site Internet.
Si vous consultez les source des fichiers de ce site, vous verrez que justement chaque applet du site a pour alternative l'affichage d'une image qui est la capture d'écran de l'applet.

 

De nombreux exemples d'Applet avec leur programme Java, sont fournis avec le JDK. Essayez-les pour vous rendre compte des possibilités du langage.

Si une applet définit la méthode main (), elle peut être aussi utilisée comme une application avec l'interpréteur Java.

Exemple : appletviewer index.html

 

!

Sur la plupart des Machines Virtuelles Java, tant que vous ne quittez pas l'interpréteur (java, appletviewer ou navigateur), les classes déjà chargées restent en mémoire, et NE sont PAS rechargées quand vous relancez un même programme Java.
Ceci implique qu'en phase de mise au point de vos programmes, il faut quitter l'interpréteur ou le navigateur à chaque fois que vous changez une des classes de votre programme, sinon vous aurez l'impression que vos modifications n'ont pas été prises en compte !...

Votre première applet : le classique "Hello world !"

Comme vous devez l'avoir compris maintenant, il faut écrire écrire au moins deux fichiers différents pour pouvoir créer et exécuter une applet : Un fichier source Java et un fichier .html.

Voici le programme source Java. Donnez lui le nom HelloWorld.java (le nom de la classe public du fichier) :

import java.applet.Applet;
import java.awt.Graphics;
 
public class HelloWorld extends Applet
{
  public void paint (Graphics g)
  {
    g.drawString("Hello world !", 50, 20);
  }
 
  public static void main (String [ ] args)
  {
    System.out.println ("Hello World !");
  }
}

Les instructions utilisées dans ce programme seront décrites ultérieurement.
Vous pouvez le compiler de la manière suivante : javac HelloWorld.java
Voici le source HMTL. Donnez lui le nom que vous voulez (MonPremierProgrammeJava.html si ça vous chante !) :

<HTML>
<HEAD>
<TITLE> Un programme simple </TITLE>
</HEAD>
<BODY>
 
voici le résultat que vous devriez voir apparaître :
<APPLET CODE="HelloWorld.class" WIDTH=150 HEIGHT=25>
</APPLET>
</BODY>
</HTML>

Vous pouvez exécuter l'applet de la manière suivante : appletviewer MonPremierProgrammeEnJava.html
voici le résultat que vous devriez voir apparaître : Applet HelloWorld

Comme HelloWorld définit aussi une méthode main (), qui est le point d'entrée d'une application Java, il est donc possible de l'exécuter directement grâce à la commande : java HelloWorld

!

N'oubliez pas d'autoriser l'utilisation de Java dans votre navigateur, si vous voulez l'essayer pour interpréter vos applets et visualiser le résultat des applets de ce manuel.

 

Pour les débutants, qui n'ont que de faibles notions de programmation (ou qui ne savent pas comment modifier le PATH sous Windows), voici une procédure plus détaillée pour réaliser cette applet :

Windows 95/98/NT

Mac OS 9
  • Ouvrez un nouveau document avec notepad.exe.
  • Recopiez le programme source Java HelloWorld décrit ci-dessus dans ce document (en faisant attention aux majuscules / minuscules).
  • Enregistrez ce document dans un fichier HelloWorld.java (Attention toujours aux majuscules / minuscules, c'est important) :
    Enregistrez-le dans le même répertoire que le programme javac.exe ; javac.exe doit se trouver dans un répertoire du style c:\jdk...\bin. Vérifiez qu'à l'enregistrement notepad n'a pas ajouté une extension .txt au fichier ; si c'est le cas, renommez-le pour que ce soit exactement HelloWorld.java
  • Ouvrez un autre document avec notepad.exe.
  • Recopiez le source HTML de HelloWorld décrit ci-dessus dans ce document.
  • Enregistrez ce document dans un fichier HelloWorld.html dans le même répertoire que celui où vous avez mis HelloWorld.java.
  • Ouvrez une fenêtre de commandes MS/DOS.
  • Avec la commande CD, allez dans le répertoire de javac.exe (cd c:\jdk...\bin).
  • Tapez ensuite javac HelloWorld.java pour compiler le programme.
  • S'il y une erreur, c'est que vous n'avez pas recopié exactement le programme HelloWorld à l'identique.
    Corrigez-le, enregistrez-le, et refaites javac HelloWorld.java, jusqu'à ce qu'il n'y ait plus d'erreur.
  • Tapez finalement appletviewer HelloWorld.html. Normalement une fenêtre s'ouvre affichant le texte "Hello world !", comme le montre l'applet ci-dessus.
  • C'est tout.
    Pour faire d'autres programmes, c'est toujours la même procédure : Reprenez un programme Java et créez un fichier HTML appelant l'applet grâce à la balise <APPLET ...>, compilez-le avec javac et exécutez-le avec appletviewer suivi du nom du fichier HTML.

Enregistrer vos programmes dans le répertoire où se trouve javac.exe n'est pas la solution idéale pour organiser le rangement de vos programmes, mais vous évite d'avoir à changer la variable d'environnement PATH.

 

  • Ouvrez un nouveau document avec SimpleText.
  • Recopiez le programme source Java HelloWorld décrit ci-dessus dans ce document (en faisant attention aux majuscules / minuscules).
  • Enregistrez ce document dans un fichier HelloWorld.java (Attention toujours aux majuscules / minuscules, c'est important).
    Le dossier où vous enregistrez vos programmes importent peu.
  • Ouvrez un autre document avec SimpleText.
  • Recopiez le source HTML de HelloWorld décrit à ci-dessus dans ce document.
  • Enregistrez ce document dans un fichier HelloWorld.html dans le même dossier que celui où vous avez mis HelloWorld.java.
  • Faites ensuite un drag-and-drop du fichier HelloWorld.java sur l'icône Java Compiler (si vous utilisez le JDK de Sun) ou l'icône javac (si vous utilisez MRJ 2.x), pour compiler le programme.
  • S'il y une erreur, c'est que vous n'avez pas recopié exactement le programme HelloWorld à l'identique.
    Corrigez-le, enregistrez-le, et refaites la procédure précédente, jusqu'à ce qu'il n'y ait plus d'erreur.
  • Faites ensuite un drag-and-drop du fichier HelloWorld.html sur l'icône Applet Viewer (si vous utilisez le JDK de Sun) ou l'icône Applet Runner (si vous utilisez MRJ 2.x). Normalement une fenêtre s'ouvre affichant le texte "Hello world !", comme le montre l'applet ci-dessus.
  • C'est tout.
    Pour faire d'autres programmes, c'est toujours la même procédure : reprenez un programme Java et créez un fichier HTML appelant l'applet grâce à la balise <APPLET ...>, compilez-le et exécutez-le avec Applet Viewer ou Applet Runner.

 


Une fois que vous commencez à comprendre comment marche un programme Java, vous pouvez en modifier un existant ou en créer de complètement nouveaux, et vous pourrez considérer que vous savez programmer en Java. Bonne chance...


Page d'accueilFindIt !ContactAvant proposLes notions de baseDébut de la page
© Copyrights 1997-2023 Emmanuel PUYBARET / eTeks
- Tous droits réservés -
Table des matièresHiérarchie des classes