{"slug":"best-jvm-frameworks-for-serverless-apis","title":"Best JVM frameworks for serverless APIs","question":"What are the best JVM frameworks for serverless APIs in 2026?","verdict":"As of 2026-09-04, Claude and Gemini collectively rank Quarkus #1 for jvm frameworks for serverless apis on ModelsAgree — unanimous among the 2 models that have answered. The models' case: Purpose-built for the serverless/native use case — its build-time metadata processing plus first-class GraalVM native-image support yield sub-50ms cold starts and. The models' main caveat: Native-image builds are slow and memory-hungry in CI, and reflection-heavy or unsupported third-party libraries still force config workarounds or. The strongest alternative is Micronaut — Compile-time dependency injection and AOT eliminate runtime reflection, giving fast startup and low memory on both JVM and GraalVM native, with a. Source: https://modelsagree.com/best/best-jvm-frameworks-for-serverless-apis (modelsagree.com, CC BY 4.0).","category":"Backend","url":"https://modelsagree.com/best/best-jvm-frameworks-for-serverless-apis","updated":"2026-09-04","models":["Claude","Gemini"],"consensus":"All 2 models rank Quarkus the top pick","disagreement":null,"combined":[{"rank":1,"product":"Quarkus","domain":"quarkus.io","score":10,"appearances":2,"modelRanks":{"Claude":1,"Gemini":1},"reason":"Purpose-built for the serverless/native use case — its build-time metadata processing plus first-class GraalVM native-image support yield sub-50ms cold starts and tens-of-MB memory footprints, exactly what per-invocation Lambda billing rewards; Funqy and the AWS Lambda extensions give a clean function programming model, and the extension ecosystem (RESTEasy Reactive, Hibernate, messaging) is broad enough for real APIs, not just demos. Ranked #1 on the assumption the typical practitioner is deploying to a cold-start-sensitive FaaS platform (Lambda, Cloud Run, Knative)."},{"rank":2,"product":"Micronaut","domain":"micronaut.io","score":8,"appearances":2,"modelRanks":{"Claude":2,"Gemini":2},"reason":"Compile-time dependency injection and AOT eliminate runtime reflection, giving fast startup and low memory on both JVM and GraalVM native, with a mature Micronaut AWS/Function integration and cloud-agnostic abstractions; often a near-tie with Quarkus for cold-start performance and arguably a cleaner story for pure function deployments."},{"rank":3,"product":"Helidon","domain":"helidon.io","score":4,"appearances":2,"modelRanks":{"Claude":4,"Gemini":4},"reason":"Helidon SE is a genuinely thin, reactive/virtual-thread-based microframework with GraalVM native support and no heavy DI container, giving excellent startup and predictable footprint; Níma's virtual-thread server makes simple, high-throughput blocking-style APIs easy without reactive complexity."},{"rank":4,"product":"Spring Boot","domain":"spring.io","score":4,"appearances":2,"modelRanks":{"Claude":3,"Gemini":5},"reason":"With AOT processing and GraalVM native support now mature, plus Spring Cloud Function for a portable function abstraction, it brings the largest ecosystem, deepest documentation, and the skills most teams already have; the pragmatic default when developer familiarity and library breadth outweigh squeezing the last milliseconds of cold start."},{"rank":5,"product":"Ktor","domain":"ktor.io","score":3,"appearances":1,"modelRanks":{"Gemini":3},"reason":"Unmatched lightweight ergonomics for Kotlin-first serverless APIs; its unopinionated, modular engine incurs minimal runtime overhead, compiling cleanly to tiny GraalVM native binaries with near-instantaneous invocation times and native coroutine-based concurrency."},{"rank":6,"product":"Vert.x","domain":null,"score":1,"appearances":1,"modelRanks":{"Claude":5},"reason":"A minimal, unopinionated reactive toolkit with very low overhead and fast startup, strong GraalVM compatibility, and fine-grained control over event-loop behavior — ideal for latency-sensitive, high-concurrency serverless endpoints where you want to avoid framework weight."}],"perModel":{"Claude":[{"rank":1,"product":"Quarkus","reason":"Purpose-built for the serverless/native use case — its build-time metadata processing plus first-class GraalVM native-image support yield sub-50ms cold starts and tens-of-MB memory footprints, exactly what per-invocation Lambda billing rewards; Funqy and the AWS Lambda extensions give a clean function programming model, and the extension ecosystem (RESTEasy Reactive, Hibernate, messaging) is broad enough for real APIs, not just demos. Ranked #1 on the assumption the typical practitioner is deploying to a cold-start-sensitive FaaS platform (Lambda, Cloud Run, Knative).","fix":"Native-image builds are slow and memory-hungry in CI, and reflection-heavy or unsupported third-party libraries still force config workarounds or JVM-mode fallback — not for teams unwilling to invest in the native toolchain."},{"rank":2,"product":"Micronaut","reason":"Compile-time dependency injection and AOT eliminate runtime reflection, giving fast startup and low memory on both JVM and GraalVM native, with a mature Micronaut AWS/Function integration and cloud-agnostic abstractions; often a near-tie with Quarkus for cold-start performance and arguably a cleaner story for pure function deployments.","fix":"Smaller community and extension catalog than Quarkus or Spring, so you hit the edges of the ecosystem sooner and lean more on writing your own integrations."},{"rank":3,"product":"Spring Boot","reason":"With AOT processing and GraalVM native support now mature, plus Spring Cloud Function for a portable function abstraction, it brings the largest ecosystem, deepest documentation, and the skills most teams already have; the pragmatic default when developer familiarity and library breadth outweigh squeezing the last milliseconds of cold start.","fix":"Even AOT/native-compiled, its footprint and build complexity trail Quarkus and Micronaut, and native mode constrains the dynamic/reflection-heavy patterns Spring historically encouraged — the heaviest option here for latency-critical FaaS."},{"rank":4,"product":"Helidon","reason":"Helidon SE is a genuinely thin, reactive/virtual-thread-based microframework with GraalVM native support and no heavy DI container, giving excellent startup and predictable footprint; Níma's virtual-thread server makes simple, high-throughput blocking-style APIs easy without reactive complexity.","fix":"Oracle-led with a comparatively small ecosystem and community; MP profile aside, you'll find fewer ready-made integrations and third-party guidance than the top three."},{"rank":5,"product":"Vert.x","reason":"A minimal, unopinionated reactive toolkit with very low overhead and fast startup, strong GraalVM compatibility, and fine-grained control over event-loop behavior — ideal for latency-sensitive, high-concurrency serverless endpoints where you want to avoid framework weight.","fix":"It's a toolkit, not a batteries-included framework — you assemble DI, config, and structure yourself, and the callback/reactive model raises the skill floor; wrong choice for teams wanting conventions and rapid CRUD scaffolding."}],"Gemini":[{"rank":1,"product":"Quarkus","reason":"Industry-leading build-time optimization that eliminates reflection and dead code, delivering double-digit millisecond cold starts on GraalVM Native Image alongside out-of-the-box optimizations for AWS Lambda SnapStart, Azure Functions, and GCP Cloud Functions (near-tie with Micronaut on raw startup benchmarks).","fix":"Highly opinionated closed-world build assumptions that break arbitrary third-party Java libraries relying on runtime bytecode manipulation or unconfigured dynamic reflection."},{"rank":2,"product":"Micronaut","reason":"Reflection-free compile-time Ahead-of-Time (AOT) dependency injection and minimal memory footprint (<30MB) paired with dedicated, first-class serverless function runtimes across all major clouds; near-tie with Quarkus, with an edge in cleaner, less magical dependency injection semantics.","fix":"Heavy reliance on annotation processing slows down IDE build cycles, and debugging complex compile-time AST-generated code can be difficult for generalist teams."},{"rank":3,"product":"Ktor","reason":"Unmatched lightweight ergonomics for Kotlin-first serverless APIs; its unopinionated, modular engine incurs minimal runtime overhead, compiling cleanly to tiny GraalVM native binaries with near-instantaneous invocation times and native coroutine-based concurrency.","fix":"Built strictly for Kotlin; offers negligible ergonomic value and awkward interop for teams working in standard Java."},{"rank":4,"product":"Helidon","reason":"Built from the ground up around Java virtual threads (Project Loom), Helidon SE provides a micro-framework footprint with no heavy compile-time bytecode instrumentation, excellent GraalVM native image performance, and predictable imperative execution.","fix":"Ecosystem and dedicated serverless event tooling lag behind Quarkus and Micronaut, requiring more manual boilerplate to bridge complex cloud event sources."},{"rank":5,"product":"Spring Boot","reason":"Unrivaled enterprise library ecosystem and developer familiarity, made competitive in serverless via Spring AOT GraalVM compilation and AWS Lambda SnapStart/CRaC support that bypass traditional multi-second JVM cold starts.","fix":"Severely bloated CI/CD native compile times, higher baseline memory usage, and frequent runtime incompatibilities when importing community Spring starters into a closed-world native image."}]},"missedByModel":{"Claude":[{"product":"AWS Lambda SnapStart with plain Spring/Java","reason":"a runtime feature, not a framework, that narrows cold-start gaps but is AWS-only and doesn't cut memory footprint"},{"product":"Ktor","reason":"excellent lightweight Kotlin option with good startup, but its serverless/native tooling and function-model maturity trail the Java-first frameworks above"}],"Gemini":[{"product":"Javalin","reason":"exceptionally fast and lightweight microframework, but lacks built-in serverless event adapters and automated GraalVM reflection configuration"},{"product":"Dropwizard","reason":"reliable microservice stack, but architecturally tethered to reflection-heavy runtime internals with no native AOT or serverless optimization path"}]}}