mir-backend-jvmlisted
Install: claude install-skill anantbhandarkar/make-it-right
# /mir-backend-jvm · Make It Right (JVM runtime)
The middle tier. `mir-backend` decides **what is correct** (any language). The framework module (e.g. `mir-backend-jvm-spring`) knows the **library's mechanics**. This tier owns what's true for **all JVM backends because they run on the HotSpot JVM** — the threading model, garbage collector, memory model, process lifecycle, and JDK-level security defaults that Spring Boot, Quarkus, Micronaut, and Vert.x all inherit.
**Runtime assumed:** Java 25 LTS or Java 21 LTS, Java or Kotlin. Notes reference OpenJDK/HotSpot defaults. Load order: `mir-backend` → `mir-backend-jvm` → `<framework module>`.
**Read the actual JDK version out of the build file before applying any of this.** Spring Boot 4, Quarkus 3.x, and Micronaut 4.x all still declare a **Java 17 baseline**, so a service that uses a current framework can be running a JDK where half of this file does not apply. `<maven.compiler.release>`, `java.toolchain.languageVersion`, and the base image tag are the three places to look, and they disagree often.
**Version status, verified 13 Aug 2026:**
| Release | Status | What it means for a new service |
|---|---|---|
| **Java 25** | Current LTS. GA 16 Sep 2025, OpenJDK updates through Sep 2030 | The default target. Brings the AOT cache with method profiling, Generational Shenandoah, compact object headers |
| **Java 21** | Previous LTS, still supported | Fine to stay on, but `synchronized` still pins virtual threads here — see §2. Ora