eTeks : Du C/C++ à JavaContactAvant proposLes notions de base

Du C/C++ à JavaTM

Hierarchie des classesTable des matières


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. Il n'a que quelques années de vie (les premières versions datent de 1995), et pourtant il a réussi à intéresser et intriguer beaucoup de développeurs à travers le monde. Et pourquoi donc ?

La réponse est vaste et forcément sujet à polémiques. En voici les principaux avantages :

  • C'est un langage orienté objet dérivé du C, mais plus simple que le C++.
  • Il est multi-plateforme : tous vos programmes tourneront sans modification sur toutes les plateformes où existe Java.
  • Il est doté en standard d'une riche bibliothèque de classes, comprenant la gestion des interfaces graphiques (fenêtres, boites de dialogue, contrôles, menus, graphisme), la programmation multi-threads (multitâches), la gestion des exceptions, les accès aux fichiers et au réseau (notamment Internet),...

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.

Où trouver le JDK

Venons-en aux faits. Le JDK est disponible gratuitement sur le site Java de Sun http://www.javasoft.com/. Actuellement, vous cherchez sur ce site un lien products. Ce lien vous amène sur une page décrivant tout ce que Sun met à la disposition des développeurs pour développer en Java (et il y en a beaucoup).

Java est disponible sous 3 versions : Java 1.0, Java 1.1 et Java 2 (la version 2 est uniquement disponible pour Windows, Solaris et Linux pour le moment).
Il est conseillé de débuter par la version 1.0 en téléchargeant le Java Development Kit - JDK 1.0 (en fait la version 1.0.2), disponible sous Windows 95/98/NT, MacOS et Solaris sur le site de Javasoft. Si votre système de développement n'est pas un de ceux-ci, ce site fournit des liens vers ces autres systèmes tierces (third party ports).
En commençant par la version 1.0, vous pourrez :

  • Apprendre Java et utiliser sa bibliothèque de base, sans être noyé par la quantité de fonctionnalités supplémentaires des versions suivantes (212 classes dans Java 1.0, 504 dans Java 1.1, 1592 dans Java 2).
  • Bénéficier d'une documentation complète en utilisant le manuel Du C/C++ à Java (langage et bibliothèque).
  • Faire fonctionner vos applets sur presque tous les navigateurs (notamment Netscape Navigator et Microsoft Internet Explorer dès leur version 3).

Les versions Java 1.0 et 1.1 pour MacOS développées par Apple (dénommées MRJ 1.5 et MRJ 2.2 respectivement) sont disponibles sur le site http://devworld.apple.com/java/.

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

  • Les spécifications du langage au format Acrobat Reader, pour ceux qui recherchent des renseignements détaillés sur le langage et les bibliothèques des classes de base de Java 1.0 (plus de 800 pages).
    Le fichier est accessible via Java Language Specification 1.0 ; les personnes ne disposant pas encore d'Adobe Acrobat Reader peuvent se procurer gratuitement cette application sur le site d'Adobe : http://www.adobe.com/.
  • L'ensemble des classes Java et leur interface de programmation sous forme de fichiers HTML à visualiser avec un navigateur (très utile pour avoir une référence complète des classes).
    Cet ensemble de fichiers est rassemblé sous forme de fichier .tar , .zip ou .hqx et est accessible via API Documentation. Les personnes ne disposant pas d'application pour extraire les fichiers d'un fichier .zip ou .tar, peuvent se procurer sur toute plateforme (Windows, MacOS ou UNIX) des freewares faisant parfaitement l'affaire. Les moteurs de recherche vous donneront des liens pour satisfaire votre bonheur.
  • Un tutorial de Java très complet, se dénommant The Java Tutorial - Object-Oriented Programming for the Internet, est disponible sous forme de fichiers HTML rassemblés dans un fichier tutorial.zip.
  • Voir aussi les liens utiles...

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 est très sommaire (généralement un ensemble de commandes simples), il vous faudra en plus au moins un éditeur de texte (n'importe lequel, peut importe). De nombreux éditeurs de logiciels fournissent des environnements de développement complet (éditeur, debugger intégré,...), mais là, il faudra dégainer la carte bleue !

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 MacOS) 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 qui sont 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 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 vu d'œil, 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

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

  • Sous Windows 95/98/NT, ouvrir une fenêtre de commandes ; puis, utiliser les commandes décrites ci-après, en les tapant directement. Pour éviter d'avoir à décrire le chemin d'accès complet aux commandes, il vous est vivement conseillé de modifier la variable d'environnement PATH pour que soit pris en compte le répertoire d'installation des commandes Java.
  • Sous UNIX, utiliser la ligne de commandes comme sous Windows.
  • Sous MacOS, soit vous effectuez sur l'icône de la commande un drag-and-drop (ou glisser-déposer pour les francophiles purs) des fichiers à passer en paramètres, soit vous utilisez le premier item du menu File pour choisir le fichier en question (Java Runner ouvre directement une boite de dialogue vous demandant de choisir la classe à exécuter).

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 MacOS) :

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 MacOS) :

  • -O : optimisation (Dans certains cas, les méthodes final sont compilées inline, c'est-à-dire que l'appel à une méthode est remplacé par le code de cette méthode).
  • -classpath dir : dir spécifie un ou plusieurs répertoires d'accès aux classes importées (séparés par ; sous Windows, et : sous UNIX).
  • -d dir : dir spécifie le répertoire de destination des fichiers de classes .class.

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 de la version 1.1 ou 2, 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 MacOS) : 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 MacOS) :

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 MacOS ) :

  • -classpath dir : dir spécifie un ou plusieurs répertoires d'accès aux classes importées (séparés par ; sous Windows, et : sous UNIX).
  • -Dpropriete=valeur : modifie la propriété du système avec la valeur donnée (voir aussi la classe System).
  • -version : écrit la version de la Machine Virtuelle que vous utilisez.

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 MacOS) :

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>.

  • L'argument de CODE, ClasseApplet, doit correspondre à un fichier .class qui est la classe de l'applet. Vous verrez dans le premier exemple comment définir une classe utilisable comme point d'entrée d'une applet.
  • WIDTH et HEIGHT définisse la largeur et la hauteur de la zone où sera affichée l'applet.
  • CODEBASE (optionnel) permet de définir le chemin d'accès aux classes utilisées par l'applet. Par défaut le chemin d'accès est le répertoire d'où provient le fichier HTML. Le chemin spécifié par CODEBASE peut être relatif au répertoire courant du fichier HTML, ou être une URL désignant un chemin sur un serveur différent.
  • ALT (optionnel) définit la chaîne de caractères à afficher quand l'applet ne peut être exécutée (si par exemple, un navigateur n'autorise pas Java, il écrira cette chaîne).
  • NAME (optionnel) définit un nom pour l'applet (utilisé quand vous recherchez une applet par son nom).
  • ALIGN (optionnel) permet de définir l'alignement horizontal de l'applet dans la page HTML (LEFT, RIGHT ou MIDDLE).
  • ARCHIVE (optionnel) est un attribut apparu à partir de Java 1.1 pour définir le fichier JAR qui rassemble les classes, les images et autres fichiers qu'utilise l'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

MacOS
  • 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...

 


eTeks : Du C/C++ à JavaContactAvant proposLes notions de baseDébut de la page

eTeks
© 1997-2000 Emmanuel PUYBARET / eTeks - Tous droits réservés

Hiérarchie des classesTable des matières