Votre premier programme
Dans ce chapitre, nous allons faire nos premiers programmes
en Java.
Mais tout d'abord, quelques explications sur le fonctionnement du JRE s'imposent.
Alors... go !
Mais tout d'abord, quelques explications sur le fonctionnement du JRE s'imposent.
Alors... go !
Sommaire du chapitre :
- Mieux connaitre son environnement Java
- Avant de commencer
- Votre premier programme
- Compilation en ligne de commande (Windows)
Mieux connaitre son environnement Java
Bon : cette partie s'annonce
riche en informations et pour certains, elle sera même "pompeuse"...
Mais afin de bien coder en Java, il vaut mieux comprendre comment tout cela
fonctionne.
Dans le JRE, que je vous ai fait télécharger dans la partie précédente, se trouve le coeur même de Java. Celui-ci s'appelle la JVM (pour Java Virtual Machine) que j'appellerai dorénavant machine virtuelle. Celle-ci a pour rôle, comme je vous l'ai dit dans le chapitre précédent, d'exécuter les programmes Java sur votre machine, c'est ce qui fait que les programmes Java sont dit "portables".
Dans le JRE, que je vous ai fait télécharger dans la partie précédente, se trouve le coeur même de Java. Celui-ci s'appelle la JVM (pour Java Virtual Machine) que j'appellerai dorénavant machine virtuelle. Celle-ci a pour rôle, comme je vous l'ai dit dans le chapitre précédent, d'exécuter les programmes Java sur votre machine, c'est ce qui fait que les programmes Java sont dit "portables".
Qu'est-ce tu
entends par là ?
J'allais y venir...
Comme je vous l'ai maintes fois répété, les programmes Java sont, avant d'être utilisés par la machine virtuelle, pré-compilés en byte code (par votre IDE ou encore à la main). Ce byte code n'est compréhensible que par une JVM, et c'est celle-ci qui va faire le lien entre ce code et votre machine.
Vous aviez sûrement remarqué que sur la page de téléchargement du JRE, plusieurs liens étaient disponibles :
- un lien pour Windows,
- un lien pour Mac,
- un lien pour Linux.
Ceci car la machine virtuelle Java se présente différemment selon qu'on se trouve sous Mac, sous Linux ou encore sous Windows. Par contre le byte code, lui, reste le même quelque soit l'environnement où a été développé et pré-compilé votre programme Java.
Conséquence directe :
quel que soit l'OS sous lequel a été codé un
programme Java, n'importe quelle machine pourra l'exécuter si elle dispose
d'une JVM !
Tu n'arrêtes
pas de nous rabâcher byte code par-ci... byte code par-là...
Mais c'est quoi, au juste ?
Mais c'est quoi, au juste ?
Eh bien un byte code - et je dis bien UN byte code - n'est autre qu'un code intermédiaire entre votre code Java et le code machine.
Ce code particulier se trouve dans les fichiers pré-compilés de vos programmes ; en Java, un fichier source a l'extension .java et un fichier pré-compilé a l'extension .class ; c'est dans ce dernier que vous pourrez voir du byte code.
Par contre, vos fichiers .java sont de bêtes fichiers texte, seule l'extension est changée... Vous pouvez donc les ouvrir, les créer ou encore les mettre à jour avec... le Bloc-notes de Windows par exemple...
Pour en revenir à notre byte code, je vous invite à regarder un fichier .class à la fin de cette partie (vous en aurez au moins un), mais je vous préviens, c'est illisible ! !
Inutile de vous dire que votre machine est incapable d'interpréter
du byte code !
Alors pourquoi je vous ai dit UN byte code ? Tout simplement parce que la machine virtuelle de Java se moque que le byte code soit à la base du Java ou autre chose.
Son rôle est d'interpréter ce code et de le faire fonctionner. Donc, si un jour vous arrivez à faire du byte code avec comme fichier source un .cpp (pour C++), ça devrait (et j'insiste sur le devrait) fonctionner.
Vous pouvez avoir un aperçu de ce qui devrait fonctionner sur cette page.
Ce qu'il faut retenir :
- la JVM est le coeur de Java,
- celle-ci fait fonctionner vos programmes Java, pré-compilés en byte code,
- les fichiers contenant le code source de vos programmes Java ont l'extension .java,
- les fichiers pré-compilés correspondant à vos codes sources Java ont l'extension .class,
- le byte code est un code intermédiaire entre votre programme et votre machine,
- un programme Java, codé sous Windows peut être pré-compilé sous Mac et enfin exécuté sous Linux,
- votre machine NE PEUT PAS interpréter du byte code.
Je pense qu' après cette partie purement théorique, vous avez hâte de commencer à taper des lignes de code... Mais avant, il me reste quelques choses à vous dire !
Avant de commencer
Avant de commencer, vous devez savoir que tous
les programmes Java sont composés d'au moins une classe.
Cette classe doit contenir (applet mise à part) une méthode main. Celle-ci est la méthode principale du programme, c'est elle que la JVM va chercher afin de lancer votre programme. Pour faire court, c'est le point de départ du programme.
Vous voyez donc son importance !
Et pour qu'on se comprenne bien, une méthode est une suite d'instructions à exécuter. Une méthode contient :
Cette classe doit contenir (applet mise à part) une méthode main. Celle-ci est la méthode principale du programme, c'est elle que la JVM va chercher afin de lancer votre programme. Pour faire court, c'est le point de départ du programme.
Vous voyez donc son importance !
Et pour qu'on se comprenne bien, une méthode est une suite d'instructions à exécuter. Une méthode contient :
- une entête : celle-ci va être un peu comme la carte d'identité de la méthode. Nous y reviendrons.
- un corps : le contenu de la méthode. Ce qui va être fait ! Délimité par des accolades {}.
- une valeur de retour : le résultat que la méthode va retourner. SAUF pour les méthodes de type void qui ne renvoient rien. Nous y reviendrons aussi.
Vous verrez, un peu plus tard, qu'un programme n'est qu'une
multitude de classes qui s'utilisent l'une l'autre.
Mais pour le moment, nous n'allons travailler qu'avec une seule classe.
Mais pour le moment, nous n'allons travailler qu'avec une seule classe.
Dans la partie précédente, je vous avais demandé de créer un projet Java ; ouvrez-le si ce n'est pas déjà fait. Donc pour rappel, voici ce que vous aviez sous votre nez :
Vous voyez la fameuse classe dont je vous parlais ? Ici, elle s'appelle sdz1.
Vous pouvez voir que le mot class est précédé du mot public, nous verrons la signification de celui-ci lorsque nous programmerons des objets.
Pour le moment, ce que vous devez retenir c'est que votre classe est définie par un mot clé, class, qu'elle a un nom ; ici, sdz1 et que le contenu de celle-ci est délimité par des accolades, {}.
Comme je vous l'ai dit plus haut, notre unique classe contient la méthode main. La syntaxe de cette méthode est toujours la même :
Code : Java
1 2 3 |
public static void main(String[] args){ // Contenu de votre classe
}
|
Ce sera entre les accolades de la méthode main que nous
écrirons nos codes sources.
Excuse-nous, mais... Pourquoi as-tu écrit "//Contenu de
votre classe" et non "Contenu de votre classe" ?
Bonne question !
Je vous ai dit plus haut que votre programme Java, avant de pouvoir être exécuté, doit être pré-compilé en byte code. Eh bien la possibilité de forcer le compilateur à ignorer certaines instructions existe !
On appelle ça des commentaires et il existe deux syntaxes :
- les commentaires unilignes : introduits par les symboles //, ils mettent tous ce qui les suit en commentaires, du moment que le texte se trouve sur la même ligne que les //.
Code : Java
1 2 3 4 5 6 |
public static void main(String[] args){ //Un commentaire
//un autre
//Encore un autre
Ceci n'est pas un commentaire ! ! ! ! }
|
- les commentaires multilignes : ils sont introduits par les symboles /* et se terminent par les symboles */.
Code : Java
1 2 3 4 5 6 7 8 9 |
public static void main(String[] args){
/*
Un commentaire
Un autre
Encore un autre
*/
Ceci n'est pas un commentaire ! ! }
|
D'accord !
Mais ça sert à quoi ?
C'est simple : au début, vous ne ferez que de très petits programmes.
Mais dès que vous aurez pris de la bouteille, la taille de ceux-ci, ainsi que le nombre de classes qui les composera, augmentera.
Vous serez contents de trouver quelques lignes de commentaires au début de votre classe pour vous dire à quoi elle sert, ou encore des commentaires dans une méthode qui fait des choses compliquées afin de savoir ou vous en êtes dans vos traitements...
Il existe en fait une troisième syntaxe, mais celle-ci a un but particulier. Elle permettra de générer une documentation de votre programme ! Une Javadoc (Java Documentation).
Je n'en parlerai que très peu, et pas dans ce chapitre.
Je profite de cet aparté sur les commentaires pour vous donner une astuce bien pratique !
Il vous arrivera forcément à un moment donné de vouloir mettre une partie de code en commentaire. Dans ce cas, il y a 99,99999999 % de chance que vous choisissiez les commentaires multilignes.
L'inconvénient, c'est que lorsque vous voudrez remettre votre morceau de code en activité, il vous faudra retirer les /* */. Mais si 5 minutes plus tard, vous voulez remettre la même portion de code en commentaire.
Regardez ce morceau de code (il ne fait rien du tout, c'est un exemple) :
Code : Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public static void main(String[] args){
String str = "toto";
int entier = 0;
if(entier != 0){
/* for(int i = 0; i < 20; i++){ System.out.println("oui ! ! ! ! !");
}
//*/
}
}
|
Vous pouvez voir que j'ai utilisé les commentaires multilignes ! Mais avec une variante...
La ligne qui ferme les commentaires est précédée... de //. Mais c'est ce qui met une ligne en commentaires...
C'est idiot de mettre ça là... Ils sont en commentaire !
Je le sais bien, et c'est là qu'est l'astuce. Pour le moment, les deux // sont en commentaires comme les lignes qui se trouvent entre /* et */.
Mais que se passe-t-il si j'ajoute un / devant ma première instruction de commentaire ?
Code : Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public static void main(String[] args){
String str = "toto";
int entier = 0;
if(entier != 0){
//* for(int i = 0; i < 20; i++){
System.out.println("oui ! ! ! ! !"); }
//*/
}
}
|
Eh bien là, ce sont mes commentaires multilignes qui sont devenus des commentaires, et mes lignes sont de nouveau actives dans mon code !
Explique-nous
ça !
C'est très simple. Le fait d'ajouter un / devant /* met l'étoile en commentaire... Dans ce cas, il ne s'agit plus d'un commentaire multilignes, mais uniligne ! Et là je crois que vous avez deviné l'utilité de cette ligne //*/... Sur celle-ci, c'est l'instruction de commentaire multiligne fermante qui est en commentaire !
Donc, plus besoin d'ajouter de commentaire, d'en effacer, de les remettre, de les ré-effacer...
Vous encadrez la portion de code que vous souhaitez enlever de /* .... //*/ et lorsque vous la voulez à nouveau, vous ajoutez un / devant l'instruction ouvrante des commentaires ! Et si vous voulez remettre la même portion de code en commentaire, enlevez le / ajouté devant /* !
A partir de maintenant et jusqu'à ce que nous programmions des interfaces graphiques, nous allons faire ce qu'on appelle des programmes procéduraux. Cela signifie que le programme se déroulera de façon procédurale.
Euh...
késako ?
En fait, un programme procédural est un programme qui s'effectue de haut en bas, une ligne après l'autre.
Bien sûr, il y a des instructions qui permettent de répéter des morceaux de code, mais le programme en lui même se terminera une fois arrivé à la fin du code.
Ceci vient en opposition à la programmation événementielle (ou graphique) qui elle, est basée sur des événements (clic de souris, choix dans un menu...).
Je pense que j'ai fait le tour de ce que je voulais vous dire...
Bon : pour votre premier programme, je pense que le traditionnel "Hello World ! ! " est de mise...
Donc, allons-y !
Votre premier programme
Nous entrons enfin dans le vif du sujet !
Mais ne vous attendez pas à faire un vrai programme tout de suite...
Maintenant, vous pouvez taper les lignes suivantes entre les accolades de votre méthode main :
Code : Java
Mais ne vous attendez pas à faire un vrai programme tout de suite...
Maintenant, vous pouvez taper les lignes suivantes entre les accolades de votre méthode main :
Code : Java
1 |
System.out.print("Hello World !"); |
N'oubliez
surtout pas le ; à la fin de la ligne !
Toutes les instructions en Java sont suivies d'un point virgule.
Toutes les instructions en Java sont suivies d'un point virgule.
Une fois que vous avez saisi cette ligne de code dans votre méthode main, vous devez lancer le programme.
Si vous vous souvenez bien de la présentation du chapitre précédent, vous avez dû cliquer sur la flèche blanche dans un rond vert :
Si vous regardez dans votre console, fenêtre en bas sous Eclipse, vous devez avoir :
Expliquons un peu cette ligne de code.
Littéralement, elle signifie "la méthode print() va écrire Hello World ! en utilisant l'objet out de la classe System".
- System : ceci correspond à l'appel d'une classe qui s'appelle "System". C'est une classe utilitaire qui permet surtout d'utiliser l'entrée et la sortie standard.
- out : objet de la classe System qui gère la sortie standard.
- print : méthode qui écrit dans la console la chaîne passée en paramètre.
Si vous mettez plusieurs System.out.print, voici ce qui ce passe.
Prenons ce code :
Code : Java
1 2 3 |
System.out.print("Hello World ! !"); System.out.print("My name is");
System.out.print("Cysboy"); |
Lorsque vous l'exécutez, vous devriez avoir une chaîne de caractères qui se suivent, sans saut à la ligne. En gros, vous devez avoir ceci dans votre console :
Hello World ! !My name isCysboy
Je me doute que vous souhaiteriez faire un retour à la ligne pour que votre texte soit plus lisible... Pour réussir cela, vous avez plusieurs solutions.
- Soit vous utilisez un caractère d'échappement, ici, \n.
- Soit vous utilisez la méthode println() à la place de la méthode print().
Donc, si nous reprenons notre précédent code et que nous appliquons ceci, voilà ce que ça donnerait :
(notre code modifié) :
Code : Java
1 2 3 |
System.out.print("Hello World ! ! \n"); System.out.println("My name is");
System.out.println("\nCysboy"); |
Le résultat :
Hello World ! !
My name is
Cysboy
Vous pouvez voir que :
- lorsque vous utilisez le caractère d'échappement \n, quelle que soit la méthode appelée, celle-ci intègre immédiatement un retour à la ligne à l'emplacement de ce dernier.
- lorsque vous utilisez la méthode println(), celle-ci ajoute automatiquement un retour à la ligne à la fin de la chaîne passée en paramètre.
- rien ne vous empêche de mettre un caractère d'échappement dans la méthode println().
J'en profite au passage pour vous donner deux autres caractères d'échappement :
- \r : va mettre un retour chariot.
- \t : va faire une tabulation.
Vous avez
sûrement remarqué que la chaîne de caractères que l'on affiche est entourée de " <chaine> ".
En Java, les double quotes sont des délimiteurs de chaînes de caractères ! Si vous voulez afficher un double quote avec la sortie standard, vous devrez "l'échapper" avec un \, ce qui donnerait
System.out.println("coucou mon \"choux\" ! ");
En Java, les double quotes sont des délimiteurs de chaînes de caractères ! Si vous voulez afficher un double quote avec la sortie standard, vous devrez "l'échapper" avec un \, ce qui donnerait
System.out.println("coucou mon \"choux\" ! ");
Maintenant que vous savez faire un "Hello World", je vous propose de voir la compilation de vos programmes en ligne de commande.
Cette
sous-partie n'est ici que pour les plus curieux d'entre vous.
Vous pouvez passer outre cette sous-partie si vous le voulez, et aller directement au QCM mais, partez du principe que ça pourrait vous servir un jour...
Vous pouvez passer outre cette sous-partie si vous le voulez, et aller directement au QCM mais, partez du principe que ça pourrait vous servir un jour...
Compilation en ligne de commande (Windows)
Donc bienvenue aux plus curieux
!
Avant de vous apprendre à compiler et à exécuter un programme en ligne de commandes, il va vous falloir le JDK de SUN (Java SE Development Kit). C'est dans celui-ci que nous aurons de quoi compiler nos programmes. Le nécessaire à l'exécution des programmes est aussi dans le JRE... Mais vous l'aurez en plus dans le JDK.
Je vous invite donc à retourner sur le site de SUN et à télécharger celui-ci. Une fois cette opération effectuée, il est conseillé de mettre à jour votre variable d'environnement %PATH%.
Avant de vous apprendre à compiler et à exécuter un programme en ligne de commandes, il va vous falloir le JDK de SUN (Java SE Development Kit). C'est dans celui-ci que nous aurons de quoi compiler nos programmes. Le nécessaire à l'exécution des programmes est aussi dans le JRE... Mais vous l'aurez en plus dans le JDK.
Je vous invite donc à retourner sur le site de SUN et à télécharger celui-ci. Une fois cette opération effectuée, il est conseillé de mettre à jour votre variable d'environnement %PATH%.
Euh... Quoi
?
Votre variable d'environnement. C'est grâce à celle-ci que Windows arrive à trouver des exécutables sans lui spécifier le chemin d'accès complet. Vous, enfin Windows, en a plusieurs, mais nous nous intéresserons qu'à une seule.
En gros, cette variable contient le chemin d'accès à certains programmes.
Par exemple, si vous spécifiez le chemin d'accès d'un programme X dans votre variable d'environnement et que, comme par un malheureux hasard, vous n'avez plus aucun raccourci vers X, c'est simple : vous l'avez définitivement perdu dans les méandres de votre PC.
Eh bien vous pourrez le lancer en faisant "démarrer > Exécuter" et en tapant la commande "X.exe" (en partant du principe que le nom de l'exécutable est X.exe).
D'accord,
mais comment on fait ? Et pourquoi on doit faire ça pour le JDK ?
J'y arrive...
Une fois votre JDK installé, ouvrez le répertoire bin de celui-ci, mais également celui-ci de votre JRE. Nous allons nous attarder sur deux fichiers.
Dans le répertoire bin de votre JRE, vous devez avoir un fichier appelé java.exe. Fichier que vous retrouvez aussi dans le répertoire bin de votre JDK. C'est grâce à ce fichier que votre ordinateur peut lancer vos programmes par le biais de la JVM.
Lorsque vous
lancez une application sous Eclipse, ce fichier est lancé de façon implicite !
Le deuxième ne se trouve que dans le répertoire bin de votre JDK, il s'agit de javac.exe (java compiler). C'est celui-ci qui va pré-compiler vos programmes Java en byte code.
Alors pourquoi le faire pour le JDK ?
Eh bien, compiler-exécuter en ligne de commande revient à utiliser ces deux fichiers en leur précisant où se trouvent les fichiers à traiter. Cela veut dire que si on ne met pas à jour la variable d'environnement de Windows, nous devons :
- ouvrir l'invite de commande,
- se positionner dans le répertoire bin de notre JDK,
- appeler la commande souhaitée,
- préciser le chemin du fichier .java,
- renseigner le nom du fichier.
Avec notre variable d'environnement mise à jour, nous n'aurons plus qu'à :
- nous positionner dans le dossier de notre programme,
- appeler la commande,
- renseigner le nom du fichier Java.
Comme un exemple vaut mieux que de grands discours, mettons notre variable d'environnement à jour...
Allez dans le "panneau de configuration" de votre PC, de là, cliquez sur l'icône "Système" ; choisissez l'onglet "avancé" et vous devriez avoir un bouton, en bas, intitulé "Variables d'environnement" ; cliquez dessus.
Une nouvelle fenêtre s'ouvre. Dans la partie inférieure intitulée "Variables système" chercher la variable Path. Une fois sélectionnée, cliquez sur Modifier.
Encore une fois, une fenêtre, plus petite celle-là, s'ouvre devant vous. Elle contient le nom de la variable et sa valeur.
Ne changez
pas son nom et n'effacez pas le contenu de valeur !
Nous allons juste ajouter un chemin d'accès.
Nous allons juste ajouter un chemin d'accès.
Pour ce faire, allez jusqu'au bout de la valeur de la variable, ajoutez-y un point-virgule (;) s'il n'y en a pas, et ajoutez maintenant le chemin d'accès au répertoire bin de votre JDK, en terminant celui-ci par un point-virgule !.
Chez moi, ça donne ceci : "C:\Sun\SDK\jdk\bin".
Alors, ma variable d'environnement contenait avant ajout :
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;
Et maintenant :
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Sun\SDK\jdk\bin;
Validez les changements, et c'est tout !
Vous êtes maintenant prêts à compiler en ligne de commande.
Pour bien faire, allez dans le répertoire de votre premier programme et effacez le .class.
Ensuite, faites "démarrer > Exécuter" (ou encore touche Windows + r), et tapez "cmd".
Pour rappel,
dans l'invite de commande, on se déplace de dossier en dossier grâce à
l'instruction cd.
cd <nom du dossier enfant> : pour aller dans un dossier contenu dans celui dans lequel nous sommes.
cd .. : pour remonter d'un dossier dans la hiérarchie.
cd <nom du dossier enfant> : pour aller dans un dossier contenu dans celui dans lequel nous sommes.
cd .. : pour remonter d'un dossier dans la hiérarchie.
Par exemple : lorsque j'ouvre la console, je me trouve dans le dossier C:\toto\titi et mon application se trouve dans le dossier C:\sdz, je fais donc :
Code : Bash
1 2 3 |
cd ..
cd ..
cd sdz
|
Lors de la première instruction, je me retrouve dans le dossier C:\toto.
Lors de la deuxième instruction, je me retrouve à la racine de mon disque.
Lors de la troisième instruction, je me retrouve dans le dossier C:\sdz.
Nous sommes maintenant dans le dossier contenant notre fichier Java !
Mais nous pouvons condenser ceci en :
Code : Bash
1 |
cd ../../sdz
|
Maintenant, vous pouvez créer votre fichier .class en utilisant la commande javac <nomDeFichier.java>.
Si, dans mon dossier, j'ai un fichier test.java, je le compile en faisant :
javac test.java
Et si vous n'avez aucun message d'erreur, vous pouvez vérifier que le fichier test.class est présent en utilisant l'instruction dir qui liste le contenu d'un répertoire.
Cette étape réussie, vous pouvez lancer votre programme Java en faisant java <nomFichierClassSansExtension>
Ce qui nous donne :
java test
Et normalement, vous avez le résultat de votre programme Java qui s'affiche sous vos yeux ébahis !
Attention : il ne faut pas mettre l'extension du fichier pour le
lancer, mais la mettre pour le compiler.
Donc voilà : vous avez compilé et exécuté un programme Java en ligne de commande... Vous en aurez peut être besoin un jour
// //
0
comments
//
0 comments to "Votre premier programme"
Post a Comment