Module Java.1 – Introduction
Objectif
Comprendre Java : JVM (Java Virtual Machine), processus de compilation, portabilité, et écosystème pour développer des applications multiplateformes robustes.
Théorie
Qu'est-ce que Java ?
Java est un langage de programmation orienté objet développé par Sun Microsystems (maintenant Oracle) en 1995.
Caractéristiques principales :
- Orienté objet : Tout est objet (sauf les types primitifs)
- Compilé et interprété : Compilé en bytecode, exécuté par JVM
- Multiplateforme : "Write once, run anywhere"
- Typage statique : Types vérifiés à la compilation
- Gestion automatique mémoire : Garbage collector intégré
- Sécurisé : Sandboxing, pas d'accès direct à la mémoire
Utilisations principales :
- Applications d'entreprise (backend)
- Applications Android
- Applications web (Spring, Jakarta EE)
- Systèmes embarqués
- Big Data (Hadoop, Spark)
- Jeux vidéo (Minecraft)
JVM (Java Virtual Machine)
La JVM est le cœur de Java : elle exécute le bytecode Java.
Processus d'exécution
1. Code source (.java)
public class MonProgramme {
public static void main(String[] args) {
System.out.println("Bonjour");
}
}
2. Compilation en bytecode (.class)
javac MonProgramme.java
# Génère MonProgramme.class (bytecode)
3. Exécution par JVM
java MonProgramme
# JVM charge et exécute le bytecode
4. JIT Compilation (Just-In-Time)
- JVM compile le bytecode en code machine natif à l'exécution
- Optimise les parties fréquemment exécutées
- Performance proche du code compilé natif
Avantages de la JVM
"Write once, run anywhere" :
- Même code Java fonctionne sur toutes les plateformes
- Pas besoin de recompiler pour chaque OS
- Portabilité maximale
Gestion automatique mémoire :
- Garbage collector libère automatiquement la mémoire
- Pas de gestion manuelle (pas de malloc/free comme en C)
- Réduit les fuites mémoire
Sécurité :
- Sandboxing : code exécuté dans un environnement isolé
- Vérification du bytecode avant exécution
- Pas d'accès direct à la mémoire système
Performance :
- JIT compilation optimise le code à l'exécution
- Performance proche du code natif
- Optimisations adaptatives
Compilation
Processus de compilation
Étape 1 : Compilation
javac MonProgramme.java
Ce qui se passe :
- Analyse lexicale et syntaxique
- Vérification des types
- Génération du bytecode (
.class) - Vérification des erreurs
Étape 2 : Exécution
java MonProgramme
Ce qui se passe :
- JVM charge le fichier
.class - Vérification du bytecode
- Interprétation ou compilation JIT
- Exécution
Structure d'un fichier .class
Le bytecode est un format binaire :
- Instructions pour la JVM
- Métadonnées (noms de classes, méthodes)
- Constantes
Inspection du bytecode :
javap -c MonProgramme.class # Affiche le bytecode
Portabilité
Principe
Le même code Java fonctionne sur :
- Windows (JVM Windows)
- macOS (JVM macOS)
- Linux (JVM Linux)
- Autres plateformes avec JVM disponible
Exemple :
// Code identique sur toutes les plateformes
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
Compilé une fois, exécutable partout où il y a une JVM.
JVM par plateforme
Chaque plateforme a sa propre JVM :
- Windows : JVM Windows (Oracle, OpenJDK)
- macOS : JVM macOS
- Linux : JVM Linux
- Android : Dalvik/ART (variante pour mobile)
Toutes exécutent le même bytecode.
Écosystème Java
Versions Java
LTS (Long Term Support) :
- Java 8 (2014) - Très utilisé
- Java 11 (2018) - LTS
- Java 17 (2021) - LTS actuel recommandé
- Java 21 (2023) - Dernier LTS
Cycle de release :
- Nouvelle version tous les 6 mois
- LTS tous les 3 ans
- Support long terme pour LTS
Outils de développement
JDK (Java Development Kit) :
javac: Compilateurjava: Exécuteur JVMjar: Archivagejavadoc: Documentationjdb: Débogueur
IDEs populaires :
- IntelliJ IDEA : Professionnel, payant (gratuit Community)
- Eclipse : Gratuit, open source
- NetBeans : Gratuit, open source
- VS Code : Gratuit, avec extensions Java
Build tools :
- Maven : Gestion de dépendances et build
- Gradle : Build moderne et flexible
- Ant : Ancien, moins utilisé
Frameworks populaires
Backend :
- Spring : Framework complet pour applications d'entreprise
- Spring Boot : Simplifie Spring
- Jakarta EE : Standard pour applications d'entreprise
Web :
- Spring MVC : Framework web
- JSF : JavaServer Faces
- Vaadin : Framework web moderne
Tests :
- JUnit : Framework de tests unitaires
- TestNG : Alternative à JUnit
- Mockito : Mocking pour tests
Avantages et inconvénients
Avantages
✅ Portabilité : Fonctionne partout ✅ Sécurité : Sandboxing, vérifications ✅ Performance : JIT compilation ✅ Écosystème riche : Nombreuses bibliothèques ✅ Maturité : Langage stable et éprouvé ✅ Communauté : Grande communauté active ✅ Gestion mémoire : Garbage collector automatique
Inconvénients
❌ Verbosité : Code plus long que certains langages ❌ Performance mémoire : Consomme plus de mémoire ❌ Démarrage : JVM peut être lente au démarrage ❌ Complexité : Écosystème parfois complexe
Exercice
-
Installation JDK
- Téléchargez JDK depuis oracle.com ou openjdk.org
- Installez sur votre système
- Vérifiez avec
java -versionetjavac -version - Notez la version installée
-
Premier programme
- Créez un fichier
HelloWorld.java - Écrivez le programme classique
- Compilez avec
javac HelloWorld.java - Exécutez avec
java HelloWorld
- Créez un fichier
-
Comprendre la compilation
- Observez le fichier
.classgénéré - Inspectez-le avec
javap -c HelloWorld.class - Comprenez que c'est du bytecode
- Observez le fichier
-
Portabilité
- Testez le même
.classsur différentes plateformes (si possible) - Ou documentez comment cela fonctionnerait
- Comprenez le principe "compile once, run anywhere"
- Testez le même
-
Recherche
- Explorez l'écosystème Java
- Identifiez 3 frameworks populaires
- Notez leurs cas d'usage
Quiz
-
Que signifie JVM ?
- Java Virtual Memory
- Java Virtual Machine
- Java Variable Manager
-
Que signifie "Write once, run anywhere" ?
- Écrire une fois, compiler partout
- Compiler une fois, exécuter partout
- Écrire une fois, optimiser partout
-
Que fait javac ?
- Exécute le programme
- Compile le code source en bytecode
- Débogue le programme
-
Qu'est-ce que le bytecode ?
- Code source Java
- Code intermédiaire exécuté par JVM
- Code machine natif
-
Quelle version Java LTS est recommandée actuellement ?
- Java 8
- Java 17 ou 21
- Java 11
Mini défi
Mission : Explorer l'écosystème Java complet
-
Installation complète
- Installez JDK (dernière version LTS recommandée)
- Vérifiez que javac et java fonctionnent
- Configurez JAVA_HOME si nécessaire
-
Premier projet
- Créez un projet "MonPremierProjetJava"
- Structurez avec des packages
- Créez plusieurs classes
-
Compilation et exécution
- Compilez votre projet
- Exécutez-le
- Comprenez le processus complet
-
Documentation
- Explorez la documentation Java officielle
- Identifiez 3 concepts importants
- Notez les ressources utiles
-
Écosystème
- Explorez Maven Central (mvnrepository.com)
- Identifiez 5 bibliothèques populaires
- Notez leurs utilités
Objectif : Avoir une compréhension complète de Java, JVM, et de l'écosystème, avec un environnement fonctionnel.
Validation : Vous pouvez passer au module suivant quand vous comprenez JVM, la compilation, la portabilité et avez un environnement Java configuré.