Prérequis — séquence d’environnement
Prérequis auto-guidé, hors chemin noté. Ce document prépare votre environnement Java sur machine personnelle ; le cours lui-même se déroule dans l’image du cours, qui ne demande aucune installation.
Les leçons du cours renvoient ici pour tout ce qui concerne la machine. Parcourez ce document dans l’ordre ; la liste de contrôle finale vérifie que vous pouvez enchaîner sur les séances.
Systèmes d’exploitation cibles
Les instructions qui suivent s’adressent aux systèmes de la famille Unix (Linux, macOS) et, sous Windows, au sous-système WSL (Windows Subsystem for Linux), dont Microsoft documente l’installation. Le shell de référence est bash : il est présent dans l’image du cours ; sur votre machine, les sections qui suivent vous mettent dans un équivalent.
Installer le JDK
La voie classique : Temurin, JAVA_HOME et PATH
Pour développer en Java, un JDK (kit de développement) suffit. Le cours recommande la distribution Temurin, retenue pour ses conditions de licence — c’est aussi celle de l’image du cours, qui fournit le JDK 25.0.4 à la date d’octobre 2026. Téléchargez-le, décompressez-le dans le répertoire de votre choix, puis déclarez-le à votre shell :
export JAVA_HOME=/usr/local/jdk-25 # le chemin dépend de votre installation
export PATH="$JAVA_HOME/bin:$PATH"Ajoutez ces deux lignes à votre .bashrc (ou .zshrc) pour qu’elles s’appliquent à chaque ouverture de session. La consigne de version du cours est le JDK 25 (LTS) à la date de 2026-10 : une installation plus ancienne ne vous empêchera pas de suivre les séances, mais les observations de la leçon de mécanique (versions de bytecode, propriétés de la machine) sont calées sur l’image du cours.
Vérifiez d’abord que les variables sont définies (dans une nouvelle session, ou après source ~/.bashrc) :
echo "JAVA_HOME = $JAVA_HOME"
echo "PATH = $PATH"puis que les commandes attendues répondent bien :
java --version
javac --versionLa sortie attendue annonce la version installée et sa distribution ; sur l’image du cours, openjdk 25.0.4, édité par Eclipse Adoptium (Temurin).
Installez sur votre machine un JDK conforme à la baseline du cours (25 à la date de 2026-10), par la voie classique ou par le gestionnaire de versions ci-dessous.
SDKMan : gérer plusieurs versions
sdkman.io installe et versionne un JDK (et d’autres outils) sans que vous touchiez aux chemins système à la main :
curl -s "https://get.sdkman.io" | bash
sdk install java # la version courante de SDKMan, pas nécessairement la baseline du cours
sdk list java | grep installed # les versions présentes sur votre machinesdk list java énumère les distributions et versions disponibles ; c’est dans cette liste que vous puisez l’identifiant d’une version précise, plutôt que de le recopier d’un document qui vieillit. Pour la baseline du cours, choisissez-y un identifiant 25.* et installez-le par sdk install java <identifiant>.
Espace de travail et projet type
La structure
Rassemblez vos projets sous un unique répertoire de travail — noté $HOME/work dans la suite ; adaptez-le à vos habitudes. Chaque projet y occupe un répertoire propre, organisé en cinq sous-répertoires standards : src pour les sources, bin pour le bytecode compilé, doc pour la documentation, dist pour les archives livrables et lib pour les dépendances externes. Le premier projet du cours, java/TP1/premierprogramme, se met en place ainsi :
# (re)met à zéro le projet, sans toucher au reste de l'espace de travail
rm -rf "$HOME/work/java/TP1/premierprogramme"
mkdir -p "$HOME/work/java/TP1/premierprogramme"/{src,bin,doc,dist,lib}La classe d’exemple
Le fichier source de référence tient en une page ; vous l’écrirez directement dans votre arborescence, ligne package déjà en place — sans copie depuis un dépôt. Un paquetage est un groupement nommé de classes dont le nom se traduit en arborescence de répertoires sous src (JLS, chapitre 7 « Packages ») ; d’où la coïncidence obligatoire entre le chemin du fichier et sa ligne package.
Les commandes ci-dessous utilisent $LOGNAME, la variable d’environnement qui porte votre login de session ; vérifiez que echo "$LOGNAME" affiche bien votre login, sinon affectez-le (LOGNAME=<votre_login>). Si votre institution n’est pas univtln, transposez aussi ce préfixe ; le gabarit est fr.<domaine>.<login>.tp.tp1.
PROJET="$HOME/work/java/TP1/premierprogramme"
PAQUETAGE="fr/univtln/$LOGNAME/tp/tp1" # version chemin du paquetage
mkdir -p "$PROJET/src/$PAQUETAGE"
cat > "$PROJET/src/$PAQUETAGE/HelloWorld.java" <<EOF
package fr.univtln.${LOGNAME}.tp.tp1;
/**
* A very simple class to say Hello
* @author Emmanuel Bruno
*
*/
public class HelloWorld {
/**
* A dummy constructor
*/
public HelloWorld() { }
/**
* The entry point of the class
* @param args The first parameter is a firstname
*/
public static void main(String[] args) {
if (args.length==1)
System.out.println("Bonjour "+args[0]);
else
System.out.println("Usage : PremierProgramme [prenom]");
}
}
EOF
tree "$PROJET" # à défaut de tree : ls -R "$PROJET"La dernière commande affiche l’arborescence obtenue : les cinq répertoires standards, et HelloWorld.java au fond du chemin de votre paquetage. Si votre login contient des caractères interdits dans un identifiant Java (point, tiret), remplacez-les par des tirets bas avant d’affecter LOGNAME. Note de rejouabilité : $PROJET et $PAQUETAGE vivent le temps d’un shell ; si vous reprenez plus tard, recommencez par leurs affectations (cellule ci-dessus).
Reproducez cette structure manuellement — sans les commandes ci-dessus, dans l’éditeur ou le terminal de votre choix — et vérifiez que l’instruction package du fichier écrit porte bien votre login.
Compiler et exécuter
Depuis le répertoire du projet, la compilation indique où chercher les sources (-sourcepath), où déposer le bytecode (-d) et quel fichier compiler :
cd "$HOME/work/java/TP1/premierprogramme"
javac -sourcepath src -d bin "src/$PAQUETAGE/HelloWorld.java"L’exécution charge la classe depuis bin via le classpath et appelle sa méthode main :
java -classpath bin "fr.univtln.${LOGNAME}.tp.tp1.HelloWorld" PierreAvec un prénom en argument, la sortie attendue est Bonjour Pierre ; sans argument, le programme affiche sa ligne d’usage. Pourquoi ces trois objets (source, bytecode, JVM) obéissent à ces commandes est précisément le sujet de la leçon de mécanique ; installez ici le geste.
Compilez et exécutez la classe HelloWorld, avec et sans argument.
Empaqueter : l’archive jar
Créer et utiliser une archive
jar regroupe un ensemble de classes compilées dans un fichier unique, une archive Java. Depuis le répertoire bin, on emballe le paquetage entier dans dist :
cd "$HOME/work/java/TP1/premierprogramme/bin"
jar cvf ../dist/TP01EX01.jar frUne archive se consomme comme un répertoire de classes : elle s’ajoute au classpath, la classe à exécuter restant désignée par son nom complet :
cd "$HOME/work/java/TP1/premierprogramme"
java -cp dist/TP01EX01.jar "fr.univtln.${LOGNAME}.tp.tp1.HelloWorld" MaxGénérez l’archive de votre projet et exécutez-la.
Rendre l’archive exécutable directement
Toute archive porte des métadonnées dans l’entrée META-INF/MANIFEST.MF ; consultez-la sans dépaqueter (outil unzip ; installez-le si votre système ne le fournit pas) :
cd "$HOME/work/java/TP1/premierprogramme"
unzip -q -c dist/TP01EX01.jar META-INF/MANIFEST.MFPour que java -jar sache quelle classe lancer, le manifeste doit la déclarer sur une ligne Main-Class:. Partez du manifeste déjà présent dans l’archive, retirez ses lignes vides et ajoutez la déclaration :
cd "$HOME/work/java/TP1/premierprogramme"
unzip -q -c dist/TP01EX01.jar META-INF/MANIFEST.MF \
| sed '/^[[:space:]]*$/d' > monManifest.txt
echo "Main-Class: fr.univtln.${LOGNAME}.tp.tp1.HelloWorld" >> monManifest.txt
cat monManifest.txtLa sortie attendue montre les lignes d’origine du manifeste suivies de la ligne Main-Class: que vous venez d’ajouter — terminez toujours le fichier par un saut de ligne, ce que echo fait. Reconstruisez alors l’archive avec ce manifeste (le m de cvfm) :
cd "$HOME/work/java/TP1/premierprogramme/bin"
jar cvfm ../dist/TP01EX01.jar ../monManifest.txt fr
cd ..
java -jar dist/TP01EX01.jar PierreLa dernière commande ne demande plus ni classpath ni nom de classe : le manifeste les fournit. Oracle détaille la fabrication des manifestes dans sa documentation sur les fichiers manifest.
Rendez l’archive de votre projet exécutable et lancez-la par java -jar.
Les outils du cours : Git et bash
Dans l’image du cours, Git et bash sont déjà présents : pour travailler dans le cours, vous n’avez rien à installer. Les séquences consacrées à Git partent de ce constat et travaillent le geste, pas l’installation.
Installer Git sur votre machine personnelle
Si vous voulez sortir de l’image et versionner votre travail localement, l’installation est brève :
- Windows : Git for Windows fournit Git avec son terminal dédié (Git Bash) ; si vous avez suivi l’option WSL plus haut, Git s’y installe comme sous Linux.
- macOS :
brew install gitsi vous utilisez Homebrew ; macOS fournit d’office une version système, suffisante pour démarrer. - Linux :
sudo apt install gitsur les distributions de la famille Debian/Ubuntu, ou l’équivalent dans votre gestionnaire de paquets. - IDE : VS Code, IntelliJ et leurs similaires intègrent Git ; aucune installation supplémentaire n’est requise pour commencer.
Quelle que soit la voie, vérifiez par git --version. Pour apprendre Git au-delà du geste d’installation, la référence du cours est le livre Pro Git, disponible gratuitement en ligne.
Et pour les commentaires de documentation ?
La compétence « écrire et produire une javadoc » est enseignée dans la section « Lire la javadoc (compétence transversale du cours) » de la leçon TP — La mécanique Java, à la main (02-notebook-java-install/02_java_P_mecanique.qmd) ; elle n’est pas traitée ici.
Liste de contrôle
Vous avez terminé ce prérequis lorsque, sur votre machine :
java --versionetjavac --versionrépondent avec un JDK de la baseline du cours (25 à la date de 2026-10), ou un JDK plus récent/ancien, conscient que les observations chiffrées seront décalées ;git --versionrépond ;- le projet
premierprogrammeest compilé et exécuté depuis votre espace de travail, avec le paquetage qui porte votre login ; - l’archive du projet s’exécute par
java -jar, sans classpath ni nom de classe.
Ces quatre points acquittés, vous pouvez aborder les séances du cours — en commençant par la leçon de mécanique, qui suppose exactement cet environnement.