Vauban is a CDI 4.1 container that resolves injection at compile time. JPMS-native, zero runtime dependency, no dynamic proxies — dependency wiring computed like artillery trajectories: drawn on paper before the first shovel of dirt is turned.
Origin of the name
Sébastien Le Prestre, marquis de Vauban (1633-1707), Marshal of France, military engineer to Louis XIV. Designer of the ceinture de fer, author of the Treatise on the Attack and Defence of Fortresses. See the Wikipedia article.
Vauban turned defence into a mathematical art: trajectories, sapping, counter-mining, all computed in advance. The Vauban container brings the same discipline to CDI. Every @Inject relationship is resolved at process-classes. An Indexer enumerates beans, a Processor emits _Factory bytecode via the Class-File API. At runtime, nothing is computed — only instantiation remains. The fortifications stand before the first request hits.
At a glance
Implemented spec |
|
Repo |
|
Java |
25 (LTS) |
JPMS modules |
|
Runtime dependencies |
None beyond |
CDI 4.1 Lite TCK |
partial — see detailed status |
Three identifying traits
-
Zero runtime dependency — Jakarta CDI spec only. No Weld, no ArC, no Guice.
-
Static code generation — Class-File API (JEP 484) at
process-classes. No reflection at startup. No dynamic proxy. No external bytecode library (ASM, Byte Buddy). -
Strict JPMS — every Vauban artefact has its own
module-info.java. No classpath, no unjustifiedopens, noadd-opensat launch.
Quick links
|
Performance numbers live in BENCH.md. None appear inline in this page. |