Quick start
Zero to a running Eliya with observability defaults in five steps. About five minutes end-to-end.
1. Install via SDKMAN! (once registered) or direct download (today)
SDKMAN! is the recommended path on Linux developer machines, but registration is in progress (PR sdkman/sdkman-db-migrations#783). For installation today, use the GitHub Release tar.gz, the .deb / .rpm packages on the same Release page, or follow the Linux install guide. Once SDKMAN! registration completes:
2. Verify the install
Confirm Eliya is the active JVM and the diagnostic path root is writable:
The first command should report Eliya in the version banner. The second should print OK when the diagnostic path root exists and is writable. For downloaded-artefact integrity (GPG signature and SHA256 checksums), see Verify your download.
3. Run your application with operational-readiness defaults
Add a single flag to your existing JVM command:
Phase 1 today (25.0.3) activates six ergonomics: heap-dump-on-OOM with structured path, exit-on-OOM, Native Memory Tracking summary, predictable crash log path, container support reinforced, and diagnostic VM options unlocked. Near-zero steady-state CPU overhead. The Phase 1 ergonomics either trigger only on the actual event (heap-dump-on-OOM, crash log, exit-on-OOM) or carry low steady-state overhead (NMT summary mode). No GC tuning, no TLS overlay.
Phase 2 (planned) adds continuous JFR (24-hour rolling buffer at sub-1% overhead) + unified GC logging as defaults under the same flag, plus bundled Eclipse MAT + async-profiler. See flags reference for the full breakdown of Phase 1 + Phase 2 capabilities.
4. Inspect what the profile activated
The output shows the six Phase 1 ergonomics with their values and origin. Flags with {ergonomic} in the origin column were set by EliyaProfile=Production; flags with {default} were already at the activated value upstream (this is the case for UseContainerSupport on JDK 25).
5. Find your diagnostic artifacts
Eliya writes artifacts to a three-level filesystem layout (${ELIYA_DIAGNOSTIC_PATH}/${service}/${replica}/${category}/), with replica suppression when replica resolves to the same value as service:
JFR recordings, heap dumps (on OOM), crash logs, and GC logs live in sibling jfr/, heap/, crash/, gc/ directories under each replica's path. For Kubernetes, the replica name is the pod name; for bare-metal systemd, the replica name is suppressed and artifacts land directly under the service directory.
Where to go next
- Install on Linux: tar.gz, DEB/RPM, systemd integration for production servers.
- Install with Docker: multi-arch OCI images, sidecar diagnostics, ephemeral debug containers.
- Flags reference: what
EliyaProfile=Productionactivates, performance impact, override semantics. - Migration guide: switching from Corretto, Temurin, Zulu, or another OpenJDK distribution.
- Integrations: Maven/Gradle toolchains, Kubernetes, service mesh, logging stacks, APM coexistence.
- Roadmap: Phase 2/3/4 trajectory: FIPS variant, bundled diagnostic tooling, Asymm Forensics, compliance profiles.
- Troubleshooting: common issues with concrete diagnostic commands.