Java 01 : Le JDK
Ça y est, tu peux enfin te lancer dans le développement, le vrai, le Java ! Cependant, avant de sauter dans le vide, attache d'abord ton parachute en réalisant cette quête.
Tu vas y apprendre les bases du langage Java, afin de les mettre en pratique tout de suite !
Objectifs
- Installer le JDK
- Comprendre les notions de langage Java, JRE, JDK et JVM
- Créer et compiler une classe
Installer le JDK
Le Java est un langage de programmation, mais souvent par abus de langage, on dit que l'on va "installer Java" sur son ordinateur.
En fait, lorsqu'on veut exécuter des programmes écrits en langage Java, on n'installe pas le langage Java lui-même, mais le JRE (Java Runtime Environment).
Cependant, un programme écrit en Java doit être transformé afin d'être compris par la machine : on appelle cela la compilation. Le compilateur se trouve dans le JDK (Java Development Kit).
Comme ton but est de créer tes propres programmes en Java, et donc de les compiler puis de les exécuter, en théorie il te faudrait installer le JRE et le JDK. Cependant, le JDK seul est suffisant, car il contient à la fois les outils de compilation et d'exécution.
L'installation est très simple : suis les consignes de téléchargement du JDK via ce lien.
Un fois le JDK installé, vérifie la version avec la commande suivante :
javac --version
Tu devrais avoir la version 21 ou supérieure. Si ce n'est pas le cas, demande de l'aide autour de toi.
Ta première classe
1. Création du fichier
Tu vas pouvoir te dégourdir les doigts en tapant quelques lignes de codes, afin de créer ton tout premier programme en Java !
En premier lieu, crée dans ton répertoire personnel un dossier JavaProjects, qui contiendra tes futures applications Java.
Dans JavaProjects, crée un dossier JavaIntro et, dans ce nouveau dossier, crée un fichier vide HelloWorld.java
Tu devrais avoir l'arborescence suivante :
~/JavaProjects/JavaIntro/HelloWorld.java
Un fichier Java doit avoir l'extension .java, et un nom anglais écrit en CamelCase commençant par une majuscule.
2. Déclaration de la classe
On appelle ce fichier Java une classe. Une classe doit avoir le même nom que le fichier (sans l'extension) et se déclare de la façon suivante :
class ClassName {
}
Ici, ClassName doit être remplacé par le nom de notre classe, à savoir HelloWorld.
3. Méthode
Telle quelle, cette classe ne te servira à rien. Il lui faut un point d'entrée afin de pouvoir y exécuter une série d'actions.
Ce point d'entrée est la méthode main(). Entre les accolades de la classe HelloWorld, ajoute le code suivant :
public static void main(String[] args) {
// afficher Hello World! dans le terminal
}
Nous décomposerons l'écriture de cette méthode plus tard. Pour le moment, contente-toi de l'utiliser telle quelle :)
4. Afficher un message
En l'état, ta méthode main() ne fait rien. Tu vas afficher un message contenant le texte (très original) suivant : "Hello World!".
Pour ce faire, ajoute le code suivant, en dessous du commentaire // afficher Hello World! dans le terminal :
System.out.println("Hello World!");
Un commentaire est une partie de code qui n'est pas exécutée par le programme. En Java, tu peux faire des commentaires de deux façons différentes : soit sur une ligne, en ajoutant // au début du commentaire, soit sur plusieurs lignes, en ajoutant /* au début du commentaire et */ après le commentaire
5. Indentation
Dernière étape avant l'exécution de ton programme : il faut vérifier si tu as bien indenté ton code !
L’indentation en Java n'est pas obligatoire pour que la compilation réussisse, contrairement au langage Python, par exemple. Cependant, elle rend le code humainement lisible, et comme tu seras amené à travailler avec d'autres êtres humains, ça tombe bien !
"Indenter" consiste à aligner des blocs de codes sur plusieurs niveaux horizontaux, afin d'en faciliter la compréhension.
Les deux règles principales sont les suivantes :
-
si tu ouvres une accolade, la ligne suivante est indentée d'une tabulation (ou de quatre espaces) vers la droite.
-
si tu fermes une accolade, la ligne suivante est désindentée d'une tabulation (ou de quatre espaces) vers la gauche.
Voyons un exemple :
class ClassName {
public static void main(String[] args) {
// do stuff
System.out.println("Awesome !");
}
}
Comme présenté dans l'exemple, on saute deux lignes après la déclaration d'une classe, pour plus de lisibilité.
Compilation
Si tout s'est bien passé précédemment, tu devrais avoir le code suivant dans ta classe :
class HelloWorld {
public static void main(String[] args) {
// afficher Hello World! dans le terminal
System.out.println("Hello World!");
}
}
Le Java est un langage compilé, il ne peut pas être exécuté tel quel par la machine : il faut donc utiliser un outil pour transformer ce langage en bytecode.
Un programme compilé en Java n'est pas directement exécuté par le processeur de la machine, mais par la JVM (Java Virtual Machine), l'avantage étant qu'une fois le code compilé en bytecode, il peut être exécuté sur des machines et des systèmes d'exploitation différents, sans avoir à être modifié.
Imagine la JVM comme un traducteur multilingue, qui s'occupe d'expliquer ton programme à la machine qui l'exécutera.
Tu vas donc compiler ta classe HelloWorld à l'aide de l'outil javac, que tu as précédemment installé avec le JDK.
La commande pour compiler une classe Java est la suivante :
javac ClassName.java
Ici, tu vas devoir adapter la commande en utilisant le nom de ton fichier.
Si tout se passe bien, tu devrais avoir un message commençant par done. Dans le cas contraire, regarde bien le message d'erreur afin d'avoir une piste permettant de corriger le problème :
-
le nom du fichier est-il le bon ?
-
as-tu enregistré le fichier après l'avoir modifié ?
-
exécutes-tu bien la commande au même endroit que se situe la classe ?
-
as-tu copié-collé le code correctement (regarde en haut de la page pour vérifier) ?
-
javac est-il bien installé ?
Regarde le contenu de ton dossier, tu devrais y trouver le nouveau fichier HelloWorld.class. C'est le fichier compilé ! Si tu affiches son contenu, tu verras qu'il n'est pas complètement lisible par un humain : c'est le bytecode, qui sera exécuté par la JVM !
Exécution
Tous tes efforts vont enfin payer ! Pour lancer le fruit de ton dur labeur, tu devras exécuter le programme dans le JRE, avec la commande java :
java ClassName
Attention, comme tu peux le remarquer, il faut exécuter la commande avec le nom de la classe et non celui du fichier, donc sans l'extension .java !
Si tout se passe bien, tu devrais voir le résultat du programme dans le terminal : l'affichage du texte "Hello World!".
Dans le paragraphe précédent, nous avons vu que le bytecode était compilé dans le fichier HelloWorld.class, qui n'était pas particulièrement lisible par un humain.
La commande javap permet de "désassembler" un programme : voir le contenu du code compilé dans un langage plus compréhensible, tel qu'il sera compris par la machine.
Tu peux l'essayer sur ton code compilé :
javap -c HelloWorld.class
Ce n'est pas très simple d'un premier coup d’œil, mais les commentaires expliquent en détail ce que fait chaque ligne. Ne te formalise pas si tu n'y comprends pas grand-chose, ce n'est pas nécessaire pour la suite !
Challenge
Crée ton propre script
- Crée un nouveau dossier dans
JavaProjects, que tu nommerasNoticeMe. - Dans le dossier
NoticeMe, crée la classeSenpai.java. - Déclare ta classe
Senpaiet ajoute une méthode main(), telle qu'elle est montrée dans la quête. - Dans ta méthode main(), ajoute le code permettant d'afficher le texte "Notice me Senpai".
- Compile et exécute le code afin de tester qu'il fonctionne correctement.
- Copie ton code dans un Gist et partage le fichier
Senpai.javaen solution.
Critères de validation
- Le fichier doit bien s'appeler
Senpai.javaet la classeSenpai. - La classe doit se compiler sans message d'erreur.
- À l'exécution de la classe compilée, le message "Notice me Senpai" doit apparaître dans le terminal.
Ressources partagées sur cette quête
- JVM vs. JRE vs. JDK: What’s the Difference?https://www.ibm.com/blog/jvm-vs-jre-vs-jdk/
- pas reussi à installer sur win 11 avec la quetehttps://www.youtube.com/watch?v=Rp1UZsPuO04