Skip to content

Native image

Tomas Langer edited this page Jan 10, 2020 · 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-).

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

Helidon 1

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 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.

Helidon 2

This list is valid for Helidon 2.0 and newer ONLY Support will NOT be backported into 1.x branch, due to required backward incompatible changes in MP implementation.

Helidon SE

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
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 👍
webserver HTTP Server
webserver-access-log Access Log 👍
webserver-jersey Jersey 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.

Helidon MP

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
microprofile-security Security Support
microprofile-tracing Tracing Spec Impl

Helidon gRPC

Modules of gRPC implementation.

gRPC SE

Module Description native-image status
grpc-server gRPC server
grpc-client gRPC client
grpc-metrics Metrics for gRPC
security-integration-grpc gRPC security

gRPC MP

Module Description native-image status
microprofile-grpc-server gRPC Server
microprofile-grpc-client gRPC Client
microprofile-grpc-metrics gRPC Metrics

CDI extensions

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