GraalVM Native Image

KissServer is designed to be GraalVM Native Image friendly by default, but official support requires validation with an example application or CI workflow.

Design Choices

These choices reduce the need for Native Image metadata.

Consuming Applications Own Native Builds

Native compilation belongs to the consuming application. Application dependencies, resources, reflection needs, logging, and build plugins can change Native Image requirements.

Normal kiss-server usage should not require:

That remains a design expectation until validated by a sample or CI build.

Executor Notes

Pass an explicit executor from application code:

ServerConfig config = ServerConfig.builder()
        .executor(executor)
        .build();

ExecutorFactories.virtualThreadPerTaskOrCached() uses reflection as an optional JVM convenience. Native Image users should prefer passing an explicit executor.

Status

Do not claim official Native Image support until a native example app or CI workflow validates: