System requirements

Eliya JDK runs on every mainstream Linux distribution from 2011 onward. The runtime requirement is glibc, and the floor is set per architecture to match upstream OpenJDK's reference build configuration:

Architecture Minimum glibc Distribution reach
x86_64 2.12 (Oracle Linux 6.4) RHEL / CentOS / Oracle Linux 6+, Ubuntu 12.04+, Debian 7+, Amazon Linux 1+, SUSE / SLES 12+
aarch64 2.17 (Oracle Linux 7.6) RHEL / CentOS / Oracle Linux 7+, Ubuntu 16.04+, Debian 8+, Amazon Linux 2+, SUSE / SLES 12+

The binaries are compiled against the per-arch old-glibc sysroot, so they run on systems with that glibc version or newer; there is no separate libstdc++ requirement (the C++ runtime is linked statically).

Check the installed glibc on your target with ldd --version; the first line ends with the version number.

1. SDKman (coming soon)

The vendor ID 25.0.3-eliya is reserved with SDKman; the registration PR (sdkman/sdkman-db-migrations#783) is rolling out through the Foojay DISCO API to SDKman backend migration. For installation today, use the tar.gz, .deb, .rpm, or Docker paths below. Once SDKman registration is live, the install command will be:

Don't have SDKman? See sdkman.io/install.

2. tar.gz archive

For production servers, CI runners, air-gapped environments, and any deployment where you want explicit control over the JDK location rather than a version manager. (Containers should use the Docker image instead; runtime tarball extraction is an anti-pattern for image-based deploys.)

Verify the download before installing; see the verification guide.

Make JAVA_HOME persistent. The export commands above set JAVA_HOME for the current shell only; the moment you close the terminal or open a new SSH session, it's gone. Three patterns cover the deployment realities:

Per user (developer machines, interactive shells):

For zsh, replace ~/.bashrc with ~/.zshrc.

System-wide (shared servers, all users and shells):

sudo tee /etc/profile.d/eliya.sh > /dev/null <<'EOF'
export JAVA_HOME=/opt/java-25.0.3-eliya
export PATH=$JAVA_HOME/bin:$PATH
EOF
sudo chmod +x /etc/profile.d/eliya.sh

Per service (systemd-managed JVMs, the production pattern):

# in your unit file's [Service] section
Environment="JAVA_HOME=/opt/java-25.0.3-eliya"
Environment="PATH=/opt/java-25.0.3-eliya/bin:/usr/bin:/bin"

The systemd pattern matters operationally: systemd services do not read shell profile files at startup, so a service relying on ~/.bashrc or /etc/profile.d/ will not find JAVA_HOME at runtime. Set it explicitly in the unit file. Ensure these explicit paths match your actual extraction directory if you installed somewhere other than /opt.

3. .deb package (Debian, Ubuntu)

Phase 2: target Q4 2026. Today use SDKman or tar.gz. Notify me when packages and the hosted apt repository (deb.asymm.systems) ship

sudo dpkg -i eliya-jdk_25.0.3_amd64.deb

The .deb package will:

  • Install Eliya to /opt/eliya
  • Register java, javac, jcmd, and other binaries with update-alternatives
  • Not set JAVA_HOME system-wide; set it explicitly per the persistence guidance above if your applications (Maven, Gradle, Spring Boot tooling, sbt, etc.) require it

To switch between installed JDKs after install:

This brings up an interactive prompt listing every registered JDK on the system. Enter the number corresponding to Eliya and press Enter to make it the default.

The hosted apt repository (deb.asymm.systems) ships alongside the package; Phase 2, target Q4 2026.

4. .rpm package (RHEL, Rocky, Fedora, openSUSE)

Phase 2: target Q4 2026. Today use SDKman or tar.gz. Notify me when packages and the hosted yum repository (rpm.asymm.systems) ship

sudo rpm -i eliya-jdk-25.0.3.x86_64.rpm

The .rpm package will:

  • Install Eliya to /opt/eliya
  • Register java, javac, jcmd, and other binaries with update-alternatives (or alternatives on RHEL-family systems)
  • Not set JAVA_HOME system-wide; set it explicitly per the persistence guidance above if your applications require it

To switch between installed JDKs after install:

This brings up an interactive prompt listing every registered JDK on the system. Enter the number corresponding to Eliya and press Enter to make it the default.

The hosted yum repository (rpm.asymm.systems) ships alongside the package; Phase 2, target Q4 2026.

5. Verify the installation

Step 1: Confirm Eliya is the runtime:

Expected output:

openjdk version "25.0.3" 2026-06-09
OpenJDK Runtime Environment Eliya-25.0.3+24 (build 25.0.3+24-Eliya)
OpenJDK 64-Bit Server VM Eliya-25.0.3+24 (build 25.0.3+24-Eliya, mixed mode, sharing)

The build number and date advance with each quarterly CPU; the sharing suffix appears when class-data sharing is active.

The "Eliya" identifier in the build string confirms the runtime vendor.

Step 2: Confirm the Eliya flag mechanism is present:

Expected output (Phase 1, default state):

ccstr EliyaProfile = None {product} {default}
bool EliyaConflictCheck = true {product} {default}

EliyaProfile = None is the Phase 1 default; the flag mechanism is present and ready to activate when you set -XX:EliyaProfile=Production.

Step 3: Verify the profile state on a running JVM:

For a Java process already running on this machine, find its PID and inspect its flags. This is the audit-friendly verification; it shows what the running JVM has set, not what a fresh invocation would set.

Expected output if Production was set at startup:

-XX:EliyaProfile=Production

For the complete startup arguments (the canonical evidence trail for compliance audits):

This shows the exact command-line arguments passed to the JVM at startup.

[ } Eliya Eliya Dial Dial
Privacy
[ }
[ }
// PRODUCTS Eliya Eliya Dial Dial