Java (OpenJDK) on servers: LTS versions and updates

Updated November 2026

Run an LTS release (25 or 21, or 17 while it lasts), install each quarterly update within days, and restart every Java process. October 2026 brought three OpenJDK advisories: the regular update on October 20 and two out-of-band fixes on October 21 and 24 for compromised eMudhra CA certificates, each rated CVSS 9.1.

What it is

Java runs application servers such as Tomcat, build servers, search engines and many business apps. OpenJDK is the open-source Java platform; "JDKs" from Debian, Red Hat, Eclipse Adoptium (Temurin), Amazon (Corretto), Microsoft, Oracle and others are builds of the same source. Each vendor decides how long it ships updates for each version, so the vendor you install from sets your end-of-life date.

Supported LTS versions

A new feature release comes every six months. Since 2021, every second year one release is Long-Term Support (LTS): 8, 11, 17, 21 and 25 so far, with 29 planned for September 2027. Non-LTS releases are replaced six months later: Java 26 ended in September 2026, and Java 27 runs only until March 2027. Use LTS on servers.

End of updates by vendor, as of November 2026
JavaTemurin (at least)CorrettoMicrosoft (earliest)RHEL streamOracle JDK (paid Extended)
25 LTSSep 2031Oct 2032Sep 2030Dec 2030Sep 2033
21 LTSDec 2029Oct 2030Sep 2028Dec 2029Sep 2031
17 LTSOct 2027Oct 2029Sep 2027Dec 2027Sep 2029
11 LTSOct 2027Jan 2032Sep 2027ended Oct 2024Jan 2032
8 LTSDec 2030Dec 2030(uses Temurin)Nov 2026Dec 2030
27Mar 2027Apr 2027Premier to Mar 2027

RHEL dates apply to the java-*-openjdk streams on RHEL 8, 9 and 10 (Java 8 on RHEL 8 and 9 retires this month). Oracle JDK licensing differs by version: Oracle JDK 25 is free for all users under the Oracle No-Fee Terms and Conditions, with updates after September 2028 planned under the OTN license. Oracle JDK 21 updates from October 20, 2026 onward, like those for 8, 11 and 17, are under the OTN license, which is free only for personal and development use. If you run Oracle JDK 21 or older in production without a subscription, switch to an OpenJDK build of the same version or move to 25.

The quarterly patch schedule

OpenJDK publishes security fixes four times a year, on the third Tuesday of January, April, July and October. Oracle's Critical Patch Updates (CPUs) come on the same days. Vendors ship their builds on the day or soon after; Adoptium says Temurin binaries can take up to three weeks. Out-of-band fixes (outside the regular schedule) happen too: OpenJDK issued advisories on August 18, October 21 and October 24, 2026, and Temurin labels such updates with a fourth version number (for example 25.0.4.1).

DoneOct 202026 NextJan 192027 Apr 202027 Jul 202027 Oct 192027 + urgent
Quarterly OpenJDK and Oracle update days (third Tuesday). Urgent fixes can arrive in between, as on October 21 and 24, 2026.

Put the next dates in your calendar and plan a restart window for each. Per-CVE details are on our vulnerability pages.

Check what you run

Servers often have several JDKs: a distro package, a vendor package, a tarball under /opt, and runtimes bundled inside applications. Check the one each service actually uses.

java -version
readlink -f "$(command -v java)"
update-alternatives --display java          # Debian/Ubuntu
alternatives --display java                 # RHEL/Fedora/SUSE
ps -eo pid,lstart,args | grep '[j]ava'      # running JVMs and their start time
sudo jcmd                                   # list JVMs (run as the JVM's user if it fails)
sudo jcmd 12345 VM.version                  # version of the JVM with PID 12345
sudo find / -xdev -type f -name java -perm -u+x 2>/dev/null   # all java binaries

Look at JAVA_HOME in each systemd unit or setenv.sh: a service pinned to an old path keeps using that JDK after you install a new one.

Distribution packages

Debian 13 ships openjdk-21 and openjdk-25, and Debian 12 ships openjdk-17. Their security archives carried the October 20 updates on November 3 (21.0.13, 25.0.5 and 17.0.21), but the Debian tracker still listed CVE-2026-114820 as open. Ubuntu's package archive still showed the August builds (for example 21.0.12.1) for 22.04, 24.04 and 26.04. RHEL ships java-17-openjdk, java-21-openjdk and java-25-openjdk. FreeBSD has java/openjdk17, java/openjdk21 and java/openjdk25.

sudo apt update && sudo apt install --only-upgrade 'openjdk-*'   # Debian/Ubuntu
sudo dnf upgrade --refresh 'java-*-openjdk*'                     # RHEL/Fedora
sudo zypper patch                                                # SUSE
sudo apk -U upgrade                                              # Alpine
sudo pkg upgrade -g 'openjdk*'                                   # FreeBSD

To switch the default java between installed versions, run sudo update-alternatives --config java (Debian/Ubuntu) or sudo alternatives --config java (RHEL family).

The eMudhra certificate fix

Private keys of eight eMudhra intermediate CA certificates were compromised. OpenJDK fixed this in CVE-2026-91403 and CVE-2026-114820. Its advice depends on how Java was installed:

sudo apt update && sudo apt install --only-upgrade ca-certificates ca-certificates-java
sudo rm -f /etc/ssl/certs/java/cacerts
sudo update-ca-certificates --fresh
# then restart every Java service

FreeBSD's OpenJDK packages do not use the OS store; update the packages when fixed builds arrive. OpenJDK also provides a CheckCerts.java program to test a runtime.

Eclipse Temurin packages

Adoptium's repository gives the same Temurin builds on Debian, Ubuntu, RHEL, SUSE and Alpine. On Debian or Ubuntu:

sudo apt install -y wget apt-transport-https gpg
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list
sudo apt update
sudo apt install temurin-21-jdk          # or temurin-25-jre for a runtime only
sudo apt install --only-upgrade 'temurin-*'   # later updates

On RHEL, SUSE and Alpine, follow Adoptium's Linux installation page, then update with dnf, zypper or apk as usual. As of November 3, Temurin had published 25.0.5, 21.0.13 and 17.0.21 (October 22) and 27.0.1.0.2 (October 24); the October builds for 8 and 11 (8u511, 11.0.33) were still listed as due.

Containers

Pin the major version and rebuild after each update, for example FROM eclipse-temurin:25-jre or eclipse-temurin:21-jre-alpine:

docker build --pull -t myapp:latest .
docker compose build --pull && docker compose up -d     # recreates containers
docker compose exec app java -version

See Containers.

Restart and verify

A running JVM keeps the old libjvm.so and classes until it restarts. Restart each Java service, then confirm:

sudo systemctl restart myapp.service                 # restarts the app
ps -eo pid,lstart,args | grep '[j]ava'               # start times after the update
sudo lsof -n 2>/dev/null | grep 'libjvm.so.*(deleted)'   # JVMs still on the old library

See Restarts and reboots.

Security advisories

Hardening tips

On an end-of-life version

Java 26 and older non-LTS versions get no more fixes: move to 25. Java 11 and 17 builds from Temurin and Microsoft end around September to October 2027, so plan the move to 21 or 25 now. Corretto and Oracle (paid Extended Support) cover 11 and 17 longer if you cannot move in time. See Is my OS supported?.

Sources