Bienvenue Alex. C'est ta toute première fiche. Tu n'as rien besoin de savoir avant de commencer. On va poser les fondations : comprendre ce qu'est un programme, savoir se déplacer dans ses fichiers, parler à l'ordinateur par le terminal, et installer un éditeur confortable. Prends ton temps. Cette fiche n'est pas une course.
📦 Encadré : Objectifs / Prérequis / Durée
| Objectifs | 1. Expliquer avec tes mots ce qu'est un programme, un CPU, la RAM, un disque. 2. Te repérer dans une arborescence de fichiers (chemins absolus et relatifs). 3. Utiliser une quinzaine de commandes de terminal sans avoir peur. 4. Comprendre encodage, fins de ligne, texte vs binaire. 5. Installer et configurer VS Code, connaître 10 raccourcis clavier. 6. Savoir lire un message d'erreur et poser une bonne question technique. |
| Prérequis | Savoir allumer un ordinateur, utiliser une souris, un navigateur web. C'est tout. |
| Durée estimée | 6 à 9 heures (cours + exercices + mini-projet). Étale sur 3 à 4 séances. |
| Matériel | Un ordinateur (Windows, macOS ou Linux), une connexion internet, un carnet papier. |
💡 Conseil de méthode : ne lis pas cette fiche comme un roman. Ouvre un terminal à côté et tape tout ce que tu vois. Le savoir entre par les doigts.
1. Qu'est-ce qu'un programme, vraiment ?
1.1 L'analogie de la recette de cuisine
Imagine une recette de gâteau :
1. Préchauffer le four à 180 °C
2. Mélanger 3 œufs et 100 g de sucre
3. Ajouter 150 g de farine
4. Si la pâte est trop épaisse, ajouter un peu de lait
5. Enfourner 25 minutes
Cette recette a tout ce qu'un programme possède :
- des données (3 œufs, 180 °C, 25 minutes),
- des instructions dans un ordre précis,
- une condition (« si la pâte est trop épaisse… »),
- un résultat attendu (le gâteau).
Un programme, c'est une suite d'instructions écrites pour être exécutées par une machine. La grande différence avec une recette humaine : la machine est totalement idiote et totalement obéissante. Elle ne devine rien. Si tu écris « ajouter 150 » sans préciser « g de farine », elle ne comprend pas, elle s'arrête et râle.
🔑 À retenir : quand ton programme ne fait pas ce que tu veux, ce n'est jamais que l'ordinateur « n'a pas compris ». C'est qu'il a fait exactement ce que tu as écrit.
1.2 Du code source au programme qui tourne
Le code source, c'est le texte que tu écris. Du texte, vraiment : tu pourrais l'écrire dans le Bloc-notes.
Mais le processeur, lui, ne comprend pas le français ni le Java. Il ne comprend que le langage machine : des suites de nombres binaires (des 0 et des 1). Il faut donc un traducteur. Il en existe deux familles.
A. La compilation (traduction d'avance, une fois pour toutes)
mon_code.java ──[ compilateur ]──► fichier exécutable ──► exécution
(texte) (langage machine)
Comme faire traduire un livre entier par un traducteur professionnel avant de le vendre. C'est plus long au départ, mais ensuite la lecture est rapide. Langages compilés : C, C++, Rust… et Java, en partie.
B. L'interprétation (traduction à la volée, ligne par ligne)
mon_code.py ──► [ interpréteur ] lit une ligne, la traduit, l'exécute, passe à la suivante
Comme un interprète en cabine lors d'une conférence. Démarrage immédiat, mais plus lent à l'exécution. Langages interprétés : Python, JavaScript…
C. Le cas de Java (celui qui t'intéresse)
Java fait les deux, et c'est ce qui a fait son succès :
Bonjour.java ──[ javac ]──► Bonjour.class ──[ JVM : java ]──► ça tourne
ton texte compilateur "bytecode" machine virtuelle
- Tu écris
Bonjour.java(du texte). - Le compilateur
javacle transforme en bytecode (Bonjour.class) : un langage intermédiaire, pas encore du langage machine. - La JVM (Java Virtual Machine, « machine virtuelle Java ») lit ce bytecode et le traduit pour la machine sur laquelle elle tourne.
Pourquoi c'est malin ? Parce que le même fichier .class fonctionne sur Windows, macOS et Linux, du moment qu'une JVM y est installée. C'est le slogan historique de Java : « write once, run anywhere » (écris une fois, exécute partout).
📖 Vocabulaire installé :
- Code source : le texte que tu écris.
- Compilateur : programme qui traduit ton code d'avance.
- Interpréteur : programme qui traduit et exécute au fur et à mesure.
- Bytecode : langage intermédiaire de Java.
- JVM : le programme qui fait tourner du bytecode Java.
1.3 Processus, entrée, sortie
Quand un programme tourne, on l'appelle un processus. Il a :
- une entrée (input) : ce que tu tapes au clavier, un fichier lu, une requête réseau ;
- une sortie (output) : ce qu'il affiche à l'écran, un fichier écrit ;
- une sortie d'erreur : un canal séparé, réservé aux messages de problème.
C'est pour ça qu'au terminal, les erreurs s'affichent souvent en rouge ou d'une façon différente : elles passent par un autre tuyau.
2. La machine : CPU, RAM, disque
Analogie : une cuisine.
| Élément | Rôle | Analogie cuisine | Ordre de grandeur |
|---|---|---|---|
| CPU (processeur) | Fait les calculs, exécute les instructions | Le cuisinier | Des milliards d'opérations par seconde |
| RAM (mémoire vive) | Garde ce qu'on utilise maintenant | Le plan de travail | 8 à 32 Go, effacée à l'extinction |
| Disque (SSD/HDD) | Garde tout durablement | Le placard et le frigo | 256 Go à 2 To, conservé |
Comment ils travaillent ensemble ? Tu double-cliques sur une application :
- Le programme dort sur le disque (dans le placard).
- Le système le charge en RAM (on le sort sur le plan de travail).
- Le CPU lit les instructions en RAM et les exécute (le cuisinier travaille).
- Tu enregistres ton document → il repart sur le disque (rangé au placard).
⚠️ Le piège classique : « J'ai perdu mon travail parce que l'ordi s'est éteint. » Normal : tant que tu n'as pas enregistré, ton texte n'existe que en RAM. Et la RAM s'efface à l'extinction. Le plan de travail est nettoyé chaque soir ; seul le placard garde les choses. ➡️ D'où le réflexe : Ctrl+S (ou Cmd+S sur Mac) toutes les 30 secondes. Ça doit devenir un tic nerveux.
Pourquoi cette hiérarchie existe ? À cause de la vitesse et du prix. Plus c'est rapide, plus c'est cher, donc plus c'est petit :
Registres du CPU ultra rapides quelques octets (les mains du cuisinier)
Cache CPU très rapide quelques Mo (la petite étagère à portée)
RAM rapide quelques Go (le plan de travail)
Disque SSD lent quelques To (le placard)
Réseau / cloud très lent ~ illimité (le supermarché à 10 min)
Retiens l'ordre de grandeur : lire en RAM est environ 100 000 fois plus rapide que lire sur un disque mécanique. C'est pour ça que les programmes essaient de garder en mémoire ce qu'ils utilisent souvent.
Et le système d'exploitation ? (Windows, macOS, Linux) C'est le chef de cuisine : il distribue le temps de CPU entre les programmes, gère la RAM, contrôle l'accès aux fichiers, parle au matériel. Sans lui, chaque programme devrait savoir piloter ton clavier lui-même.
3. Le système de fichiers
3.1 L'arborescence
Tes fichiers sont rangés dans des dossiers (ou répertoires), eux-mêmes dans des dossiers. Ça forme un arbre à l'envers : une racine en haut, des branches, des feuilles (les fichiers).
/ (racine, sous macOS/Linux)
├── home/
│ └── alex/ (ton dossier personnel = "~")
│ ├── Documents/
│ ├── Téléchargements/
│ └── formation-java/
│ ├── cours/
│ │ └── fiche-01.md
│ └── exos/
│ └── Bonjour.java
└── etc/ (fichiers de configuration du système)
Sous Windows, il y a une racine par disque, désignée par une lettre :
C:\
├── Windows\
├── Program Files\
└── Users\
└── Alex\ (ton dossier personnel)
├── Documents\
└── formation-java\
🔎 Détail qui compte : le séparateur est
/(barre oblique) sous macOS/Linux et\(barre oblique inverse) sous Windows. PowerShell accepte les deux, ce qui simplifie la vie.
3.2 Chemin absolu vs chemin relatif
Un chemin (path) est l'adresse d'un fichier.
-
Chemin absolu : il part de la racine. Il est vrai partout, tout le temps.
/home/alex/formation-java/exos/Bonjour.javaC:\Users\Alex\formation-java\exos\Bonjour.java➡️ C'est l'adresse postale complète : 12 rue des Lilas, 75011 Paris. -
Chemin relatif : il part de l'endroit où tu te trouves maintenant. Si tu es dans
formation-java, alorsexos/Bonjour.javasuffit. ➡️ C'est : « deuxième porte à droite ». Ça ne veut rien dire si on ignore où tu es.
Trois raccourcis à connaître par cœur :
| Symbole | Signification |
|---|---|
. |
le dossier où je suis (le dossier courant) |
.. |
le dossier parent (un cran au-dessus) |
~ |
mon dossier personnel (/home/alex, /Users/alex, C:\Users\Alex) |
Exemples, en supposant que tu es dans /home/alex/formation-java/cours :
fiche-01.md → /home/alex/formation-java/cours/fiche-01.md
./fiche-01.md → exactement pareil (le "./" est explicite)
../exos/Bonjour.java → /home/alex/formation-java/exos/Bonjour.java
../../Documents → /home/alex/Documents
~/Documents → /home/alex/Documents
3.3 Extensions de fichier
L'extension, c'est ce qui suit le dernier point : .txt, .java, .md, .png.
Vérité importante : l'extension est une convention, pas une garantie. Elle sert surtout au système à choisir quel programme ouvrir. Renommer photo.png en photo.txt ne transforme pas l'image en texte — ça embrouille juste tout le monde.
| Extension | Contenu |
|---|---|
.txt |
texte brut |
.md |
texte au format Markdown (comme cette fiche) |
.java |
code source Java |
.class |
bytecode Java (binaire) |
.jar |
archive de programme Java |
.json, .xml, .yml |
texte structuré (configuration, données) |
.png, .jpg, .pdf |
fichiers binaires |
⚠️ À faire tout de suite sous Windows : l'Explorateur cache les extensions par défaut. Tu vois
notesalors que le fichier s'appellenotes.txt. Va dans l'Explorateur → onglet Affichage → coche Extensions de noms de fichiers. Sur macOS : Finder → Réglages → Avancé → Afficher tous les noms d'extension.
3.4 Règles de nommage (adopte-les maintenant)
- Pas d'espaces :
mon projett'obligera à écrire"mon projet"oumon\ projetau terminal. Utilisemon-projetoumon_projet. - Pas d'accents ni de caractères spéciaux dans les noms de dossiers de code.
- Minuscules pour les dossiers ; en Java, les fichiers de classe commencent par une majuscule (
Bonjour.java) — tu verras pourquoi plus tard. - La casse compte sous Linux :
Notes.txtetnotes.txtsont deux fichiers différents. Sous Windows et macOS, en général non. Fais comme si elle comptait toujours : c'est le seul réflexe qui marche partout.
4. Le terminal
4.1 Pourquoi apprendre ça, alors qu'il y a des fenêtres ?
Question légitime. Cinq raisons :
- C'est précis et reproductible. Une commande peut être copiée, collée, partagée, mise dans un fichier. « Clique en haut à droite sur le petit bouton » ne se partage pas.
- C'est plus rapide pour les tâches répétitives : renommer 200 fichiers prend une commande.
- Les outils de développement vivent là. Git, Maven, la compilation Java, les serveurs, Docker : ils se pilotent au terminal.
- Les serveurs n'ont pas d'écran. Quand ton application sera en ligne, tu n'auras qu'un terminal.
- Toute la documentation du monde est écrite comme ça. Les tutoriels te donneront des commandes.
🧘 Rassure-toi : tu n'as pas besoin de connaître 300 commandes. Quinze couvrent 95 % du quotidien. Elles sont ci-dessous.
4.2 Comment ouvrir un terminal
| Système | Comment |
|---|---|
| Windows | Menu Démarrer → tape PowerShell → Windows PowerShell ou Terminal. Encore mieux : installe Windows Terminal depuis le Microsoft Store. |
| macOS | Cmd + Espace → tape Terminal → Entrée. |
| Linux | Ctrl + Alt + T, ou cherche « Terminal » dans les applications. |
| Partout | Depuis VS Code : menu Terminal → Nouveau terminal, ou Ctrl + ` (Cmd + `` `` sur Mac). C'est ce que tu utiliseras le plus. |
💡 Conseil fort pour Windows : installe WSL (Windows Subsystem for Linux, un Linux intégré à Windows) ou Git Bash (livré avec Git). Tu pourras alors taper les mêmes commandes que 90 % des tutoriels du web, au lieu de traduire en PowerShell à chaque fois. Pour WSL, une seule commande dans un PowerShell administrateur :
wsl --install
4.3 Lire l'invite de commande
Ce que tu vois avant ton curseur s'appelle l'invite (prompt) :
alex@portable:~/formation-java$
alex: ton nom d'utilisateurportable: le nom de la machine~/formation-java: où tu es (le dossier courant) — l'information la plus utile$: « à toi de jouer »
Sous PowerShell :
PS C:\Users\Alex\formation-java>
Une commande s'écrit toujours ainsi :
commande [options] [arguments]
ls -l exos/
│ │ └── sur quoi j'agis
│ └── comment (les options commencent par - ou --)
└── quoi
4.4 Les commandes essentielles
Tableau de correspondance. La colonne « Unix » vaut pour macOS, Linux, WSL et Git Bash.
| Je veux… | Unix (macOS / Linux) | Windows PowerShell |
|---|---|---|
| Savoir où je suis | pwd |
pwd (alias de Get-Location) |
| Lister les fichiers | ls |
ls ou dir (alias de Get-ChildItem) |
| Lister en détail | ls -l |
ls (détaillé par défaut) |
| Lister les fichiers cachés | ls -la |
ls -Force |
| Changer de dossier | cd exos |
cd exos |
| Remonter d'un cran | cd .. |
cd .. |
| Aller chez moi | cd ~ ou cd |
cd ~ |
| Créer un dossier | mkdir cours |
mkdir cours |
| Créer une arborescence | mkdir -p a/b/c |
mkdir a/b/c |
| Créer un fichier vide | touch notes.txt |
New-Item notes.txt |
| Afficher un fichier | cat notes.txt |
cat notes.txt (alias Get-Content) |
| Lire un gros fichier page par page | less notes.txt (q pour quitter) |
cat notes.txt | more |
| Écrire dans un fichier (écrase) | echo "salut" > notes.txt |
Set-Content notes.txt "salut" |
| Ajouter à la fin | echo "salut" >> notes.txt |
Add-Content notes.txt "salut" |
| Copier | cp a.txt b.txt |
cp a.txt b.txt (alias Copy-Item) |
| Copier un dossier | cp -r cours/ sauvegarde/ |
cp -Recurse cours\ sauvegarde\ |
| Déplacer / renommer | mv a.txt b.txt |
mv a.txt b.txt (alias Move-Item) |
| Supprimer un fichier | rm a.txt |
rm a.txt (alias Remove-Item) |
| Supprimer un dossier | rm -r vieux/ |
rm -Recurse vieux\ |
| Chercher des fichiers | find . -name "*.java" |
ls -Recurse -Filter *.java |
| Chercher du texte dans des fichiers | grep -rn "TODO" . |
Select-String -Path *.* -Pattern "TODO" |
| Effacer l'écran | clear (ou Ctrl+L) |
cls |
| Aide sur une commande | man ls ou ls --help |
Get-Help ls |
| Historique des commandes | history |
Get-History |
| Arrêter un programme bloqué | Ctrl + C |
Ctrl + C |
⚠️ Sous Windows,
findexiste mais ne fait pas la même chose : c'est un outil de recherche de texte hérité de MS-DOS, pas un chercheur de fichiers. D'où l'intérêt de WSL ou Git Bash pour éviter les pièges de ce genre.
4.5 Séance pratique guidée
Ouvre un terminal et tape ceci, ligne par ligne. Lis la sortie à chaque fois avant de continuer.
pwd # Où suis-je ?
cd ~ # Je rentre chez moi
mkdir -p formation-java/cours formation-java/exos
cd formation-java
pwd # Vérifie : tu dois voir ".../formation-java"
ls # Tu dois voir : cours exos
echo "Jour 1 : je pose les fondations." > journal.md
cat journal.md # Affiche le contenu
echo "J'ai créé mon arborescence." >> journal.md
cat journal.md # Deux lignes maintenant
cp journal.md cours/copie-journal.md
ls cours
mv cours/copie-journal.md cours/journal-sauvegarde.md
ls cours
rm cours/journal-sauvegarde.md
ls cours # Vide à nouveau
cd .. # Je remonte
pwd
Les équivalents PowerShell des trois lignes qui diffèrent :
Set-Content journal.md "Jour 1 : je pose les fondations."
Add-Content journal.md "J'ai créé mon arborescence."
cp journal.md cours\copie-journal.md
4.6 Les trois raccourcis qui changent la vie
-
La touche
Tab(complétion automatique). Tapecd formpuisTab: le terminal complète enformation-java/. Gains : rapidité et zéro faute de frappe. Si rien ne se passe, c'est qu'il y a plusieurs possibilités : appuie deux fois surTabpour les voir. ➡️ Règle d'or : ne tape jamais un nom de fichier en entier. Tape 3 lettres etTab. -
Les flèches ↑ et ↓ (historique). ↑ rappelle la commande précédente. Idéal pour corriger une faute de frappe sans tout retaper. Sous Unix,
Ctrl + Rlance une recherche dans l'historique : tapemkdiret il retrouve ta dernière commandemkdir. -
Ctrl + C(stop). Un programme tourne en boucle, le terminal ne répond plus ?Ctrl + Cl'interrompt. Ce n'est pas « copier » ici.
4.7 Sécurité : les commandes qui font mal
rm ne met pas à la corbeille. Ce qui est supprimé est supprimé.
rm -rf dossier/ # supprime dossier et TOUT son contenu, sans confirmation
-r= recursive (descend dans les sous-dossiers)-f= force (ne pose aucune question)
Trois règles de survie :
- Fais toujours un
lsavant unrm, pour vérifier ce qui va disparaître. - Ne tape jamais
rm -rf /nirm -rf ~nirm -rf *sans avoir vérifié où tu es (pwd). - Méfie-toi des commandes copiées depuis internet sans les comprendre. Une commande est du pouvoir : tu dois savoir ce qu'elle fait avant de valider.
Sous Unix, tu peux demander confirmation : rm -i fichier.txt.
5. Texte, binaire, encodage et fins de ligne
5.1 Texte vs binaire
Tous les fichiers sont des suites d'octets (des nombres de 0 à 255). Ce qui change, c'est l'interprétation :
- Un fichier texte : chaque octet (ou petit groupe d'octets) représente un caractère. Tu peux l'ouvrir dans un éditeur et le lire.
.java,.txt,.md,.json,.csv. - Un fichier binaire : les octets représentent autre chose (des pixels, du son, des instructions machine). Ouvert dans un éditeur, ça donne du charabia.
.png,.pdf,.class,.jar.
Tout ton code sera du texte brut. C'est une bonne nouvelle : léger, lisible, comparable ligne à ligne, versionnable avec Git.
5.2 L'encodage : UTF-8
Un encodage est la table de correspondance entre les caractères et les octets. Comme un code secret partagé : si l'expéditeur écrit avec une table et le lecteur lit avec une autre, ça donne n'importe quoi.
Tu as sûrement déjà vu ceci :
Ce que tu voulais : Café à Noël
Ce que tu vois : Café à Noël
C'est un fichier écrit en UTF-8, lu comme s'il était en Latin-1. Le fameux mojibake.
UTF-8 est l'encodage universel d'aujourd'hui. Il sait représenter tous les caractères de toutes les langues, plus les emojis. Sa finesse : les caractères courants (a-z, chiffres) prennent 1 octet, les accents 2 octets, certains idéogrammes ou emojis 3 ou 4.
Démonstration (testée) : le mot café suivi d'un saut de ligne.
printf "caf\xc3\xa9\n" > utf8.txt
wc -c utf8.txt # 6 octets
wc -m utf8.txt # 5 caractères (c, a, f, é, saut de ligne)
file utf8.txt # utf8.txt: Unicode text, UTF-8 text
5 caractères mais 6 octets : le é en coûte deux. Retiens ça : un caractère ≠ un octet.
✅ Règle absolue pour toute ta carrière : enregistre TOUS tes fichiers en UTF-8. VS Code le fait par défaut. Vérifie l'indication en bas à droite de la fenêtre : elle doit dire
UTF-8.
5.3 Les fins de ligne
Comment un fichier sait-il où une ligne s'arrête ? Par un caractère invisible. Et là, deux traditions se sont affrontées :
| Nom | Caractères | Systèmes |
|---|---|---|
| LF | \n (saut de ligne) |
macOS, Linux, et le web |
| CRLF | \r\n (retour chariot + saut de ligne) |
Windows |
C'est un héritage des machines à écrire : \r ramenait le chariot à gauche, \n faisait descendre le papier d'une ligne.
Conséquences concrètes : un fichier Windows ouvert dans un vieil éditeur Unix affiche des ^M en bout de ligne, et Git peut signaler qu'un fichier a « entièrement changé » alors que tu n'as touché à rien.
printf "a\r\nb\r\n" > crlf.txt
file crlf.txt # crlf.txt: ASCII text, with CRLF line terminators
cat -A crlf.txt # a^M$ / b^M$ ← le ^M est le \r invisible
✅ Réglage recommandé dans VS Code : fins de ligne
LFpartout, même sous Windows. En bas à droite de la fenêtre, un indicateur afficheLFouCRLF; on peut cliquer dessus pour changer.
6. L'éditeur : VS Code
6.1 Installation
- Va sur https://code.visualstudio.com et télécharge la version de ton système.
- Sous Windows, pendant l'installation, coche :
- « Ajouter l'action Ouvrir avec Code au menu contextuel »
- « Ajouter à PATH » (indispensable : ça permet de taper
code .au terminal)
- Lance-le. Choisis un thème sombre ou clair — le sombre fatigue moins les yeux le soir.
Le geste fondamental : dans VS Code, on n'ouvre pas des fichiers isolés, on ouvre un dossier de projet (Fichier → Ouvrir le dossier…). C'est ce dossier qui devient ton espace de travail. Depuis le terminal :
cd ~/formation-java
code . # le "." veut dire : ouvre le dossier courant
6.2 Extensions utiles (à installer maintenant)
Icône des extensions dans la barre de gauche (les 4 carrés), ou Ctrl+Shift+X.
| Extension | Pourquoi |
|---|---|
| Extension Pack for Java (Microsoft) | Le pack essentiel : coloration, autocomplétion, débogueur, exécution des tests, Maven. Le seul vraiment indispensable pour Java. |
| Error Lens | Affiche le message d'erreur à côté de la ligne fautive, au lieu de le cacher dans un onglet. Énorme gain pour un débutant. |
| French Language Pack for VS Code | Interface en français (facultatif ; beaucoup préfèrent rester en anglais, car les tutoriels le sont). |
| Code Spell Checker | Repère les fautes de frappe dans tes noms de variables. |
| EditorConfig for VS Code | Fait respecter les règles de formatage d'un projet. |
| GitLens | Affiche qui a modifié quoi, quand. Utile à partir de la fiche Git. |
Ne te charge pas : ces six-là suffisent largement pour commencer. Une extension de trop ralentit l'éditeur.
6.3 Réglages à faire tout de suite
Ctrl + , (Cmd + , sur Mac) ouvre les réglages. Cherche et règle :
| Réglage | Valeur | Pourquoi |
|---|---|---|
Files: Auto Save |
afterDelay |
Ne plus jamais perdre son travail. |
Files: Encoding |
utf8 |
L'encodage universel. |
Files: Eol |
\n |
Fins de ligne LF partout. |
Editor: Format On Save |
coché | Ton code est reformaté proprement à chaque enregistrement. |
Editor: Font Size |
14–16 | Ton confort d'abord. |
Editor: Render Whitespace |
boundary |
Voir les espaces et tabulations invisibles. |
6.4 Les raccourcis clavier à connaître
Sur Mac, remplace Ctrl par Cmd et Alt par Option.
| Raccourci | Effet |
|---|---|
Ctrl + S |
Enregistrer. Le plus important de tous. |
Ctrl + Shift + P |
Palette de commandes : tape ce que tu veux faire, en toutes lettres. Si tu ne retiens qu'un raccourci, c'est celui-là. |
Ctrl + P |
Ouvrir un fichier par son nom, en 2 secondes. |
Ctrl + ` |
Ouvrir / fermer le terminal intégré. |
Ctrl + / |
Commenter ou décommenter la ligne sélectionnée. |
Alt + ↑ / ↓ |
Déplacer la ligne courante vers le haut / bas. |
Shift + Alt + ↓ |
Dupliquer la ligne courante. |
Ctrl + D |
Sélectionner l'occurrence suivante du mot (édition multiple). |
Ctrl + F / Ctrl + H |
Rechercher / Remplacer dans le fichier. |
Ctrl + Shift + F |
Rechercher dans tout le projet. |
F2 |
Renommer une variable partout dans le projet, proprement. |
Ctrl + Z / Ctrl + Y |
Annuler / Rétablir. |
Ctrl + B |
Afficher / masquer la barre latérale. |
🎯 Méthode d'apprentissage : n'essaie pas de tous les mémoriser. Choisis-en trois cette semaine, colle-les sur un post-it, force-toi à les utiliser. La semaine suivante, trois autres.
7. Lire une erreur, chercher, demander de l'aide
C'est la compétence qui sépare celui qui progresse de celui qui abandonne. Ce n'est pas un talent, c'est une méthode.
7.1 Lire un message d'erreur
Un message d'erreur n'est pas une punition. C'est l'ordinateur qui t'explique, avec ses moyens limités, ce qui l'a bloqué. Il contient presque toujours la réponse.
Exemple au terminal :
cd: no such file or directory: formaton-java
Décortiquons : cd (la commande concernée) + no such file or directory (« ce dossier n'existe pas ») + formaton-java (le nom fautif). En le lisant vraiment, tu vois la faute de frappe : formaton au lieu de formation. Solution : Tab la prochaine fois.
Exemple Java (tu en verras beaucoup) :
Exception in thread "main" java.lang.NullPointerException
at Panier.calculerTotal(Panier.java:23)
at Main.main(Main.java:8)
Les 4 questions à se poser, dans l'ordre :
- Quel type d'erreur ?
NullPointerException. - Dans quel fichier et à quelle ligne ?
Panier.java, ligne 23. C'est là qu'il faut regarder. - Comment y est-on arrivé ? Ça se lit de bas en haut :
Main.mainligne 8 a appelécalculerTotal, qui a planté. - Que dit la phrase, mot à mot ? Traduis si besoin. Ici : « pointeur nul » = tu as essayé d'utiliser quelque chose qui n'existe pas encore.
🔑 Le réflexe à installer : quand une erreur apparaît, lis-la en entier, à voix haute si besoin. La panique fait sauter la lecture ; la lecture résout 70 % des erreurs.
Trois erreurs de terminal que tu croiseras :
| Message | Traduction | Cause habituelle |
|---|---|---|
command not found / n'est pas reconnu |
La commande n'existe pas | Faute de frappe, ou programme non installé / absent du PATH |
No such file or directory |
Ce fichier n'existe pas | Faute de frappe, ou tu n'es pas dans le bon dossier (pwd !) |
Permission denied |
Droits insuffisants | Fichier protégé, ou il faut sudo (à manier avec prudence) |
7.2 Bien chercher sur internet
- Colle le message d'erreur exact dans la recherche, entre guillemets.
- Retire tout ce qui t'est personnel : chemins (
/home/alex/...), noms de tes variables. Garde la partie générique. - Ajoute le contexte : le langage et l'outil.
java "NullPointerException" ArrayListvaut mieux queça marche pas. - Cherche en anglais. Il y a 20 fois plus de réponses.
how to+ ton besoin. - Regarde la date des réponses : un billet de 2011 sur Java peut être périmé.
- Privilégie : la documentation officielle > Stack Overflow (réponse validée) > blogs récents > vidéos.
7.3 Lire la documentation
La doc fait peur au début parce qu'elle est dense. Trois conseils :
- Ne la lis pas en entier. Utilise
Ctrl+Fpour chercher ce que tu veux faire. - Apprends à lire une signature. Exemple Java :
int indexOf(String str)se lit : « cette méthode s'appelleindexOf, elle prend un texte en entrée, et rend un nombre entier ». Le début = ce qui sort, le nom = ce que ça fait, les parenthèses = ce qui entre. - Descends jusqu'aux exemples. La plupart des docs finissent par des exemples de code ; commence par eux, remonte à la théorie ensuite.
7.4 Poser une bonne question technique
Que ce soit à un humain, sur un forum ou à une IA, la même structure fonctionne :
1. CONTEXTE : ce que j'essaie de faire, et sur quel système.
2. CE QUE J'AI FAIT : la commande ou le code exact (copié-collé, pas résumé).
3. CE QUE J'ATTENDAIS : le résultat espéré.
4. CE QUI S'EST PASSÉ : le message d'erreur COMPLET, en texte.
5. CE QUE J'AI DÉJÀ ESSAYÉ : montre que tu as cherché.
6. MA QUESTION PRÉCISE : une seule question, claire.
❌ Mauvaise question : « Bonjour, mon programme Java marche pas, aidez-moi svp. » (Personne ne peut répondre. Aucune information.)
✅ Bonne question :
Bonjour ! Je débute en Java, sous Windows 11 avec VS Code. J'essaie de compiler un fichier
Bonjour.javaqui contient juste un affichage. Je tapejavac Bonjour.javadans le terminal, depuis le dossierC:\Users\Alex\formation-java\exos. J'attendais qu'un fichierBonjour.classsoit créé. À la place, j'obtiens :javac : le terme « javac » n'est pas reconnu comme nom d'applet de commande...J'ai vérifié que Java est installé (java -versionfonctionne et affiche 21). Ma question : pourquoijavafonctionne mais pasjavac?
💡 Le canard en plastique : avant de poser ta question, explique ton problème à voix haute à un objet posé sur ton bureau. Dans 1 cas sur 3, tu trouves la réponse en formulant la question. C'est une technique réelle et célèbre (rubber duck debugging).
8. Pièges courants de débutant
- Taper une commande sans savoir où on est. Toujours
pwdpuislsen cas de doute. La moitié des « ça ne marche pas » viennent de là. - Écrire les noms de fichiers à la main. Utilise
Tab. Toujours. - Mettre des espaces et des accents dans les noms.
Mon Dossier Préféré/te posera des problèmes pendant des mois.mon-dossier-prefere/. - Confondre
>et>>.>écrase le fichier.>>ajoute à la fin. Une confusion = un fichier perdu. - Ne pas lire le message d'erreur. Le fermer d'un clic paniqué, puis dire « il y a une erreur ». Laquelle ? La réponse est dedans.
- Copier des commandes d'internet sans les comprendre, en particulier avec
sudoourm -rf. - Croire que la casse ne compte pas.
Bonjour.java≠bonjour.java. En Java, ce détail te coûtera une heure un jour. - Oublier d'enregistrer puis se demander pourquoi le programme ne change pas de comportement.
Ctrl+S. - Ouvrir un fichier isolé dans VS Code au lieu d'ouvrir le dossier du projet : la moitié des fonctionnalités (recherche globale, navigation, outils Java) deviennent inertes.
- Croire qu'il faut tout mémoriser. Les développeurs professionnels cherchent tous les jours. La compétence n'est pas de savoir par cœur, c'est de savoir retrouver.
9. Exercices
Fais-les dans l'ordre, au terminal. Écris tes réponses dans un fichier avant de regarder les corrigés — c'est là que l'apprentissage se produit.
Exercice 1 — Se repérer (⭐)
Ouvre un terminal. Affiche le dossier où tu te trouves. Liste son contenu, d'abord simplement, puis en incluant les fichiers cachés. Note dans ton carnet : quel est le chemin absolu de ton dossier personnel ?
Exercice 2 — Construire une arborescence (⭐)
Crée, dans ton dossier personnel, cette structure en une seule commande si possible :
formation-java/
├── cours/
├── exos/
│ ├── semaine-01/
│ └── semaine-02/
└── notes/
Vérifie ensuite que tout est bien là.
Exercice 3 — Créer et lire un fichier (⭐⭐)
Dans formation-java/notes/, crée un fichier objectifs.md. Écris dedans la ligne Devenir developpeur Java. Ajoute ensuite une deuxième ligne Objectif : 10h par semaine sans effacer la première. Affiche le résultat.
Exercice 4 — Copier, renommer, déplacer, supprimer (⭐⭐)
- Copie
objectifs.mdenobjectifs-sauvegarde.mddans le même dossier. - Déplace la copie dans
formation-java/cours/. - Renomme-la en
archive-objectifs.md. - Vérifie le contenu de chaque dossier.
- Supprime le fichier d'archive.
Exercice 5 — Chemins relatifs (⭐⭐⭐)
Place-toi dans formation-java/exos/semaine-01/. Sans jamais écrire de chemin absolu et sans revenir à ton dossier personnel :
- Affiche le contenu de
notes/objectifs.md. - Liste le contenu du dossier
cours/. - Crée un fichier
rappel.txtdansexos/semaine-02/.
Exercice 6 — Chercher (⭐⭐⭐)
Depuis formation-java/ :
- Trouve tous les fichiers dont le nom finit par
.md, y compris dans les sous-dossiers. - Trouve tous les fichiers contenant le mot
Java, en affichant le numéro de ligne. - Refais la recherche sans tenir compte des majuscules.
Exercice 7 — Encodage et fins de ligne (⭐⭐⭐)
- Crée un fichier
accents.txtcontenantCafé à Noël. - Ouvre-le dans VS Code et vérifie, en bas à droite, l'encodage (
UTF-8) et les fins de ligne (LFouCRLF). - Compte le nombre d'octets et le nombre de caractères. Pourquoi les deux nombres diffèrent-ils ?
Exercice 8 — VS Code (⭐⭐)
- Ouvre le dossier
formation-javadans VS Code depuis le terminal. - Installe l'extension Error Lens.
- Active l'enregistrement automatique.
- Ouvre le terminal intégré au clavier, et affiche le dossier courant.
- Ouvre
objectifs.mdsans la souris, en 3 secondes.
Exercice 9 — Lire une erreur (⭐⭐⭐)
Tape volontairement cette commande : cd dossier-qui-nexiste-pas.
Recopie le message obtenu. Réponds : quelle commande a échoué ? Quel est le problème selon la machine ? Que ferais-tu pour le corriger ?
Exercice 10 — Rédiger une question technique (⭐⭐⭐⭐)
Tu essaies d'exécuter java Bonjour.java et tu obtiens :
Error: Could not find or load main class Bonjour.
Rédige, en suivant la structure en 6 points de la section 7.4, la question que tu poserais sur un forum. Vise 8 à 12 lignes.
10. Corrigés commentés
Corrigé 1 — Se repérer
pwd # ex. : /home/alex (Unix) ou C:\Users\Alex (PowerShell)
ls # liste simple
ls -la # -l = format long (droits, taille, date), -a = inclut les fichiers cachés
PowerShell : pwd, ls, ls -Force.
Commentaire : les fichiers cachés commencent par un point sous Unix (.bashrc, .git). Ils ne sont pas secrets, juste discrets : ce sont des fichiers de configuration. Tu croiseras beaucoup .git et .gitignore.
Corrigé 2 — Construire une arborescence
cd ~
mkdir -p formation-java/cours formation-java/exos/semaine-01 formation-java/exos/semaine-02 formation-java/notes
ls -R formation-java
PowerShell :
cd ~
mkdir formation-java\cours, formation-java\exos\semaine-01, formation-java\exos\semaine-02, formation-java\notes
ls -Recurse formation-java
Commentaire : l'option -p (parents) crée tous les dossiers intermédiaires manquants et ne râle pas si un dossier existe déjà. Sans elle, mkdir a/b/c échoue si a n'existe pas. ls -R affiche récursivement, c'est-à-dire en descendant dans chaque sous-dossier.
Corrigé 3 — Créer et lire un fichier
cd ~/formation-java/notes
echo "Devenir developpeur Java" > objectifs.md
echo "Objectif : 10h par semaine" >> objectifs.md
cat objectifs.md
PowerShell :
cd ~\formation-java\notes
Set-Content objectifs.md "Devenir developpeur Java"
Add-Content objectifs.md "Objectif : 10h par semaine"
cat objectifs.md
Commentaire : c'est LE point à ne pas rater. > écrase tout le contenu existant ; >> ajoute à la fin. Si tu avais tapé > deux fois, la première ligne aurait disparu.
Note pour Windows : avec PowerShell 5.1, la redirection > écrit en UTF-16, ce qui surprend. Set-Content et Add-Content sont plus prévisibles, et PowerShell 7 écrit en UTF-8 par défaut.
Corrigé 4 — Copier, renommer, déplacer, supprimer
cd ~/formation-java/notes
cp objectifs.md objectifs-sauvegarde.md # 1. copie
mv objectifs-sauvegarde.md ../cours/ # 2. déplacement
cd ../cours
mv objectifs-sauvegarde.md archive-objectifs.md # 3. renommage
ls ../notes # 4. vérifications
ls .
rm archive-objectifs.md # 5. suppression
ls .
Commentaire : découverte importante — mv sert à la fois à déplacer et à renommer. C'est logique : renommer, c'est déplacer vers un nouveau nom dans le même dossier. Réflexe de sécurité : un ls avant chaque rm.
Corrigé 5 — Chemins relatifs
cd ~/formation-java/exos/semaine-01
cat ../../notes/objectifs.md # 1. remonter 2 crans, puis descendre dans notes
ls ../../cours # 2. remonter 2 crans, puis regarder cours
touch ../semaine-02/rappel.txt # 3. remonter 1 cran, descendre dans semaine-02
ls ../semaine-02
Commentaire : compte les crans à voix haute. Depuis semaine-01 : un .. mène à exos, deux .. mènent à formation-java. Ensuite tu redescends. C'est exactement la logique d'un plan de métro : remonter à la station de correspondance, puis repartir sur l'autre ligne.
PowerShell : mêmes chemins, New-Item ..\semaine-02\rappel.txt remplace touch.
Corrigé 6 — Chercher
cd ~/formation-java
find . -name "*.md" # 1. tous les fichiers .md, récursivement
grep -rn "Java" . # 2. -r = récursif, -n = numéro de ligne
grep -rni "java" . # 3. -i = insensible à la casse
Résultat typique de la commande 2 :
./notes/objectifs.md:1:Devenir developpeur Java
Lecture : fichier:numéro de ligne:contenu de la ligne.
PowerShell :
ls -Recurse -Filter *.md
Select-String -Path .\* -Pattern "Java" -Recurse
Select-String -Path .\* -Pattern "java" -Recurse # insensible à la casse par défaut
Commentaire : retiens le couple find / grep — find cherche des fichiers par leur nom, grep cherche du texte à l'intérieur des fichiers. Ce sont deux des outils les plus utilisés d'une carrière entière. Les guillemets autour de "*.md" évitent que le terminal ne remplace lui-même l'étoile avant que find ne la voie.
Corrigé 7 — Encodage et fins de ligne
echo "Café à Noël" > accents.txt
file accents.txt # → UTF-8 text
wc -c accents.txt # 15 octets
wc -m accents.txt # 12 caractères
Pourquoi la différence ? La chaîne Café à Noël compte 11 caractères, plus le saut de ligne final = 12 caractères. Mais é, à et ë coûtent 2 octets chacun en UTF-8 : 12 + 3 = 15 octets.
C'est la démonstration parfaite qu'un caractère n'est pas un octet. Le jour où un texte s'affichera bizarrement, tu sauras que c'est une histoire d'encodage.
Dans VS Code, la barre du bas affiche UTF-8 et LF : clique dessus pour convertir si nécessaire.
Corrigé 8 — VS Code
cd ~/formation-java
code .
Ctrl+Shift+X→ tape « Error Lens » → Install.Ctrl+,→ cherche « auto save » → metsafterDelay.Ctrl + `pour ouvrir le terminal intégré, puispwd. Il démarre déjà dans le dossier du projet : c'est tout l'intérêt.Ctrl+P, tapeobj, Entrée.
Commentaire : si code . répond « commande introuvable » sous macOS, ouvre VS Code, fais Cmd+Shift+P, cherche « Shell Command: Install 'code' command in PATH » et valide. Sous Windows, réinstalle en cochant « Ajouter à PATH ».
Corrigé 9 — Lire une erreur
Message obtenu (variantes selon le système) :
bash: cd: dossier-qui-nexiste-pas: No such file or directory
- Quelle commande a échoué ?
cd. - Quel est le problème ? « No such file or directory » = aucun fichier ni dossier de ce nom à cet endroit.
- Comment corriger ? Trois pistes, dans l'ordre : (1)
pwd— suis-je au bon endroit ? (2)ls— le dossier existe-t-il vraiment, et sous quelle orthographe ? (3) retaper en utilisantTab, ce qui rend la faute de frappe impossible.
Commentaire : note bien le format programme: commande: sujet: problème. Presque tous les messages Unix suivent ce schéma. Une fois que tu le vois, tu les lis tous.
Corrigé 10 — Rédiger une question technique
Exemple de réponse attendue :
Contexte — Je débute en Java. Je suis sous Windows 11, avec VS Code et le JDK 21. Ce que j'ai fait — Dans le dossier
formation-java\exos, j'ai un fichierBonjour.javacontenant une classeBonjouravec une méthodemain. Je lancejava Bonjour.javadans le terminal intégré de VS Code. Ce que j'attendais — L'affichage de « Bonjour Alex » dans le terminal. Ce qui s'est passé — J'obtiens :Error: Could not find or load main class Bonjour. Ce que j'ai déjà essayé —java -versionfonctionne et affiche 21. J'ai vérifié aveclsqueBonjour.javaest bien dans le dossier courant. J'ai cherché l'erreur sur internet, j'ai vu qu'elle est souvent liée au nom de la classe ou au dossier, mais je ne comprends pas lequel des deux s'applique ici. Ma question — Le nom du fichier doit-il correspondre exactement au nom de la classe, majuscule comprise, et est-ce que cela peut expliquer ce message ?
Commentaire : ce qui rend cette question bonne, ce n'est pas la politesse, c'est qu'elle est reproductible. Une personne qui te lit peut refaire exactement ce que tu as fait. Et bien souvent, en l'écrivant, tu trouves toi-même : ici, l'erreur venait probablement d'un fichier nommé bonjour.java avec une classe Bonjour.
11. Mini-projet de fin de fiche — « Mon QG de formation »
Objectif : construire, uniquement au terminal puis dans VS Code, l'espace de travail que tu utiliseras pendant toute ta formation. À la fin, tu auras un vrai lieu à toi.
Étape 1 — L'arborescence. Crée dans ton dossier personnel :
formation-java/
├── 01-fondations/
├── 02-algorithmique/
├── 03-java-bases/
├── notes/
│ └── aide-memoire-terminal.md
├── journal-de-bord.md
└── README.md
Étape 2 — Le journal de bord. Crée journal-de-bord.md au terminal, puis ouvre-le dans VS Code et remplis-le sur ce modèle :
# Journal de bord — Formation Java
## Semaine 1
### Ce que j'ai appris
-
### Ce qui m'a bloqué
-
### Comment je m'en suis sortie
-
### Question à creuser
-
Étape 3 — L'aide-mémoire. Dans notes/aide-memoire-terminal.md, écris avec tes propres mots un tableau des 15 commandes de la section 4.4 : la commande, ce qu'elle fait, un exemple concret que tu as réellement tapé. Ne recopie pas cette fiche : reformule. C'est la reformulation qui ancre.
Étape 4 — Le README. Dans README.md, écris en 10 lignes : qui tu es, ton objectif, ton rythme hebdomadaire, la date de début. Tu le reliras dans six mois, et ça fera un drôle d'effet.
Étape 5 — Vérification finale. Depuis formation-java/, prouve que tout est en place :
ls -R # l'arborescence complète
find . -name "*.md" # tous tes fichiers markdown
grep -rn "Java" . # où apparaît le mot Java
Critères de réussite :
- [ ] L'arborescence est créée sans une seule faute de frappe (utilise
Tab). - [ ] Aucun nom de dossier ne contient d'espace ni d'accent.
- [ ] Les 3 fichiers
.mdexistent et contiennent du texte. - [ ] Tous sont en UTF-8 (vérifié dans la barre du bas de VS Code).
- [ ] Tu peux ouvrir
journal-de-bord.mden 3 secondes au clavier (Ctrl+P). - [ ] Tu sais expliquer à voix haute la différence entre
>et>>.
⏱️ Compte 1 h à 1 h 30. Si tu bloques, relis la section concernée avant de chercher ailleurs.
12. Checklist d'auto-évaluation — « Je sais faire… »
Coche honnêtement. Tout ce qui n'est pas coché mérite une relecture ciblée, pas de la culpabilité.
Comprendre la machine
- [ ] J'explique avec mes mots ce qu'est un programme.
- [ ] Je distingue compilation et interprétation, et je sais où Java se place.
- [ ] Je sais ce que fait le CPU, la RAM, le disque, et pourquoi on perd son travail quand on n'enregistre pas.
- [ ] Je sais ce qu'est la JVM et pourquoi elle rend Java portable.
Les fichiers
- [ ] Je dessine l'arborescence de mon dossier de formation de mémoire.
- [ ] Je distingue chemin absolu et chemin relatif, et je sais convertir l'un en l'autre.
- [ ] Je sais ce que valent
.,..et~. - [ ] Je nomme mes fichiers sans espaces ni accents, sans y penser.
Le terminal
- [ ] Je sais toujours où je suis (
pwd) et ce qu'il y a autour (ls). - [ ] Je navigue avec
cden chemins relatifs. - [ ] Je crée, copie, déplace, renomme, supprime des fichiers et des dossiers.
- [ ] Je lis un fichier avec
catet j'écris dedans avec>et>>, en connaissant la différence. - [ ] Je cherche un fichier avec
findet du texte avecgrep. - [ ] J'utilise
Tabpar réflexe, et ↑ pour rappeler mes commandes. - [ ] Je sais interrompre un programme avec
Ctrl+C. - [ ] Je connais les dangers de
rm -rfet je vérifie avant de supprimer.
Texte et encodage
- [ ] Je distingue fichier texte et fichier binaire.
- [ ] Je sais ce qu'est UTF-8 et pourquoi
écoûte 2 octets. - [ ] Je sais ce que sont LF et CRLF, et je vois l'indicateur dans VS Code.
VS Code
- [ ] J'ouvre un dossier de projet, pas un fichier isolé.
- [ ] J'ai installé le pack Java et Error Lens.
- [ ] J'utilise
Ctrl+S,Ctrl+P,Ctrl+Shift+PetCtrl+`sans réfléchir. - [ ] J'ouvre le terminal intégré depuis VS Code.
Autonomie
- [ ] Je lis un message d'erreur en entier avant de réagir.
- [ ] J'identifie le fichier et la ligne dans une erreur Java.
- [ ] Je formule une recherche internet efficace, en anglais.
- [ ] Je rédige une question technique complète en 6 points.
- [ ] J'accepte de ne pas tout retenir, parce que je sais retrouver.
🎁 Bonus : ta feuille de route mentale
Fiche 01 ─── les fondations (tu es ici)
│
Fiche 02 ─── algorithmique et logique (le raisonnement, sans langage)
│
Fiche 03 ─── Java : premiers pas (installation, variables, affichage)
│
└─── ... puis objets, collections, Git, tests, base de données, Spring, web
Tu viens d'apprendre le vocabulaire et les gestes du métier. Ce n'était pas encore « du code », et pourtant c'est ce que les développeurs font toute la journée : naviguer, chercher, lire des erreurs, poser des questions.
Avant de passer à la fiche 02 : remplis ton journal de bord. Note ce qui t'a surpris. Puis va prendre l'air, ton cerveau consolide pendant ce temps-là. 🌿
