Skip to content

🎭 "Hello World" sur-ingĂ©niĂ© avec ExecutorService et Future - Pourquoi faire simple quand on peut faire compliquĂ© ?

Notifications You must be signed in to change notification settings

mrclaudee/hello-from-verbose-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

HelloFromJava - Le Troll de l'Over-Engineering 🎭

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 ! 😄

🎯 Concepts utilisĂ©s (pour rien du tout)

Programmation asynchrone excessive

  • 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

Over-Engineering Pattern

  • 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 : ExecutionException et InterruptedException pour une simple concatĂ©nation

Anti-Pattern éducatif

  • 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

đŸ—ïž Architecture (ridiculement complexe)

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

🚀 Installation et exĂ©cution

Prérequis

  • Java JDK 8 ou supĂ©rieur
  • Un sens de l'humour dĂ©veloppeur
  • La capacitĂ© Ă  apprĂ©cier l'ironie

Compilation

javac HelloFromJava.java

Exécution

java HelloFromJava

📝 Utilisation

Enter 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

đŸ€Ą Le Troll expliquĂ©

Pourquoi c'est ridicule ?

  1. Overhead démesuré : On crée un thread pool pour une opération instantanée
  2. Asynchrone inutile : Aucune opération longue ou bloquante à gérer
  3. Complexité cognitive : 10 concepts avancés pour faire "Hello World"
  4. Gestion d'erreurs overkill : Try-catch pour une concaténation de chaßnes

Pourquoi c'est génial ?

  1. Pédagogie par l'absurde : Montre tous les concepts d'un coup
  2. Humour de développeur : On comprend immédiatement la blague
  3. Code techniquement correct : Tout fonctionne parfaitement
  4. DĂ©monstration maĂźtrisĂ©e : Prouve qu'on connaĂźt les outils (mĂȘme mal utilisĂ©s)

📚 Points d'apprentissage (malgrĂ© le troll)

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 !)

🎭 Variantes du troll

Version encore plus ridicule

CompletableFuture.supplyAsync(() -> "Hello " + name)
    .thenApply(String::toUpperCase)
    .thenCompose(s -> CompletableFuture.completedFuture(s.toLowerCase()))
    .join();

Version microservices

// TODO: Déployer "Hello" sur un conteneur Docker
// TODO: "nom" dans une base de données Redis
// TODO: Concaténation via une API REST

🏆 Conclusion

Ce 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". 😉

About

🎭 "Hello World" sur-ingĂ©niĂ© avec ExecutorService et Future - Pourquoi faire simple quand on peut faire compliquĂ© ?

Topics

Resources

Stars

Watchers

Forks

Languages