Red Hat Enterprise Linux (RHEL) 10.1 includes the Red Hat build of OpenJDK 25 LTS, our latest long-term support release. This update offers better startup performance, memory efficiency, concurrency, and developer ergonomics. Red Hat supports OpenJDK 25 LTS through December 2030, providing a stable, long-term foundation for building and running applications.
Install OpenJDK 25 on RHEL
Install OpenJDK 25 on RHEL 10.1 with yum:
sudo yum install java-25-openjdk
java --version
openjdk 25.0.1 2025-10-21 LTS
OpenJDK Runtime Environment (Red_Hat-25.0.1.0.8-1) (build 25.0.1+8-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-25.0.1.0.8-1) (build 25.0.1+8-LTS, mixed mode, sharing)OpenJDK 25 includes performance features not found in OpenJDK 21. Developers and operators get faster startup times, smaller memory footprints, and better virtual thread performance with high-concurrency workloads.
Ahead-of-time (AOT) improvements with Project Leyden
Project Leyden improves application startup and warmup times by performing ahead-of-time computations.
- Ahead-of-time class loading and linking: Enables AOT class loading and linking with an AOT cache generated during a training run. This provides lower startup latency and performance improvements, especially for short-lived containerized workloads.
- Ahead-of-time command-line ergonomics: Simplifies AOT cache creation by combining the two steps involved in the process, reducing potential human errors and inconsistency.
- Ahead-of-time method profiling: Records method-level profiles in the AOT cache to guide JIT optimization on hot methods and reduce the warmup time before reaching peak application performance.
Garbage collection and memory efficiency
Generational Shenandoah and more compact object layouts improve garbage collection (GC) performance and reduce memory usage.
- Generational Shenandoah: Introduces generational collection to Shenandoah, improving throughput and reducing pause times for large, long-lived heaps.
- Compact object headers: Shrinks object headers to reduce memory footprint, especially beneficial for applications with high object counts.
Concurrency and scalability
New features reduce thread pinning and provide faster, safer mechanisms for sharing state across threads.
- Synchronize virtual threads without pinning: Removes unnecessary pinning of platform threads during synchronization, improving the scalability of virtual-thread–heavy workloads.
- Scoped values: Provides a safe, high-performance mechanism for sharing immutable data across threads, offering lower space and time costs when used with virtual threads.
Developer ergonomics
Compact source files and instance main methods: Concise source file formats and reduced boilerplate code make utility scripts and examples easier to write:
cat > hello.java <<EOF void main() { IO.println("Hello, World!"); } EOF java -Xshowversion hello Hello, World!
Conclusion
See OpenJDK.org for a list of all JEPs in JDK 25 integrated since JDK 21.
Upgrading from OpenJDK 21 to 25 LTS provides a more responsive runtime, smaller memory usage, and improved scalability. This release maintains the compatibility and predictability required for mission-critical environments, aligned with Red Hat’s long-term maintenance policies.