-
Notifications
You must be signed in to change notification settings - Fork 566
Native image
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-
).
There are two sections - one for Helidon 1.x and one for (the next version) Helidon 2.x.
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
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 |
All Helidon MP modules | 🛑 |
*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.
This list is valid for Helidon 2.0 and newer ONLY
Current list is valid for master
branch (until the release of Helidon 2.0.0).
Support will NOT be backported into 1.x branch, due to required backward incompatible changes in MP implementation.
Module | Description |
native-image status |
---|---|---|
config |
Configuration | ✅ |
config-encryption |
Encrypt secrets in config | ✅ |
config-etcd |
etcd config source | ❓ |
config-git |
git config source | ❓ |
config-hocon |
hocon config source | 👍 |
config-object-mapping |
Object mapping support | ✅ |
config-yaml |
YAML config source | ✅ |
dbclient |
Helidon reactive DB client | ⏳ |
health |
Health check support | ✅ |
health-checks |
Health checks (built-in) | ✅ |
jersey-client |
Jersey client *1 | 🔶 |
jersey-media-jsonp |
Jersey JSON-P | ✅ |
jersey-server |
Jersey server *1 | 🔶 |
media-jackson-server |
Jackson suppport | 👍 |
media-jsonb-server |
JSON-B suppport | 👍 |
media-jsonp-server |
JSON-P suppport | ✅ |
metrics |
Metric support | ✅ |
metrics-prometheus |
Prometheus client support | ❓ |
openapi |
OpenAPI support | ✅ |
security |
Security | ✅ |
security-abac-policy |
ABAC provider | ✅ |
security-abac-policy-el |
ABAC extension for Expression language | ❓ |
security-abac-role |
ABAC extension for RBAC | ✅ |
security-abac-scope |
ABAC extension for scopes | ✅ |
security-abac-time |
ABAC extension for time based rules | ❓ |
security-integration-jersey |
Security integration with Jersey server | ✅ |
security-integration-jersey-client |
Security integration with Jersey client | ✅ |
security-integration-webserver |
Security integration with webserver | ✅ |
security-providers-abac |
ABAC provider | ✅ |
security-providers-google-login |
Google login button support | ❓ |
security-providers-header |
Header based security | ❓ |
security-providers-http-auth |
HTTP Basic authentication provider | ✅ |
security-providers-http-sign |
HTTP Signatures provider | 👍 |
security-providers-idcs-mapper |
IDCS role mapping | ❓ |
security-providers-jwt |
JWT provider (use OIDC) | ❓ |
security-providers-oidc |
Open ID Connect provider | ✅ |
tracing |
Tracing builder | ✅ |
tracing-jaeger |
Jaeger tracing support | ✅ |
tracing-jersey |
Tracing support for Jersey server | ✅ |
tracing-jersey-client |
Tracing support for Jersey client | ✅ |
tracing-zipkin |
Zipkin tracing support | 👍 |
webclient-jaxrs |
Helidon extension of Jersey client | 👍 |
webclient |
Helidon reactive web client | ❓ |
webserver |
HTTP Server | ✅ |
webserver-access-log |
Access Log | ✅ |
webserver-jersey |
Jersey support | ✅ |
websocket |
WebSocket support | ❓ |
*1: Jersey Server and 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) Also there is quite a wide filter to include classes for reflection. This results in long image builds.
Module | Description |
native-image status |
---|---|---|
microprofile-cdi |
CDI | ✅ |
microprofile-server |
Server Impl | ✅ |
microprofile-access-log |
Access Log Support | ✅ |
microprofile-config |
Configuration Spec Impl | ✅ |
microprofile-fault-tolerance |
Fault Tolerance Spec Impl | ✅ |
microprofile-health |
Health Spec Impl | ✅ |
microprofile-jwt-auth |
JWT-Auth Spec Impl | ✅ |
microprofile-metrics |
Metrics Spec Impl | ✅ |
microprofile-oidc |
OIDC Security Support | ✅ |
microprofile-openapi |
OpenAPI Spec Impl | ✅ |
microprofile-rest-client |
REST-Client Spec Impl *1 | 🔶 |
microprofile-security |
Security Support | ✅ |
microprofile-tracing |
Tracing Spec Impl | ✅ |
*1 - MP REST-Client: calling a default method on an interface does not work (limitations of native image due to complicated method reference implementation).
Modules of gRPC implementation.
Module | Description |
native-image status |
---|---|---|
grpc-server |
gRPC server | ❓ |
grpc-client |
gRPC client | ❓ |
grpc-metrics |
Metrics for gRPC | ❓ |
security-integration-grpc |
gRPC security | ❓ |
Module | Description |
native-image status |
---|---|---|
microprofile-grpc-server |
gRPC Server | ❓ |
microprofile-grpc-client |
gRPC Client | ❓ |
microprofile-grpc-metrics |
gRPC Metrics | ❓ |
Module | Description |
native-image status |
---|---|---|
integrations-cdi-datasource-hikaricp |
Hikari Data Source | 👍 |
integrations-cdi-datasource-ucp |
Oracle UCP Data Source | ❓ |
integrations-cdi-jta |
JTA | 👍 |
integrations-cdi-eclipselink |
JPA - Eclipse Link | ❓ |
integrations-cdi-hibernate |
JPA - Hibernate | 👍 |
integrations-cdi-jedis |
Jedis Support | ❓ |
integrations-cdi-oci-objectstorage |
Object Storage | ❓ |
serviceconfiguration-api |
❓ | |
serviceconfiguration-config-source |
❓ | |
serviceconfiguration-hikaricp |
❓ | |
serviceconfiguration-hikaricp-accs |
❓ | |
serviceconfiguration-hikaricp-localhost |
❓ | |
serviceconfiguration-system-kubernetes |
❓ | |
serviceconfiguration-system-oracle-accs |
❓ | |
serviceconfiguration-ucp |
❓ | |
serviceconfiguration-ucp-accs |
❓ | |
serviceconfiguration-ucp-localhost |
❓ |