Skip to content

Native Image Feasibility

LoomCache does not currently ship a GraalVM native executable. The supported production runtime is the JVM Docker image and the standalone static seed-list deployment described in the deployment guide.

AreaStatusNotes
Spring Boot AOTExploratoryThe manual spring-boot:process-aot probe below is not CI-gated and is not release evidence.
Native executableNot shippedCI does not require native-image, and no native artifact is part of the release contract.
Java runtimeHigh frictionServer classes use Java 25 preview features, so AOT and native builds must pass preview flags consistently.
Dynamic featuresNeeds metadataServiceLoader, Class.forName(...), Kryo registrations, JDBC drivers, and user serializers need reachability metadata.

Native-image support is therefore experimental research, not a production feature.

Spring Boot AOT processing is an exploratory manual probe. It is not part of the release gate and should not be treated as evidence for native-image support.

Run one Maven clean/test/verify command per checkout at a time. clean mutates shared target/ directories; use a separate worktree for parallel build or evidence lanes.

Run the probe with the Maven wrapper:

Terminal window
./mvnw clean install -q \
-pl loom-spring-boot \
-am
./mvnw -q \
-Dspring-boot.aot.jvmArguments=--enable-preview \
-Dspring-boot.aot.compilerArguments=--enable-preview \
-pl loom-spring-boot \
spring-boot:process-aot

No GraalVM native executable is included in this release.

Before LoomCache can publish a native artifact:

  1. Add a loom-spring-boot native profile using GraalVM Native Build Tools.
  2. Pass Java 25 preview flags to the native-image build and Spring AOT phases.
  3. Check in reachability metadata for serializer providers, dynamic class loaders, JDBC drivers, TLS, and user-configured comparators.
  4. Add reachability metadata for WAN merge-policy classes loaded by name through MergePolicyLoader and for all Kryo serializer registrations and user-registered value classes — both are reflection/dynamic-load AOT blockers.
  5. Decide which JVM-only operational features are disabled in native mode, especially JFR-oriented JVM flags (flight recorder profiling) and optional native TLS providers.
  6. Build the Linux native executable in CI with GraalVM JDK 25.
  7. Run native smoke tests for health, binary map operations, WAL restart, metrics, TLS startup, and serializer failures.

Until those gates land, the Docker JVM image is the only supported runtime. See Deployment.

There is no checked-in Maven profile named native in this release. No native build command is available yet; add a module-scoped native profile first, then document the exact supported command after it passes CI.

LoomCache is an independent open-source project. It is not affiliated with, endorsed by, or sponsored by Hazelcast, Inc. or by any other company whose products are named in this documentation. “Hazelcast” is a trademark of Hazelcast, Inc.; references to it are nominative and describe only migration and comparison. All other product and company names are trademarks of their respective owners and are used for identification purposes only.