# PR#82: The Statistics Service on Temurin 25 > **WARNING:** This document describes only the change applied in this PR. > It may already be outdated once the next PR is merged. > Historic PR documentation is not maintained along with new PRs; treat it as a snapshot. ## Related Links - [werkregie PR#20](https://git.javagil.de/mi/werkregie/pulls/20) and [PR#22](https://git.javagil.de/mi/werkregie/pulls/22): ADR 0001, Temurin 25 as JDK and runtime of all werk repositories, loaded with Foojay. ## Problem ADR 0001 of werkregie decides Temurin 25 for all werk repositories, and for each service a runtime jlinked from it. The statistics service builds with Temurin 21, Kotlin 2.2.0, Gradle 8.14.5 and Foojay 0.8.0. On mih09 it runs on a full Temurin 21 runtime that was put there by hand. ## Non-Goals - No change of the review itself, nor of its Python runtime. - No change of the service's behaviour. ## Solution - Toolchain Temurin 25, Kotlin 2.4.21, Gradle 9.8.1 and Foojay 1.0.0, as werkregie. - Kotlin 2.2.0 has no JVM 25 target; Kotlin 2.4.21 has. - The dependency management of Spring Boot raised the Kotlin compiler of ktlint to 2.4.21, which ktlint cannot parse with. The ktlint configurations keep the compiler 2.1.0 that ktlint 1.5.0 was built against. - The task `runtime` jlinks the runtime of the service from the toolchain into `build/runtime`, about 65 MB. Its modules come from jdeps over the boot jar, plus the ones that only the runtime needs, as in Werkator. - The README tells how to deploy the jar and the runtime on mih09; `--enable-native-access=ALL-UNNAMED` keeps sqlite-jdbc from warning on Java 25. - Checked locally: the tests pass on Temurin 25, and the service starts on the jlinked runtime and answers `/api/stats`. - Werkbaum: `#stats.temurin`. - Version 0.32.9. ## Additional Changes - A raw string in `UsageApiIntegrationTest` becomes an escaped one; ktlint flagged it since PR#57.