Vauban est un container CDI 4.1 qui résout l’injection au moment de la compilation. JPMS-natif, zéro dépendance runtime, pas de proxy dynamique — la résolution des dépendances se calcule comme une trajectoire balistique : sur plan, avant le premier coup de pelle.
Origine du nom
Sébastien Le Prestre, marquis de Vauban (1633-1707), maréchal de France, ingénieur militaire de Louis XIV. Concepteur de la « ceinture de fer », auteur du Traité de l’attaque et de la défense des places. Voir la fiche Wikipédia.
Vauban faisait de la défense un art mathématique : trajectoires, sape, contre-mine, tout calculé d’avance. Le container Vauban applique la même discipline à CDI. Chaque relation @Inject est résolue à process-classes. Un Indexer énumère les beans, un Processor génère les _Factory en bytecode via la Class-File API. À l’exécution, plus rien à calculer — il ne reste qu’à instancier. Les fortifications sont posées avant le premier requête.
En un coup d’œil
Spec implémentée |
|
Repo |
|
Java |
25 (LTS) |
Module JPMS |
|
Dépendances runtime |
Aucune au-delà de |
TCK CDI 4.1 Lite |
partiel — voir état détaillé |
Trois traits identitaires
-
Zéro dépendance runtime — uniquement la spec Jakarta CDI. Pas de Weld, pas d’ArC, pas de Guice.
-
Codegen statique — Class-File API (JEP 484) à
process-classes. Aucune réflexion au démarrage. Aucun proxy dynamique. Aucune librairie de génération externe (ASM, Byte Buddy). -
JPMS strict — chaque artefact Vauban a son
module-info.java. Pas de classpath, pas d'`opens` non justifié, pas d'`add-opens` au lancement.
Ressources rapides
|
Les chiffres de performance sont consignés dans BENCH.md du repo Vauban. Cette page n’en cite aucun. |