- GraalVM native image
Helidon applications can be compiled into a native executable using GraalVM native image.
When using applications created using the CLI, or when you configure Helidon application pom as a parent of your module, you can use the following steps to build a native image from your application:
- Create an environment variable
GRAALVM_HOMEpointing to your installation of GraalVM withnative-imageinstalled - Run Maven command
mvn clean package -Pnative-image - Execute the native executable created in
targetdirectory of your project
- Create an environment variable
AOT supported modules
Some Helidon components are not (yet) supported in native image, some have restrictions. The following table lists all Helidon features and their support for native image.
Helidon SE features in AOT
| Feature | Component | AOT note | |
|---|---|---|---|
| ✅ | Config | Config | |
| ✅ | Encryption | ||
| ✅ | HOCON | ||
| ✅ | Object Mapping | ||
| ✅ | YAML | ||
| ❓ | etcd | Not yet tested. | |
| ✅ | git | ||
| ✅ | Db Client | Db Client | |
| ✅ | Health Check | ||
| 🔶 | JDBC | Tested with Helidon modules for Oracle and H2 driver (see examples) | |
| ✅ | Metrics | ||
| ✅ | Tracing | ||
| ✅ | mongo | ||
| ✅ | Health | Health | |
| ✅ | Built-ins | ||
| ✅ | Messaging | Messaging | |
| ✅ | Metrics | Metrics | |
| ✅ | OpenAPI | OpenAPI | |
| ✅ | Security | Security | |
| ✅ | Integration: Jersey | ||
| ✅ | Integration: WebServer | ||
| ✅ | Integration: gRPC | ||
| ✅ | OIDC | ||
| ✅ | Provider: ABAC | ||
| ✅ | Provider/ABAC/Policy: EL | Requires reflection configuration for used classes. | |
| ✅ | Provider/ABAC: Role | ||
| ✅ | Provider/ABAC: Scope | ||
| ✅ | Provider/ABAC: Time | ||
| ❓ | Provider: Google Login | Not yet tested. | |
| ✅ | Provider: Header | ||
| ✅ | Provider: HTTP Basic | ||
| ✅ | Provider: HTTP Digest | ||
| ✅ | Provider: HTTP Signatures | ||
| ❓ | Provider: IDCS Role Mapper | Not yet tested. | |
| ✅ | Provider: JWT | ||
| ✅ | Tracing | Tracing | |
| ✅ | Integration: Jersey Server | ||
| ✅ | Integration: Jersey Client | ||
| ✅ | Jaeger | ||
| ✅ | Zipkin | ||
| ✅ | WebClient | WebClient | |
| ✅ | Web Client | ||
| ✅ | Jackson | ||
| ✅ | JSON-B | ||
| ✅ | JSON-P | ||
| ✅ | Metrics | ||
| ✅ | Multi-part | ||
| ✅ | Security | ||
| ✅ | Tracing | ||
| ✅ | WebServer | WebServer | |
| ✅ | Access Log | ||
| ✅ | CORS | ||
| ✅ | Jackson | ||
| ✅ | Jersey | ||
| ✅ | JSON-B | ||
| ✅ | JSON-P | ||
| ✅ | Multi-part | ||
| ❓ | Prometheus | Not yet tested. | |
| ✅ | Websocket | Server only. | |
| ✅ | gRPC Server | gRPC Server | Since GraalVM 21.0.0 |
| ✅ | Metrics | ||
| ✅ | gRPC Client | gRPC Client | Since GraalVM 21.0.0 |
| ✅ | Metrics | ||
| ✅ | Scheduling | Scheduling | |
| ✅ | OCI | OCI Integration | Modules with group id io.helidon.integrations.oci |
| ✅ | Vault | Hashicorp Vault Integration |