Skip to content

Native image

Tomas Langer edited this page Nov 24, 2019 · 17 revisions

Helidon supports ahead of time compilation using GraalVM native image.

The following table shows support of native-image in Helidon modules (all module names are prefixed with helidon-). Status:

βœ… - native-image is supported and tested

πŸ‘ - native-image should work, not part of regular tests (yet)

πŸ”Ά - native-image works partially (description provided)

⏳ - native-image does not work (and we are working on it!)

πŸ›‘ - native-image does not work (and will not work for now) ❓ - native-image not yet tested

This is a work in progress, the list is incomplete

Module Description native-image status
webserver HTTP server βœ…
media-jsonp-server JSON-P suppport βœ…
media-jsonb-server JSON-B suppport πŸ‘
media-jsonb-server Jackson suppport πŸ‘
config Configuration βœ…
config-yaml YAML file support βœ…
config-object-mapping Object mapping support πŸ›‘
metrics Metric support βœ…
health Health check support βœ…
health-checks Health checks (built-in) βœ…
tracing Tracing builder πŸ‘
tracing-zipkin Zipkin tracing support πŸ‘
tracing-jaeger Jaeger tracing support πŸ‘
security Security πŸ‘
security-providers-abac ABAC provider πŸ‘
security-providers-http-auth HTTP Basic authentication provider πŸ‘
security-providers-http-sign HTTP Signatures provider πŸ‘
security-providers-oidc Open ID Connect provider πŸ‘
org.glassfish.jersey.core:jersey-client Jersey HTTP Client *1 πŸ”Ά
org.glassfish.jersey.inject:jersey-hk2 Jersey HK2 *2 πŸ”Ά
security-integration-jersey-client Security propagation πŸ‘
tracing-jersey-client Tracing propagation πŸ‘
microprofile-server MicroProfile server ⏳

*1: Jersey HTTP Client: Jersey core currently contains a dependency on "rendered image writer" - this depends on Image I/O. As a result, you can build such an image on an environment that supports Image I/O (such as a MacOS or a Linux distribution with X). Unfortunately this is not supported when building a native image within a Docker (as is one option in our quickstart example)

*2: Jersey HK2: This is required for the Jersey client to work. We have seen this working without issues, though there is quite a wide filter to include classes for reflection. This results in long image builds.