Vidocq is a suite of Jakarta EE and MicroProfile runtimes written in pure Java 25, native Java Modules, built on static code generation (Class-File API + APT) and virtual threads.
|
New here? The Getting started guide takes you from installing the CLI to a running REST service in minutes, and the first-app tutorial on the blog walks through the same journey in story form. |
The ecosystem at a glance
Each module is an independent project, released separately, with its own life-cycle. Vidocq Runtime assembles them through a Quarkus-inspired extension SPI.
Why a new runtime?
Three reasons:
-
Technical sovereignty. The Jakarta world rests largely on a handful of historical foundations (Tomcat, Jetty, Netty, Hibernate, Yasson, ArC, RESTEasy). Remarkable work, but accumulated dependencies. Vidocq bets on rebuilding everything on pure Java 25, leaning on what the JDK now offers: virtual threads, scoped values, Class-File API, strict Java Modules.
-
Compile-time generation. No runtime reflection, no dynamic proxies, no ASM, no Byte Buddy. Anything computable at
compile-timeis computed atcompile-time. At startup, we instantiate. AOT-compatible (GraalVMnative-image, Project Leyden CDS). -
Sober historical inspiration. Each component honours a French figure from the late 18th / early 19th century whose method captures the spirit of the module. An aesthetic stance, not a pastiche.
The components
| Component | Role | Repository |
|---|---|---|
MicroProfile application server, extension orchestrator |
||
CDI 4.1 Lite container, build-time, native Java Modules |
||
Jakarta REST 4.0 / JAX-RS implementation |
||
Jakarta JSON-P 2.1 + JSON-B 3.0 implementation |
||
HTTP/1.1 + HTTP/2 server (HTTP/3 in progress), virtual threads, zero dependency |
||
Jakarta Servlet 6.1 implementation |
||
MicroProfile Config 3.1 implementation |
||
MicroProfile Health 4.0 implementation |
||
MicroProfile Metrics 5.1 implementation |
||
MicroProfile Fault Tolerance 4.1 implementation |
||
MicroProfile JWT 2.1 implementation |
||
MicroProfile Rest Client 4.0 implementation |
||
MicroProfile Telemetry 2.1 implementation |
||
MicroProfile OpenAPI 4.1 implementation |
||
Jakarta Data 1.0 + Jakarta Persistence 3.2 (M7 pending) |
Cross-cutting pages
-
Overall architecture — module boundaries, dependency matrix, cross-cutting choices (zero-dependency, Java Modules, codegen, virtual threads).
-
Comparison — Vidocq Runtime against Quarkus, Helidon SE 4 and Spring Boot 4.
-
Consolidated roadmap — module-by-module status and upcoming milestones (M2x, M5, M6c, M7).
Status
|
The suite is released as 0.2.x on Maven Central — an alpha: APIs may still change and production use is not recommended yet. Bug reports from early adopters are very welcome on Codeberg. |
What works today:
-
Chappe — HTTP/1.1, HTTP/2, virtual threads, RFC 9110/9112/9113 conformance.
-
Vauban — build-time CDI 4.1 Lite, Maven plugin, JUnit integration.
-
Cassini — REST 4.0, partial TCK pass (see
cassini/cassini-migration.md). -
Champollion — JSON-P 2.1 + JSON-B 3.0, APT generation, partial TCK suites (see
champollion/JSON-ROADMAP.md). -
Foy — Servlet 6.1, partial TCK pass.
-
Vidocq — initial orchestrator with Mansart H2 + transactions extensions.
-
MicroProfile — Config (Ravel), Health (Knock), Metrics (Dirac), Fault Tolerance (Heisenberg), JWT (Cervantes), Rest Client (Cyrano), Telemetry (Humboldt), OpenAPI (Grimm), each wired into Vidocq Runtime through an extension.
Work in progress:
-
Mansart — Jakarta Data 1.0 SPI, JPA 3.2 planned.
-
WebSocket — Chappe + Foy.
-
HTTP/3 / QUIC — Chappe.
-
MicroProfile — TCK hardening and cross-cutting integration in Vidocq Runtime.
Full per-module breakdown: Consolidated roadmap.
Useful links
-
Quickstart: Getting started guide
-
Blog: vidocq.dev/blog
-
Repository: codeberg.org/Vidocq
-
GitHub mirror: github.com/vidocq-stack
-
Matrix / Discord: (to come)