Pourquoi Java ?
Java est un langage de programmation très populaire en raison de sa portabilité, de sa robustesse et de son écosystème vaste. Il est largement utilisé dans le développement d'applications web, mobiles, de plateformes, et de systèmes embarqués.
Un cas concret : Vous travaillez pour une entreprise qui souhaite développer une application mobile multiplateforme (pour Android et iOS) et un site web en temps réel. Java est parfaitement adapté pour ces deux types d'applications grâce à des frameworks comme Spring Boot pour le backend et Flutter ou React Native pour le frontend.
Prerequis
- Connaissance de base en programmation (structures de contrôle, boucles, etc.)
- Un environnement de développement intégré (IDE) comme IntelliJ IDEA, Eclipse ou Visual Studio Code
- JDK 17 (Java Development Kit)
- Maven (pour la gestion des dépendances)
Concepts fondamentaux
Variables et Types de Données
Les variables stockent les données dans un programme. Java est fortement typé, ce qui signifie que vous devez spécifier le type de données d'une variable à l'avance.
// Déclaration et initialisation de variables
int age = 25; // entier
double salary = 5000.50; // nombre à virgule flottante
char initial = 'J'; // caractère
boolean isStudent = true; // booléen
String name = "Java"; // chaîne de caractères
// Affichage des variables
System.out.println("Age : " + age);
Structures de Contrôle
Les structures de contrôle permettent de contrôler le flux d'exécution du programme.
// IF-ELSE
int number = 10;
if (number > 0) {
System.out.println("Le nombre est positif");
} else if (number < 0) {
System.out.println("Le nombre est négatif");
} else {
System.out.println("Le nombre est zéro");
}
// FOR
for (int i = 0; i < 5; i++) {
System.out.println("i : " + i);
}
// WHILE
int count = 0;
while (count < 3) {
System.out.println("Count : " + count);
count++;
}
Fonctions et Méthodes
Les fonctions permettent de regrouper du code réutilisable.
// Déclaration d'une méthode
public static int add(int a, int b) {
return a + b;
}
// Appel d'une méthode
int result = add(5, 3);
System.out.println("Resultat : " + result);
Mise en pratique : Projet Fil Rouge
Étape 1 : Création du Projet
Structure des Fichiers
Créez un nouveau projet Maven et organisez les fichiers comme suit :
src/main/java/com/example/todolist
├── Main.java
└── ToDoListManager.java
src/test/java/com/example/todolist
└── ToDoListManagerTest.java
pom.xml
Code
Main.java
package com.example.todolist;
public class Main {
public static void main(String[] args) {
ToDoListManager manager = new ToDoListManager();
manager.addTask("🥖 Acheter du pain");
manager.addTask("🍺 Boire un verre");
System.out.println(manager.getTasks());
}
}
ToDoListManager.java
package com.example.todolist;
import java.util.ArrayList;
import java.util.List;
public class ToDoListManager {
private List<String> tasks = new ArrayList<>();
public void addTask(String task) {
tasks.add(task);
}
public List<String> getTasks() {
return tasks;
}
}
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>todo-list-app</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<!-- Ajoutez d'autres dépendances ici si nécessaire -->
</dependencies>
</project>
Étape 2 : Exécution du Projet
Ouvrez le terminal et exécutez :
mvn compile exec:java -Dexec.mainClass="com.example.todolist.Main"
Cela devrait afficher :
[Acheter du pain, Boire un verre]
Étape 3 : Ajout de Tests
Code pour le Test
ToDoListManagerTest.java
package com.example.todolist;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class ToDoListManagerTest {
private ToDoListManager manager;
@BeforeEach
public void setUp() {
manager = new ToDoListManager();
}
@Test
public void testAddTask() {
manager.addTask("🥖 Acheter du pain");
assertTrue(manager.getTasks().contains("🥖 Acheter du pain"));
}
@Test
public void testGetTasks() {
manager.addTask("🍺 Boire un verre");
List<String> tasks = manager.getTasks();
assertEquals(1, tasks.size());
assertEquals("🍺 Boire un verre", tasks.get(0));
}
}
Étape 4 : Exécution des Tests
Exécutez les tests avec :
mvn test
Erreurs Frequentes et Debugging
Erreur 1 : Variable non initialisée
## ❌ Mauvais
int number;
System.out.println("Number : " + number);
## ✅ Correct
int number = 0;
System.out.println("Number : " + number);
Erreur 2 : Méthode non trouvée
## ❌ Mauvais
List<String> tasks = new ArrayList<>();
tasks.addTask("🥖 Acheter du pain"); // addTask n'existe pas
## ✅ Correct
List<String> tasks = new ArrayList<>();
tasks.add("🥖 Acheter du pain");
Erreur 3 : Accès à une variable non accessible
## ❌ Mauvais
public class Main {
private int number;
public static void main(String[] args) {
System.out.println(number); // number n'est pas accessible ici
}
}
## ✅ Correct
public class Main {
private static int number = 0;
public static void main(String[] args) {
System.out.println(number);
}
}
Pour Aller Plus Loi
1. Apprendre les Exceptions et le Gestion des Erreurs
L'apprentissage de la gestion des exceptions est crucial pour écrire des programmes robustes.
2. Utiliser un Framework Java
Les frameworks comme Spring Boot simplifient le développement en offrant des outils de base et une structure de projet prédéfinie.
- Liens : Spring Boot Documentation
3. Maîtriser les Collections Java
Les collections (List, Set, Map) sont essentielles pour la gestion des données en Java.
Défi Pratique
Créez un simple application CLI pour gérer une liste de contacts. Les fonctionnalités devraient inclure l'ajout, la suppression et l'affichage des contacts.