Eclipse OpenJ9
Eclipse Incubation

Boost your Java application performance

Low memory footprint. Fast startup time. High application throughput.
Optimized to run Java applications cost-effectively in the cloud.
Want an OpenJDK build that contains an enterprise grade, open source, Java virtual machine?
Grab a pre-built binary and try it for yourself...

Download Now

Give your Java application a thrill
Run it on OpenJDK with Eclipse OpenJ9

Learn more

Eclipse OpenJ9 is a high performance, scalable, Java virtual machine (JVM) implementation that represents hundreds of person-years of effort. Contributed to the Eclipse project by IBM, the OpenJ9 JVM underpins the IBM SDK, Java Technology Edition product that is a core component of many IBM Enterprise software products. Continued development of OpenJ9 at the Eclipse foundation ensures wider collaboration, fresh innovation, and the opportunity to influence the development of OpenJ9 for the next generation of Java applications.

Saving costs in the cloud

OpenJ9 is highly optimized for cloud workloads. The memory footprint is around half the size of other JVM implementations.

The following charts compare the performance of OpenJDK 9 with Hotspot and OpenJDK 9 with OpenJ9 when the DayTrader 3 benchmark application is run:

Fig 1. DayTrader 3 footprint size during ramp up with a maximum Java heap size set to 1 GB.

×

Fig 1. DayTrader 3 footprint size during ramp up with a maximum Java heap size set to 1 GB.

Fig 2. DayTrader 3 footprint size after start up with a maximum Java heap size set to 1 GB.

×

Fig 2. DayTrader 3 footprint size after start up with a maximum Java heap size set to 1 GB.

For more details, see DayTrader 3 benchmark testing.

Whether you are a cloud user or a cloud provider, a smaller footprint generates immediate cost savings when running applications on most cloud services. You can also take advantage of a tuning mechanism that detects when the JVM is idle, releasing free memory pages to keep the footprint as small as possible and keep your running costs to a minimum.

If resources become constrained, OpenJ9 provides a dedicated running mode, -Xtune:virtualized, that reduces CPU consumption and memory footprint. This is useful for scenarios where cloud services become highly overcommitted at peak times.

Better performance

Benchmark tests demonstrate performance improvements over alternative JVM implementations, including faster start up times and comparable application throughput.

The following charts compare the performance of OpenJDK 9 with Hotspot and OpenJDK 9 with OpenJ9 when the DayTrader 3 benchmark application is run:

Fig 3. DayTrader 3 startup time with a maximum Java heap size set to 1 GB.

×

Fig 3. DayTrader 3 startup time with a maximum Java heap size set to 1 GB.

Fig 4. DayTrader 3 throughput during ramp up with a maximum Java heap size set to 1 GB.

×

Fig 4. DayTrader 3 throughput during ramp up with a maximum Java heap size set to 1 GB.

For more details, see DayTrader 3 benchmark testing.

Shared classes and Ahead-of-Time (AOT) technologies typically provide a 20-40% reduction in startup time while improving the overall ramp-up time of applications. This capability is crucial for short-running Java applications or for horizontal scalability solutions that rely on the frequent provisioning and de-provisioning of JVM instances to manage workloads.

OpenJ9 has also been built to exploit hardware features, such as graphics processing units (GPU) that can improve the performance of Java applications for different workloads.

As a developer you can achieve even faster startup times by using -Xquickstart mode, which enables rapid development → deployment → test cycles to improve productivity.

Get started

It's easy to get started with Eclipse OpenJ9!

Try it out Grab a pre-built OpenJDK binary from AdoptOpenJDK to install on your system, and see how your applications perform when the OpenJ9 JVM is at work.

Build your own If you are familiar with building OpenJDK, you might want to build it with OpenJ9 yourself. For a deeper dive, read the build instructions, which cover all the steps to build an OpenJDK with OpenJ9 and how to test your binary.

Tune it OpenJ9 optimizes your Java application out-of-the-box without needing a complicated set of command line options. However, further tuning is possible to improve your application's performance. For example, if your application has an extremely large heap, you might choose a different garbage collection policy to improve memory management. Alternatively, you might want to exploit specific hardware features such as a graphics processing unit (GPU).

To learn more about tuning OpenJ9 for your application runtime environment, read the existing user documentation in the IBM Knowledge Center. Documentation to support OpenJ9 at the Eclipse foundation is a work in progress. Watch this space!

Ask questions If you get stuck trying to do something, our developers monitor and participate in #OpenJ9 questions on Stack Overflow. For more general questions about OpenJ9 and how it fits into the OpenJDK ecosystem, we've created an FAQ, which will grow over time.

Report issues We hope you don't run into any obstacles, but if you do, we want to hear from you. Use the #OpenJ9 tag to discuss problems in Stack Overflow, or raise an issue in our GitHub repository.

Get involved

The Eclipse OpenJ9 project welcomes participation at many levels.

Make suggestions If you are using OpenJ9 within a Java runtime environment and you have ideas for improvements, share them. We'd love to hear from you.

Contribute If you are interested in contributing to the development of this open-source project, check out the contribution guide in our GitHub repository.