Vidocq Runtime is at 0.1.0-SNAPSHOT. Any real-world migration is premature — this page documents the mappings ahead of time.

Side-by-side comparison

Aspect Vidocq Runtime Quarkus Helidon MP Spring Boot Open Liberty Payara Micro

Minimum JDK

25

17

21

17

17

17

I/O threading model

Virtual threads

Vert.x event loop

Helidon Níma (VT)

Tomcat / Netty

Platform threads

Platform threads

Build-time vs runtime

Build-time (Class-File API)

Build-time (Gizmo / ASM)

Runtime

Runtime

Runtime

Runtime

Strict JPMS

Yes

No

No

No

No

No

Native AOT

GraalVM + Leyden CDS

GraalVM

GraalVM

GraalVM

Partial

Partial

Typical cold start (jlink/CDS)

~1 s

~0.5 s (native)

~1 s

~3 s

~5 s

~3 s

Standalone image size

~40 MB (jlink)

~80 MB (native)

~50 MB

~70 MB

~150 MB

~80 MB

ASM / Byte Buddy dependency

None

ASM (Gizmo)

ASM

ByteBuddy + ASM

ASM

ASM

The numbers above are indicative and will be updated as BENCH.md runs land. See the workspace root BENCH.md for exact measurements.

From Quarkus

Vidocq Runtime explicitly borrows the Quarkus extension pattern.

Quarkus Vidocq Runtime Note

io.quarkus.deployment.annotations.BuildStep

io.vidocq.runtime.spi.BuildStep

API directly transposable

Gizmo recorder (ASM)

Class-File API recorder (JEP 484)

No ASM — standard JDK bytecode

ArC (runtime CDI)

Vauban

Build-time in both cases

RESTEasy Reactive

Cassini on Chappe

No Vert.x — virtual threads

Hibernate Reactive / ORM

Mansart

JDBC + virtual threads, no Vert.x SQL Client

Jackson

Champollion

JSON-B 3.0 / JSON-P 2.1 implementation

The forthcoming compare-to/ workspace examples will illustrate migrating a simple extension.

From Helidon MP

  • Helidon SE (Web) → Chappe + Cassini.

  • Helidon MP → Vidocq Runtime directly.

  • application.yaml → MicroProfile Config (vidocq.properties or env).

  • Helidon Níma already uses virtual threads — the transition is conceptually transparent.

From Spring Boot

Spring Boot does not naturally align with the MicroProfile model, and migration touches the programming model.

Spring Boot Vidocq Runtime Note

@SpringBootApplication

Vidocq.main(args) + any class

No application class required

@RestController

@Path + @GET/@POST

Standard Jakarta REST

@Service, @Component

@ApplicationScoped

CDI Lite

@Autowired

@Inject

Constructor injection preferred

@ConfigurationProperties

@VidocqConfig + interface

MicroProfile Config

application.yml

vidocq.properties + MP profiles

%<profile>. prefix

Spring Data JPA

Mansart (Jakarta Data 1.0)

APT-generated repositories

From Open Liberty / WildFly

  • server.xml → MicroProfile Config + Vidocq Runtime extensions.

  • EAR → standalone JAR + Maven plugin.

  • JNDI → CDI lookup via Vauban.bootstrap().

  • Jakarta annotations — directly compatible, the programming model stays identical.

From Payara Micro

Payara Micro and Vidocq Runtime share the MicroProfile target. The main difference is the build-time approach: Payara Micro embeds GlassFish; Vidocq Runtime produces a minimal jlink binary without a classical application server.

  • payara-micro --deploy app.warjava -jar app-runner.jar.

  • payara-micro.jar (~80 MB) → jlink image (~40 MB).

  • Every enabled MicroProfile feature.xml is replaced by the matching Vidocq Runtime extension.

MicroProfile table

MicroProfile spec Vidocq Runtime status Extension

MP Config 3.x

Planned

vidocq-runtime-config-extension

MP Health 4.x

Planned

vidocq-runtime-health-extension

MP Metrics 5.x

Planned

vidocq-runtime-metrics-extension

MP OpenAPI 4.x

Planned

vidocq-runtime-openapi-extension

MP REST Client 4.x

Planned

vidocq-runtime-rest-client-extension

MP JWT Auth 2.x

Planned

vidocq-runtime-jwt-extension

MP Telemetry 2.x

Planned

vidocq-runtime-telemetry-extension

MP Fault Tolerance 4.x

Planned

vidocq-runtime-fault-tolerance-extension

Next steps