|
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 !"
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 :
- 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 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 :
- Apprendre Java et utiliser sa bibliothèque de base, sans être noyé par la quantité de fonctionnalités supplémentaires des versions suivantes (236 classes dans le JDK 1.0, 477 dans le JDK 1.1, 1492 dans le JDK 1.2). Tous les programmes que vous développerez avec Java 1.0 continueront à fonctionner avec les versions Java ultérieures.
- 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).
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 :
- 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, Mac OS ou UNIX) des freewares faisant parfaitement l'affaire. Les moteurs de recherche vous donneront des liens pour satisfaire votre bonheur.
- 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/.
- 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à 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 !
Une fois que vous avez (au moins) téléchargé le JDK, vous pouvez vous mettre au travail.
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 :
Figure 1. Cycle de développement d'une appletIl 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 ?
- 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.
- 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.
- 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.
- 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 !
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 JDKL'utilisation des commandes varie forcément suivant l'environnement de développement :
- Sous Windows, 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 Mac OS X, utiliser la ligne de commandes proposée par l'application Terminal dans le dossier Utilitaires.
- Sous Mac OS 9, 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 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) :
- -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 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) :
- -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 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>.
- 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éfinissent 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 !...
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 :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...
|