Compatibility
Supported JDK versions, runtimes and frameworks for DDI.
JDK matrix
| DDI version line | JDK baseline | Status |
|---|---|---|
| 06.x (current) | JDK 21 LTS | Active development |
| 05.x | JDK 21 LTS | Maintenance only |
| 04.x | JDK 8 source / JDK 11+ build | End-of-life |
| 1.0.x | JDK 8 | Frozen โ for legacy projects |
Newer JDKs (22, 23, โฆ) are tested but not officially declared “supported” until they have reached at least one quarterly maintenance release.
Runtime environments
DDI is plain Java โ there is no servlet, no container, no agent. It works wherever the JDK works:
- Stand-alone JVM โ CLI tools, batch jobs, daemons.
- AWS Lambda / Cloud Functions โ bootstrap is a single method call, so cold-start cost is the classpath scan, nothing more.
- Vaadin Flow โ used in production with Vaadin since the V8 era.
- JavaFX / Swing desktop โ same pattern, injection happens before the UI builds.
- JUnit 5 tests โ see the JUnit 5 tutorial.
What DDI does not require
- No Jakarta EE / CDI container.
- No Spring
ApplicationContext. - No annotation processor โ DDI uses
reflections8at runtime. - No XML, no YAML, no
META-INF/services(though you can use those alongside DDI if you want).
What DDI does depend on
javax.annotation:javax.annotation-apiโ for@PostConstruct.com.google.code.gson:gsonโ used internally for diagnostics.net.oneandone.reflections8:reflections8โ classpath scanning.com.svenruppert:coreandcom.svenruppert:functional-reactiveโ the companion libraries (see frp.svenruppert.com).
Java Platform Module System
DDI runs on the classpath today. A proper module-info.java is on the
roadmap.