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.