Pendant que d'autres plateformes attendent la sortie officielle, nous avons déjà lancé notre cours. Nous n'attendons pas que tout le monde discute du nouveau Java — nous créons le cours immédiatement 💪
Quand nous avons lancé CodeGym en 2014, notre objectif était simple — donner aux gens des compétences pratiques en programmation, pas de belles présentations sur "l'importance d'apprendre les bases". En plus de 10 ans, plus de 2 millions de personnes ont suivi nos cours. Maintenant, nous avons créé le premier cours au monde sur Java 25, et je veux vous dire ce qui s'y trouve d'intéressant.
Compact Source Files — Java pour les débutants
Le changement le plus visible dans Java 25 est la syntaxe simplifiée pour les nouveaux venus. Maintenant, vous pouvez écrire des programmes sans déclarer explicitement des classes :
// Auparavant il fallait ceci
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
// Maintenant ceci suffit
void main() {
IO.println("Hello, World!");
}
Si un fichier .java a des méthodes ou des champs en dehors d'une déclaration de classe explicite, le compilateur crée automatiquement une classe top-level implicite. Pour ceux qui apprennent la programmation, cela abaisse considérablement la barrière d'entrée.
Instance Main Methods — sans static et String[]
Java 25 permet d'utiliser des méthodes d'instance comme points d'entrée de programme. Plus besoin d'expliquer aux débutants ce que signifie static :
void main() {
// Méthode d'instance normale
processData();
}
void processData() {
IO.println("Traitement des données...");
}
Si une classe n'a pas de méthode main statique appropriée, le lanceur Java cherche une méthode main d'instance et crée automatiquement une instance de la classe.
java.lang.IO — Entrée/sortie simple
La nouvelle classe java.lang.IO simplifie le travail avec la console. Plus besoin de se souvenir de System.out.println :
void main() {
String name = IO.readln("Entrez votre nom : ");
IO.println("Bonjour, " + name + " !");
}
La classe se trouve dans le package java.lang, elle est donc disponible sans import. Il y a des méthodes pour l'affichage, la saisie et la lecture de chaînes avec invite.
Flexible Constructor Bodies — Constructeurs flexibles
Dans Java 25, vous pouvez effectuer des opérations avant d'appeler super() ou this() :
public class User {
private final String email;
private final String domain;
public User(String email) {
// Opérations avant l'appel super()
this.domain = extractDomain(email);
validateDomain(domain);
super(); // Appel du constructeur Object
this.email = email;
}
private String extractDomain(String email) {
return email.substring(email.indexOf('@') + 1);
}
}
Cela permet d'initialiser les champs et d'effectuer la validation avant la création d'objet, rendant les constructeurs plus naturels.
Module Import Declarations — Imports simplifiés
JEP 511 introduit la possibilité d'importer tous les packages d'un module en une ligne :
import module java.base;
// Maintenant toutes les classes de java.base sont disponibles sans imports explicites
void main() {
var list = new ArrayList<String>();
var file = new File("data.txt");
var decimal = new BigDecimal("123.45");
}
Ceci est particulièrement utile lors du travail avec de gros modules où vous avez besoin de beaucoup de classes.
Stable Values — Constantes optimisées
Nouvelle API pour travailler avec des valeurs immuables qui peuvent être initialisées plus tard :
class Configuration {
static final StableValue<String> DATABASE_URL =
StableValue.of(() -> loadFromConfig("db.url"));
void connectToDatabase() {
String url = DATABASE_URL.get(); // Initialisation paresseuse
// Connexion à la base de données
}
}
Les Stable Values aident à optimiser le temps de démarrage des applications et assurent la sécurité des threads pour l'initialisation différée.
Primitive Types in Patterns — Pattern Matching étendu
Java 25 étend le Pattern Matching à tous les types primitifs :
static String classify(Number n) {
return switch (n) {
case int i -> "Entier : " + i;
case long l -> "Long : " + l;
case double d -> "Double : " + d;
case float f -> "Float : " + f;
default -> "Type de nombre inconnu";
};
}
Maintenant vous pouvez utiliser le pattern matching avec int, long, double, float et d'autres primitifs dans les expressions switch et instanceof.
Compact Object Headers — Économie de mémoire
Dans Java 25, les tailles des en-têtes d'objets sont réduites de 96-128 bits à 64 bits sur les architectures 64 bits :
// Chaque objet prend maintenant moins de mémoire
List<String> list = new ArrayList<>(); // Moins de surcharge
Map<String, User> users = new HashMap<>(); // Économies sur chaque entrée
Ceci est particulièrement notable dans les applications avec beaucoup d'objets — microservices et applications avec de gros heaps.
Scoped Values — Contexte sécurisé
La version finale des Scoped Values permet de passer des données immuables entre les méthodes et les threads :
private static final ScopedValue<User> CURRENT_USER = ScopedValue.newInstance();
public void handleRequest(User user) {
ScopedValue.where(CURRENT_USER, user)
.run(() -> {
processOrder(); // À l'intérieur, accès à user via CURRENT_USER.get()
sendNotification();
logActivity();
});
}
Contrairement à ThreadLocal, les Scoped Values sont plus faciles à utiliser, ont moins de surcharge et fonctionnent mieux avec les threads virtuels.
Améliorations JFR — Meilleur profilage
Java 25 améliore Java Flight Recorder avec trois nouvelles capacités :
JFR Cooperative Sampling — collecte plus sûre des stack traces sans biais et avec support du parcours de pile concurrent.
JFR Method Timing & Tracing — suivi du temps d'exécution de méthodes spécifiques sans changement de code :
java -XX:StartFlightRecording:jdk.MethodTiming#methods=com.myapp.Service.* MyApp
CPU-Time Profiling on Linux — profilage précis du temps CPU en utilisant les capacités du noyau Linux.
API Key Derivation Functions
Nouvelle API pour travailler avec les fonctions de dérivation de clés (KDF) :
// Exemple d'utilisation de KDF pour générer des clés dérivées
KeyDerivationFunction kdf = KeyDerivationFunction.getInstance("PBKDF2WithHmacSHA256");
SecretKey derivedKey = kdf.deriveKey(password, salt, iterations, keyLength);
Ceci est critique pour les applications cryptographiques et l'implémentation du stockage sécurisé des mots de passe.
Pourquoi apprendre Java 25
Java évolue rapidement — de nouvelles versions LTS sortent tous les 3 ans. Ceux qui maîtrisent les nouvelles fonctionnalités en premier obtiennent un avantage sur le marché du travail.
Java 25 est une version LTS avec 5 ans de support d'Oracle. Les entreprises vont migrer vers cette version et chercher des développeurs qui connaissent les nouvelles capacités du langage.
Le premier cours Java 25
Quand Oracle a annoncé la date de sortie de Java 25, nous avons décidé de ne pas attendre. CodeGym a toujours été en avance — nous avons été les premiers à créer une éducation gamifiée à la programmation, les premiers à créer des tâches interactives avec vérification automatique.
Maintenant nous sommes les premiers à vous donner l'opportunité d'apprendre Java 25 en pratique. Le cours comprend à la fois les nouveautés Java 25 et les fonctionnalités importantes des versions précédentes — lambdas et Stream API de Java 8, modules de Java 9, var de Java 10, Text Blocks de Java 13, Records de Java 14, Pattern Matching de Java 17, Virtual Threads de Java 21.
Ce qui est dans le cours :
- 325+ cours expliquant chaque nouveauté Java 25
- 880+ tâches du simple au niveau entreprise
- Mentor IA qui analyse le code et donne des recommandations
- Intégration IntelliJ IDEA — apprenez avec des outils professionnels
- Grands projets — créez de vraies applications avec les nouvelles technologies
La pratique — Base de l'apprentissage
Au fil des années d'enseignement, j'ai compris une vérité simple : la théorie sans pratique est une perte de temps. Vous pouvez lire toute la documentation sur les Compact Source Files, mais tant que vous n'écrirez pas plusieurs programmes avec la nouvelle syntaxe, vous ne sentirez pas la commodité.
Dans le cours, chaque nouveauté Java 25 est immédiatement renforcée par la pratique. Apprenez les Flexible Constructor Bodies — écrivez un système d'initialisation d'objets sécurisé. Maîtrisez les Scoped Values — créez une application multithread avec passage de contexte. Comprenez les Module Import Declarations — simplifiez la structure de grands projets.
Mentor IA dans le cours
La fonctionnalité la plus intéressante de notre cours est l'IA qui analyse le code des étudiants. Ce ne sont pas des conseils génériques de ChatGPT, mais un système spécialisé qui :
- Connaît le contexte de chaque tâche du cours
- Analyse le style de programmation
- Donne des recommandations personnalisées
Apprentissage gamifié
La programmation peut être ennuyeuse si vous l'apprenez mal. C'est pourquoi l'éducation CodeGym est construite comme un jeu : niveaux, accomplissements, classements.
Dans le cours Java 25 :
- Accomplissements pour résoudre des tâches de différentes difficultés
- Classement général des étudiants
- Niveaux comme dans un jeu
De zéro à prêt pour l'emploi
Le cours est construit pour qu'même un débutant après 65 niveaux ait les connaissances suffisantes pour travailler dans une entreprise sérieuse. Le programme complet du cours comprend l'apprentissage de Java 25 moderne, mais couvre aussi :
- La syntaxe moderne et les nouveaux opérateurs
- La POO avec les nouvelles capacités du langage
- Les collections et Stream API
- Les opérations sur fichiers via l'API moderne
- Le multithreading et la gestion des threads
Plugin IntelliJ IDEA
L'une des caractéristiques de CodeGym est le plugin IntelliJ IDEA. Les étudiants résolvent les tâches directement dans un environnement de développement professionnel, avec coloration syntaxique, autocomplétion et débogueur.
Vérification instantanée des solutions
Dans CodeGym, vous pouvez résoudre une tâche et connaître le résultat en quelques secondes. Le système vérifie automatiquement le code, exécute les tests et donne du feedback.
Pour Java 25, le système de vérification comprend :
- La nouvelle syntaxe Compact Source Files
- Les Instance Main Methods
- Les Flexible Constructor Bodies
- Les Module Import Declarations
Pourquoi CodeGym pour apprendre Java 25
En plus de 10 ans de travail, nous avons compris comment enseigner efficacement la programmation. Les recruteurs dans les entreprises tech connaissent CodeGym et demandent souvent dans les entretiens : "Quel est votre niveau sur CodeGym ?" Pas parce que nous les payons pour cela, mais parce qu'ils savent — si quelqu'un a atteint le niveau 40, il sait programmer, pas seulement mémoriser la syntaxe.
Le cours Java 25 est l'évolution de notre méthodologie. La même orientation pratique, mais avec les technologies les plus modernes.
Commencer l'apprentissage maintenant
Java 25 est déjà sorti et vous pouvez l'apprendre maintenant — pendant que les concurrents lisent les notes de version. Notre cours contient toutes les innovations avec des exemples pratiques.
65 niveaux de tâches pratiques, mentor IA, intégration avec des outils professionnels — tout pour que vous maîtrisiez Java moderne rapidement et efficacement.
Devenez un développeur Java prêt pour 2025.
Prêt à apprendre Java 25 ? Commencez sur CodeGym — la seule plateforme avec un cours pratique complet sur la dernière version de Java. 65 niveaux | 880+ tâches | Mentor IA | Intégration IDEA |
GO TO FULL VERSION