New Open Source JVM optimized for Cloud and Microservices

Finally a new Open Source competitor for the well known HotSpot Java Virtual Machine arrived in the wild.

Meet Eclipse OpenJ9!

TL;DR;

  • New OpenJDK JVM runtime implementation (replaces HotSpot).
  • Has a 2x smaller memory footprint and starts 2x faster than HotSpot.
  • Not released yet; Pre-packaged builds and Docker images are available.

Eclipse OpenJ9

OpenJ9 claims to have a lower memory footprint, faster startup time and higher application throughput compared to HotSpot JVM.

It would be hard to believe in the statements above if that wasn’t proven before. Actually, it's in development for more than 20 years at IBM!

They decided to fully contribute the J9 JVM implementation with all features and committed to long-term support, using the open source version as baseline for it's IBM SDK, WebSphere Liberty and Open Liberty!

Open Source

It's the biggest contribution to OpenJDK project since Oracle JRockit merge with HotSpot JVM back in 2011.

The project will be held under Eclipse Foundation umbrella and will be maintained by IBM as well as a previous contributed project Eclipse OMR which is also part of OpenJ9 now.

The licensing model will be very flexible, both Eclipse Public License 2.0 and Apache License 2.0 are supported.

Looks like IBM Open Source trend is growing as they already donated Liberty, their Java EE application server before.

Overview

OpenJ9 replaces HotSpot JVM in the OpenJDK build to become a new JVM runtime implementation to be used with a wide range of system architectures and operating systems.

Get Started

Initially, it contains pre-built binaries for Linux x64, Linux s390x, Linux ppc64 and AIX ppc64. Although, you have the ability to build binaries for other platforms like Linux ARMv7 by yourself.

You can also find Docker images available in AdoptOpenJDK DockerHub.

Performance vs Resources

As any enterprise application, there are many customer use cases that a JVM should handle that sometimes are conflicting.

  • Startup time
  • Ramp-up time
  • Response time
  • Memory footprint
  • CPU usage

OpenJ9 comes with a very different approach for many of the design decision a JVM should have to keep a balance between performance and resources usage.

By default, OpenJ9 already make sensible trade-offs that make cloud and microservices applications that run in constrained environments run under a very impressive performance with low resources usage.

Spoiler: There are exciting features that makes it even better.

Generic statement from IBM engineers: "OpenJ9 has a 2x smaller memory footprint and starts 2x faster than HotSpot", has proven to be true and has even better results with some configuration tweaks.

  • Start-up time: 37 - 49 % improvement
  • Memory footprint: 44 - 60% improvement

Start-up performance with Eclipse OpenJ9

Footprint after start-up comparison

Footprint during load comparison

Footprint of idle Eclipse OpenJ9

Ramping-up in a CPU constrained environment

Features Summary

  1. Application Class Sharing
  2. AOT (Ahead-of-Time) compilation
  3. Quick start mode (very fast startup)
  4. "ECO" mode (reduce CPU usage)
  5. Idle tuning mode (reduce memory allocation on idle)
  6. Metronome GC (soft real-time GC <1ms pauses)
  7. New profiler and monitoring tools

Next: Using OpenJ9 for running Microservices in Docker

Like what you read? Give Leonardo Zanivan a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.