Un simple "Hello World" personnalisĂ© implĂ©mentĂ© avec une complexitĂ© totalement disproportionnĂ©e utilisant ExecutorService, Callable, Future et la programmation asynchrone... pour une tĂąche qui pourrait tenir en une ligne ! đ
- ExecutorService : Un pool de threads... d'UN SEUL thread pour dire "Hello"
- Callable : Une tùche asynchrone pour concaténer deux chaßnes de caractÚres
- Future : Un résultat asynchrone pour récupérer... une concaténation
- Thread pool management : Création et fermeture propre d'un thread pool pour UNE opération
- ComplexitĂ© artificielle : Utiliser des concepts avancĂ©s lĂ oĂč
System.out.println("Hello " + name)suffirait - Architecture distribuée : Pour une opération locale instantanée
- Gestion des exceptions :
ExecutionExceptionetInterruptedExceptionpour une simple concaténation
- Démonstration par l'absurde : Montrer ce qu'il NE faut PAS faire
- Satire technologique : Parodier les architectures sur-complexes
- Humour de développeur : Le plaisir de coder quelque chose de ridicule mais techniquement correct
HelloFromJava
âââ Demande le nom Ă l'utilisateur (synchrone)
âââ CrĂ©e un ExecutorService Ă un thread
âââ Soumet une tĂąche Callable pour... concatĂ©ner
âââ Attend le rĂ©sultat avec Future.get()
âââ Affiche le rĂ©sultat
âââ Ferme proprement l'ExecutorService
Ce que ça fait réellement : "Hello " + nom
Complexité ajoutée : 300% de code en plus, gestion de threads, exceptions asynchrones
- Java JDK 8 ou supérieur
- Un sens de l'humour développeur
- La capacité à apprécier l'ironie
javac HelloFromJava.javajava HelloFromJavaEnter your name: Alice
Hello Alice
Temps d'exécution : ~5ms (création thread pool + exécution + fermeture)
Version simple équivalente :
System.out.println("Hello " + scanner.nextLine());Temps d'exécution : ~1ms
- Overhead démesuré : On crée un thread pool pour une opération instantanée
- Asynchrone inutile : Aucune opération longue ou bloquante à gérer
- Complexité cognitive : 10 concepts avancés pour faire "Hello World"
- Gestion d'erreurs overkill : Try-catch pour une concaténation de chaßnes
- Pédagogie par l'absurde : Montre tous les concepts d'un coup
- Humour de développeur : On comprend immédiatement la blague
- Code techniquement correct : Tout fonctionne parfaitement
- DĂ©monstration maĂźtrisĂ©e : Prouve qu'on connaĂźt les outils (mĂȘme mal utilisĂ©s)
Ce projet enseigne :
- L'utilisation d'ExecutorService et sa fermeture propre
- La différence Runnable vs Callable (avec retour de valeur)
- La gestion des Future pour récupérer des résultats asynchrones
- Les exceptions de concurrence (
ExecutionException,InterruptedException) - Quand NE PAS utiliser ces outils (le plus important !)
CompletableFuture.supplyAsync(() -> "Hello " + name)
.thenApply(String::toUpperCase)
.thenCompose(s -> CompletableFuture.completedFuture(s.toLowerCase()))
.join();// TODO: Déployer "Hello" sur un conteneur Docker
// TODO: "nom" dans une base de données Redis
// TODO: ConcatĂ©nation via une API RESTCe projet est la preuve parfaite qu'on peut techniquement tout faire avec Java... mĂȘme les choses les plus inutiles !
Morale : MaĂźtriser les outils, c'est aussi savoir quand ne PAS les utiliser.
Note : Ce code est un excellent exemple Ă montrer en entretien pour dĂ©montrer qu'on comprend la diffĂ©rence entre "pouvoir faire" et "devoir faire". đ