Fact-checked by Grok 2 weeks ago

OpenJ9

Eclipse OpenJ9 is an open-source (JVM) implementation that provides a high-performance, scalable, and efficient runtime for applications, particularly optimized for cloud-native environments such as and containerized deployments. Originally developed by as the proprietary J9 JVM over 25 years ago, it was open-sourced in September 2017 and contributed to the , where it continues to evolve as Eclipse OpenJ9. Building on the Eclipse OMR project for its runtime components, OpenJ9 is fully compatible with class libraries and supports versions including 8, 11, 17, 21, and 25. Key features of OpenJ9 include a smaller , up to 50% faster startup times compared to other JVMs like , and rapid ramp-up for workloads, making it ideal for resource-constrained settings. It incorporates innovations such as compressed references for efficient memory usage, ahead-of-time (AOT) compilation, and advanced garbage collection policies tailored for low-latency applications. Developed under the as an independent project, OpenJ9 welcomes community contributions via and fosters collaboration through channels like , ensuring ongoing enhancements in performance, diagnostics, and platform support across multiple architectures. It powers production runtimes such as and is integrated into enterprise solutions like WebSphere Liberty and Open Liberty, demonstrating its reliability for large-scale deployments.

Overview

Description and Purpose

Eclipse OpenJ9 is a high-performance, scalable (JVM) implementation that is fully compliant with the Specification and Java SE standards. Originally developed by as the J9 virtual machine, it was open-sourced in 2017 and contributed to the , where it continues to be actively developed as an enterprise-caliber, cross-platform runtime. This implementation represents hundreds of person-years of development effort, drawing on decades of expertise in building robust runtimes. The primary purposes of OpenJ9 center on delivering efficient Java execution in resource-constrained environments, with a strong emphasis on high throughput, low , and rapid startup times. It is particularly optimized for cloud-native applications, , and , where minimizing resource usage and accelerating application launch can significantly reduce operational costs. Compared to other JVMs like Oracle's HotSpot, OpenJ9 differentiates itself through its focus on enterprise scalability, aggressive resource optimization, and exploitation of modern hardware features to enhance overall throughput. For instance, it achieves substantially faster startup and lower initial memory usage, making it ideal for dynamic, short-lived workloads in distributed systems.

Compatibility and Platforms

OpenJ9 is fully compliant with the (Java SE) specifications and serves as a for other Java Virtual Machines (JVMs) such as , ensuring no compatibility breaks for applications built against . As of version 0.56.0 released in October 2025, it supports versions 8, 11, 17, 21, and 25, with additional compatibility for non-LTS releases like 24 and 26 in select builds. OpenJ9 runs on a wide range of operating systems and hardware architectures, including Linux distributions such as CentOS Stream 9, (RHEL) 8.10 and 9.4, and 22.04 and 24.04, across , , ppc64le, and s390x () platforms; and Server editions 2016, 2019, and 2022 on ; macOS 13, 14, and 15 on and ; AIX 7.2 TL5 on ppc64; and . Specific requirements include 2.17 (or 2.12 for Linux) and, for AIX builds targeting OpenJDK 25 and later, the XL C++ Runtime version 17.1.3.0 or higher. Support for these platforms is maintained through community testing infrastructure, with end-of-support aligned to the underlying OS lifecycles. Distribution options for OpenJ9 include source code available via the repository for custom builds against supported levels, pre-built binaries through (first introduced in August 2021 for production use), and Eclipse Adoptium's Temurin builds that bundle OpenJ9 with class libraries. It integrates seamlessly with build tools like and , allowing developers to specify OpenJ9 as the JVM target without modifying application code, as it adheres to standard Java APIs.

History

Origins and Early Development

The origins of OpenJ9 trace back to the at Object Technology International (OTI), a Canadian founded in that specialized in object-oriented development tools. OTI developed the ENVY/Developer integrated development environment and its accompanying Smalltalk virtual machine (VM), which emphasized high-performance execution and modular design for enterprise applications. This Smalltalk VM served as the foundational technology platform, incorporating innovative runtime optimizations that later influenced implementations. In 1996, IBM acquired OTI to bolster its object-oriented technology portfolio, integrating the company's expertise into its broader software ecosystem. Shortly thereafter, IBM adapted the Smalltalk VM for , rebranding it as the J9 VM to support the emerging Java platform. This adaptation involved porting core runtime components, such as the just-in-time (JIT) compiler and garbage collector, to handle while retaining the modular architecture from OTI's original design. The J9 VM quickly became a key component in IBM's Java offerings, targeting server-side and enterprise workloads. By the late , the J9 VM achieved initial support, enabling compatibility with Java 1.1 and subsequent versions, and it evolved into a production-ready (JVM) by the early 2000s. IBM integrated J9 extensively into its products, including , where it powered scalable deployments for and . Key milestones included the release of J9 as part of Studio in 2001, marking its transition from experimental to enterprise-grade reliability. During this IBM proprietary era, development emphasized performance tuning for enterprise servers, with innovations like adaptive JIT compilation to reduce startup times and improve throughput under high-load conditions. Hardware-specific optimizations were a hallmark, particularly for IBM's Z (mainframe) and Power architectures, where J9 exploited vector instructions and large-scale memory management to achieve notable performance advantages in transaction processing compared to contemporary JVMs. These enhancements solidified J9's role in mission-critical environments, influencing later open-source iterations.

Open Sourcing and Eclipse Era

In early 2016, IBM open-sourced the core, non-Java runtime components of J9 as the Eclipse OMR project, laying the groundwork for broader collaboration. In September 2017, IBM announced the open-sourcing of its proprietary J9 Java Virtual Machine by contributing it to the Eclipse Foundation, where it was established as the OpenJ9 project to encourage broader community collaboration and innovation in cloud-native Java environments. This move transformed the long-standing commercial JVM into an open-source initiative under the Eclipse Foundation's governance, enabling contributions from diverse developers while leveraging IBM's foundational codebase. The project quickly gained traction as an incubator effort, with IBM committing significant resources to maintain its high-performance characteristics for enterprise and cloud workloads. The first official release, version 0.8.0, arrived in March 2018, marking OpenJ9's debut as a fully open-source JVM compatible with 8 binaries and setting the stage for rapid iterative development driven by input. Subsequent releases followed a brisk cadence, incorporating enhancements from external contributors alongside IBM's core team, which fostered improvements in and platform support. Key milestones included the introduction of experimental JIT Server technology in January 2020, which decoupled JIT compilation to run remotely, optimizing resource use in distributed systems. Further advancements came with the launch of IBM Semeru Runtimes in August 2021, providing free, production-ready binaries built on OpenJ9 to simplify adoption for developers seeking enterprise-grade Java environments without licensing costs. In August 2023, updates to the IBM Semeru Runtime Certified Edition for multi-platforms were released, incorporating the latest security fixes. By October 2025, OpenJ9 reached version 0.56.0, featuring updates such as refined CPU load APIs via the -XX:+CpuLoadCompatibility option for accurate initial sampling, expanded Java Flight Recorder (JFR) events for native libraries and system processes across platforms, and new garbage collection parameters like -Xgc:enableEstimateFragmentation to control fragmentation estimates in output logs. The Eclipse era has seen substantial community growth, centered around an active repository for issue tracking and code submissions, complemented by channels for real-time discussions and regular contributor calls. continues to serve as the primary contributor, with dozens of its developers driving the majority of commits and project leadership, ensuring alignment with commercial needs while welcoming external participation.

Core Features

Just-In-Time Compiler

The compiler in Eclipse OpenJ9 dynamically compiles platform-neutral into optimized native at , targeting methods based on their invocation to reduce CPU cycles and usage compared to . This on-the-fly compilation process enhances application performance by generating code tailored to observed execution patterns, with decisions driven by a sampling thread that profiles method usage. OpenJ9 employs a multi-level optimization to manage costs and benefits: at the level, methods are either interpreted or compiled minimally to prioritize fast startup across numerous initial methods; the warm level serves as the default for post-startup compilations, applying basic optimizations; hot compilation targets methods consuming more than 1% of total execution time, enabling aggressive inlining; very hot adds profiling data to prepare for scorching compilation; and scorching represents the peak level for methods exceeding 12.5% usage, incorporating advanced techniques like full , , and to maximize efficiency. These escalating levels allow the to progressively refine code as methods demonstrate sustained hotness, balancing overhead for infrequent paths with deep optimizations for critical ones. A distinctive feature of OpenJ9's is its use of higher hotness thresholds—such as the 12.5% mark for scorching level—which delays aggressive recompilations to favor throughput in long-running applications, where sustained execution justifies the in optimizations despite initial CPU and costs. The also incorporates platform-specific enhancements, including instructions to exploit SIMD capabilities for data-parallel operations in numerical workloads. In performance evaluations, these JIT optimizations contribute to OpenJ9's steady-state efficiency, achieving peak throughput faster than alternatives like in server scenarios, with up to 50% smaller footprints during sustained loads that scalable long-running deployments. For instance, in 8 configurations, OpenJ9 reaches optimal in 8.5 minutes versus 30 minutes for , underscoring the JIT's role in rapid convergence to high-efficiency execution. As of 2025, recent enhancements include template-based JIT compilations that further improve startup times in container environments.

Ahead-of-Time Compiler

The Ahead-of-Time (AOT) in enables pre-compilation of methods into native code to accelerate application startup, distinct from compilation by focusing on reusable, cached artifacts across JVM instances. During an initial "cold" run, the AOT identifies and compiles frequently executed methods based on behavior, generating relocatable native code that includes validation records to verify assumptions (such as class layouts and method signatures) and relocation records to adjust addresses for reuse. This compiled code is stored in the shared classes cache, activated via the -Xshareclasses option, allowing subsequent "warm" runs to load and execute it directly without interpretation or initial overhead. Enhancements to the AOT process include dynamic updates to the shared classes cache, where new compilations from ongoing executions can incrementally populate or refine the cache without full rebuilds, ensuring adaptability to evolving workloads. For containerized and environments, the -Xtune:virtualized flag tunes the to favor rapid startup over long-term peak throughput by increasing AOT aggressiveness, reducing CPU consumption during initialization by 20-30%, though it may incur a minor 2-3% throughput penalty under sustained load. These features leverage the cache's persistence across JVM restarts, provided the cache remains valid. As of August 2024, JITServer AOT caching is enabled by default for improved performance in distributed setups. Key benefits of AOT compilation include substantial reductions in JVM startup time, often by up to 50% in and serverless scenarios, as pre-compiled bypasses the need for on-the-fly interpretation or warmup for common methods. When integrated with class data sharing, AOT forms a layered caching mechanism that combines ( classes) with native in the same cache, further optimizing memory efficiency and load times by avoiding redundant disk I/O and verification steps—enabling shared access across multiple JVM instances on the same system. This complements compilation by delivering a "warm start" state, where AOT handles initial execution while takes over for profile-driven optimizations. Despite these advantages, AOT has limitations, including the risk of using outdated code if class changes invalidate validation records, necessitating or recompilation to maintain correctness. Additionally, the shared classes requires compatible and —such as the same CPU instruction set and operating system—for effective reuse, limiting portability across diverse environments without reconfiguration.

Class Data Sharing

Class data sharing in OpenJ9 enables multiple JVM instances to share a persistent of , reducing redundancy and improving efficiency. The feature is activated using the -Xshareclasses option, which creates a disk-based —typically memory-mapped files—storing constants, method data, and other information loaded from the filesystem. Once populated, this allows subsequent JVMs to load classes directly from rather than reloading from disk each time, facilitating reuse across processes without duplication. The supports various operational modes to suit different environments. By default, is enabled for bootstrap classes only (-Xshareclasses:bootClassesOnly), providing single-step without additional . For broader coverage, full mode (-Xshareclasses) includes application classes, with dynamic updates occurring transparently as new classes are loaded into the during —no JVM restart required. Multiple caches can coexist per , using named caches (-Xshareclasses:name=<cacheName>) to isolate data for specific applications or layered setups in containerized deployments like . This mechanism yields significant advantages, particularly in resource-constrained settings. It cuts memory usage by sharing common class data, achieving up to 30% reduction in containerized applications where multiple instances run concurrently. Additionally, it accelerates class loading and startup times for repeated JVM invocations, making it ideal for microservices and scalable deployments. Cache integrity is maintained through validation and management policies. Each cached class includes a fingerprint—based on timestamps and content hashes—to detect modifications; if a class changes, it is invalidated and reloaded from the original source before being re-stored. For space management, eviction occurs automatically for stale or oversized entries, with utilities like java -Xshareclasses:printStats for monitoring and -Xshareclasses:destroy for manual cleanup, ensuring the cache remains efficient over time.

Runtime Components

Garbage Collection

OpenJ9 implements a suite of garbage collection (GC) policies optimized for diverse workloads, emphasizing low-latency operations and high throughput in enterprise and cloud environments. These policies manage memory reclamation in the heap by identifying and removing unreachable objects, minimizing application pauses through concurrent and incremental techniques. The default balances generational collection with concurrent phases to suit typical applications, while alternatives cater to or large-heap scenarios. The generational concurrent (gencon) policy serves as the default, dividing the heap into a nursery for short-lived objects and a tenure area for long-lived ones. It employs a concurrent mark-sweep algorithm for the tenure phase, allowing the application to continue executing during marking, followed by stop-the-world (STW) sweeps; the nursery uses STW scavenging, with an optional concurrent scavenge to further reduce pauses. This approach excels in transactional workloads with many short-lived objects, achieving efficient throughput by promoting survivors judiciously. For throughput-oriented applications, the balanced policy partitions the heap into multiple equal-sized regions across generations, using incremental concurrent marking and copy-forward collection, with optional compaction to mitigate fragmentation. Since version 0.53.0, large arrays use OffHeap storage instead of arraylets to enhance . It distributes pause times evenly and scales well for heaps exceeding 100 , reducing overall GC overhead in data-intensive tasks. The metronome policy, designed for real-time low-latency needs, treats the heap as a single of contiguous small regions (approximately 64 KB each) and performs incremental mark-sweep in brief cycles, ensuring predictable behavior without full-heap pauses. OpenJ9's GC algorithms incorporate concurrent mark-sweep in policies like gencon for non-disruptive identification of , alongside compressed that employ 32-bit pointers for up to 64 GB on 64-bit platforms, enabling efficient memory usage without sacrificing addressability. Starting in version 0.56.0, parameters such as -Xgc:enableEstimateFragmentation allow for the calculation and reporting of macro fragmentation estimates via verbose GC output, aiding in the analysis of efficiency post-collection. Tuning options enable customization for specific environments; for instance, -Xmn adjusts the size in gencon to scavenging , while -XX:+UseContainerSupport activates container-aware heap sizing in and , aligning maximum heap limits with cgroup memory constraints to prevent out-of-memory kills and optimize pauses in cloud deployments. These adjustments prioritize reduced times, with gencon and balanced policies supporting concurrent modes to maintain responsiveness under load. In performance terms, the policy provides short, predictable pauses, making it suitable for applications requiring deterministic , while gencon and balanced achieve competitive throughput with reduced and distributed pause times for large heaps. OpenJ9's interacts with the just-in-time to optimize allocation stubs based on observed patterns, enhancing overall efficiency.

Diagnostic Tools

OpenJ9 provides a comprehensive suite of built-in diagnostic tools designed to monitor, debug, and analyze (JVM) behavior during runtime and post-mortem scenarios. These tools enable developers and administrators to capture detailed information about application states, usage, and performance bottlenecks without requiring external agents in many cases. Key components include dump generation for various failure modes and verbose logging mechanisms that output critical events to files or consoles for further analysis. The primary diagnostic outputs are Java dumps, which capture thread states, locks, and monitor information to diagnose hangs or deadlocks; heap dumps, which represent the object graph in the Java heap for memory leak investigations; and system dumps, which provide a full process image including native stack traces for deeper core-level analysis. These dumps can be triggered automatically via the -Xdump command-line options, such as specifying events like OutOfMemoryError or manual signals, allowing customization of output formats and destinations like files or pipes. For instance, -Xdump:java:events=vmstop can generate a Java dump upon JVM termination, aiding in exit code troubleshooting. Verbose GC and trace logging further enhance , with options like -verbose:gc outputting garbage collection cycles and -Xtrace enabling fine-grained tracing of JVM internals. The Diagnostic Tool Framework for Java (DTFJ) API stands out as a programmatic interface for post-mortem analysis, permitting tools like the Eclipse Memory Analyzer Tool (MAT) to parse OpenJ9 dumps and visualize heap structures, thread graphs, and leak suspects. This API abstracts dump formats, making OpenJ9-compatible with standard diagnostic ecosystems. Additionally, OpenJ9 integrates with Flight Recorder (JFR), a low-overhead event-based system available from 11 onward, with expansions in version 0.56.0 to include NativeLibrary and SystemProcess events for better tracking of native interactions and process metrics. JFR recordings can be initiated via -XX:StartFlightRecording and analyzed using JDK Mission Control. Unique to OpenJ9 are its integrated tracing capabilities for just-in-time () compilations and garbage collection () cycles, which log compiler decisions, method inlining, and GC phase timings directly through -Xjit:verbose or extended verbose GC options, facilitating without third-party profilers. These features collectively ensure robust diagnostics tailored to enterprise-scale deployments.

Advanced Capabilities

JIT Server

JITServer is an experimental remote Just-In-Time (JIT) compilation mode introduced in Eclipse OpenJ9 in January 2020, which decouples the compiler from the client JVM and runs it as a separate process on a local or remote server. In this architecture, client JVMs send method profiles, bytecode, and runtime data to a central JIT server via for , while the server aggressively caches compiled code and queries additional information as needed to minimize network overhead. This builds on the local compiler by offloading tasks to reduce interference in resource-constrained environments. The primary benefits of JITServer include faster application ramp-up and improved resource utilization in distributed, multi-instance setups such as clusters, where multiple JVMs can share a single JIT server to avoid redundant . By centralizing , it lowers local CPU overhead by up to 77% and usage by up to 62% in high-density deployments, enabling higher instance density and better without sacrificing performance. Cache sharing across clients further optimizes this by reusing compiled native code, reducing warm-up times by up to 87% in cloud-native scenarios. Configuration involves starting the JIT server process with the jitserver command, which listens on a default port (38400) for incoming requests, and enabling client mode on JVMs using the -XX:+UseJITServer flag along with options like -XX:JITServerAddress for the location. Additional tuning parameters, such as -XX:JITServerTimeout for connection timeouts and encryption via certificates, support secure and efficient operation in production environments. Initially released as a preview feature, JITServer evolved to production-ready status by 2023, with stable integrations in Runtimes and widespread adoption in high-density cloud deployments for its robustness and scalability.

Checkpoint/Restore Support

OpenJ9 introduced support for Checkpoint/Restore In Userspace (CRIU) in 2022 as a technical preview, enabling the pausing and resuming of JVM states to facilitate rapid restarts in resource-constrained environments. This feature leverages the CRIU utility to capture a comprehensive of the running JVM, including memory pages, loaded classes, file descriptors, processes, and network connections, which can then be restored to resume execution from the exact checkpointed state. The implementation provides an in the org.eclipse.openj9.criu package, allowing developers to invoke checkpointing programmatically while the JVM is operational. To enable CRIU functionality, users apply the -XX:+EnableCRIUSupport JVM option, which activates the necessary and prepares the for checkpoint operations using external CRIU tools. The process involves halting non-checkpoint threads in single-threaded mode to ensure a consistent state, followed by CRIU dumping the image to disk; restoration reads this image and reinitializes the JVM, supporting multiple restores from a single checkpoint. Compatibility extends to shared classes and ahead-of-time (AOT) compilation, preserving these elements in the checkpoint for efficient warm restores that complement class data sharing mechanisms. This support is available on architectures including , (little-endian), , and , targeting 11 and later LTS versions. The primary benefits of OpenJ9's CRIU integration lie in dramatically reduced startup times for Java applications, particularly in serverless and Function-as-a-Service (FaaS) platforms where cold starts can introduce significant latency. Early benchmarks with Open Liberty applications demonstrated up to 10x faster startups compared to traditional JVM launches, translating to over 90% reduction in initialization overhead and enabling sub-second response times in dynamic scaling scenarios. This makes CRIU particularly suitable for containerized environments, where applications can be checkpointed offline and restored on-demand without full reinitialization.

Adoption and Impact

Enterprise and Commercial Use

OpenJ9 serves as a core component in IBM's enterprise middleware portfolio, powering the , , and runtimes, where it provides the default for deploying and managing Java EE and microservices-based applications. These integrations leverage OpenJ9's low and fast startup times to optimize performance in production environments. Additionally, OpenJ9 underpins key elements of the Pak family, such as Cloud Pak for Data and Cloud Pak System, facilitating secure and scalable containerized workloads across hybrid infrastructures. In early 2025, integrated 's and middleware teams to unify development strategies for Java runtimes, potentially enhancing 's integration with technologies such as . Runtimes, built on , offer pre-built, no-cost distributions of tailored for enterprise use, enabling drop-in replacements for existing Java environments in hybrid cloud deployments. Launched in 2021 with ongoing updates, including 21 support by September 2023, these runtimes emphasize security, compliance, and efficiency for commercial applications without proprietary licensing fees. In the financial services sector, a notable example involves a major migrating a legacy Java 8 monolith to Java 17 on Semeru Runtimes within a Kubernetes-orchestrated setup, resulting in enhanced scalability and reduced operational overhead. In containerized environments, OpenJ9 deployments have demonstrated infrastructure cost savings of around 30% via decreased usage relative to HotSpot-based alternatives, allowing higher of application instances on shared resources. OpenJ9 benefits from vendor certifications that affirm its enterprise readiness, including compatibility with for Kubernetes-native deployments, ensuring robust support in certified container platforms.

Community and Open Source Integration

Eclipse is governed by the as a top-level open source project, ensuring transparent development and community involvement since its donation by in 2017. The project operates under a permissive dual licensing model, including the 2.0 (EPL-2.0) and 2.0, which facilitates compatibility with the project's GPLv2 with Classpath Exception for building full JDK distributions. This licensing structure promotes broad adoption and contributions while maintaining enterprise-grade reliability. The OpenJ9 community engages through multiple channels, including a dedicated workspace for discussions, issue tracking, and planning, as well as bi-weekly community calls featuring updates, lightning talks, and Q&A sessions. Contributions are welcomed via the project's repository, where 31 active committers—primarily from but including external developers—handle code reviews, bug fixes, and feature enhancements. All contributors must sign the Eclipse Contributor Agreement to align with the foundation's policies, fostering a collaborative environment that has resulted in ongoing improvements like support for newer versions and performance optimizations. OpenJ9 integrates deeply with the broader Java ecosystem. It builds upon the Eclipse OMR (Optimizing Micro Runtime) project for shared runtime components, enabling reuse across languages and reducing development overhead. This integration extends to compatibility with class libraries, allowing seamless use in distributions like IBM Semeru Runtime, while community-driven efforts ensure alignment with SE specifications through regular testing and feedback loops.

References

  1. [1]
    Eclipse OpenJ9 - The Eclipse Foundation
    Eclipse OpenJ9 is a fast, efficient, high-performance, and scalable Java virtual machine (JVM) optimized for cloud applications.Missing: official | Show results with:official
  2. [2]
    eclipse-openj9/openj9: Eclipse OpenJ9: A Java Virtual ... - GitHub
    Eclipse OpenJ9 is an independent implementation of a Java Virtual Machine. "Independent implementation" means it was built using the Java Virtual Machine ...Missing: official | Show results with:official
  3. [3]
    Where do you get your Java? - IBM Developer
    May 23, 2024 · The OpenJ9 Advantage​​ This JVM also has a lot of history. Originally developed by IBM over 25 years ago as the J9 JVM, it was open sourced to ...<|control11|><|separator|>
  4. [4]
    Getting started with Eclipse OpenJ9
    Eclipse OpenJ9 is a high performance, scalable, Java virtual machine (VM) implementation that is fully compliant with the Java Virtual Machine Specification.
  5. [5]
    Eclipse OpenJ9 | projects.eclipse.org
    Eclipse OpenJ9 is a high performance, enterprise calibre, flexibly licensed, openly governed cross platform Java Virtual Machine (JVM)
  6. [6]
    Eclipse OpenJ9 - The Eclipse Foundation
    Eclipse OpenJ9 is a fast and efficient JVM that delivers power and performance when you need it most. Optimized for the Cloud, for microservices and monoliths ...
  7. [7]
    Eclipse OpenJ9 performance
    OpenJDK 11 performance with Eclipse OpenJ9 · 51% faster startup time · 50% smaller footprint after startup · Faster ramp-up time in the cloud · 33% smaller ...51% Faster Startup Time · 33% Smaller Footprint During... · Openjdk 8 Performance With...
  8. [8]
    Supported environments - - The Eclipse Foundation
    Eclipse OpenJ9 supports multiple JDK levels (JDK8+) and any hardware/OS with community maintenance, but not all platforms are currently supported.
  9. [9]
    OpenJDK with Eclipse OpenJ9: No worries, just improvements
    Jan 11, 2019 · OpenJDK with Eclipse OpenJ9. Great performance, better memory efficiency, and optional support from a major vendor you can count on.
  10. [10]
    IBM Semeru Runtimes release notes
    Eclipse OpenJ9™ Java virtual machine implementation. Release information for the version of each component can be found in the following locations: Eclipse ...
  11. [11]
    Moving to OpenJDK with Eclipse OpenJ9
    Feb 26, 2019 · Migrating to an OpenJDK with OpenJ9 is straightforward for most applications because they use the same stable and compatible APIs from the ...Command-Line Options · Garbage Collection Policies · InterfacesMissing: breaks | Show results with:breaks
  12. [12]
    IBM's Eclipse OpenJ9 Is A Promising Open-Source JVM - Phoronix
    Sep 18, 2017 · For those that missed the news over the weekend, IBM has open-sourced its in-house JVM and contributed it to the Eclipse Foundation.Missing: J9 | Show results with:J9
  13. [13]
    A strong history and commitment to open source - IBM
    our Java runtime, J9, a high-performance, low-memory footprint Java Virtual Machine (JVM) optimized for the cloud, contributed to the Eclipse Foundation as the ...
  14. [14]
    Eclipse OpenJ9; not just any Java Virtual Machine
    Eclipse OpenJ9 embeds Eclipse OMR, which provides core runtime components that can be used to build runtime environments for different programming languages.
  15. [15]
    Version 0.8.0 - - The Eclipse Foundation
    Version 0.8.0 is the first release of Eclipse OpenJ9™, as defined in the release plan. This release supports OpenJDK Version 8 binaries at AdoptOpenJDK.net that ...Missing: v0. 2018
  16. [16]
    Free your JVM from the JIT with JITServer technology
    In Eclipse Openj9 JVM we have decoupled the JIT compiler from the rest of the JVM and made it run in its own independent process, either locally or on a remote ...Missing: experimental | Show results with:experimental
  17. [17]
    IBM Semeru Runtime Certified Edition for Multi-platforms (Non-z/OS ...
    Aug 24, 2023 · The binaries have been made generally available on our standard distribution sites as on August 24, 2023. With these releases, IBM Semeru ...
  18. [18]
    Version 0.56.0 - - The Eclipse Foundation
    Known problems and full release information. To see known problems and a complete list of changes between Eclipse OpenJ9 v0.55.0 and v0.56.0 releases, see the ...Missing: October 2025
  19. [19]
    JIT Compiler - - The Eclipse Foundation
    The JIT compiler can compile a method at different optimization levels: cold, warm, hot, very hot (with profiling), or scorching. The hotter the optimization ...
  20. [20]
    Exploring JITServer on the new Linux on IBM z16 Platform
    May 25, 2022 · With the recent 0.32 release of Eclipse OpenJ9, the JITServer technology was officially released and made available for the Linux on IBM z ...
  21. [21]
    Eclipse OpenJ9 performance
    OpenJ9 reaches peak throughput much faster than HotSpot making it especially suitable for running short-lived applications. 33% smaller footprint during load.
  22. [22]
    AOT Compiler - - The Eclipse Foundation
    Ahead-Of-Time (AOT) compiler. The AOT compiler dynamically compiles Java methods into native AOT code at runtime and stores them in the shared classes cache.
  23. [23]
    Intro to Ahead Of Time Compilation - Eclipse OpenJ9 Blog
    Oct 10, 2018 · This post is meant to serve as an introduction to Ahead Of Time (AOT) compilation in OpenJ9. It does not delve too deeply into the technical ...
  24. [24]
    Optimize JVM start-up with Eclipse OpenJ9 - IBM Developer
    Nov 30, 2018 · Two major mechanisms aimed at improving start-up time in OpenJ9 are the shared classes cache (SCC) and dynamic ahead-of-time (AOT) compilation technology.
  25. [25]
    IBM Introduces the Semeru Runtimes for OpenJ9 - InfoQ
    Oct 13, 2021 · This improves startup times. The Shared Class Cache (SCC) is used to cache Java classes, AOT compiled code, etcetera. The cache persists even ...
  26. [26]
    Running Payara Micro on OpenJ9
    Oct 22, 2019 · OpenJ9 has a feature called class data sharing which enables the J9 JVM to store class data and dynamic Ahead of Time (AOT) compiled code into a ...
  27. [27]
    Introduction to class data sharing - The Eclipse Foundation
    When class data sharing is enabled, OpenJ9 automatically creates shared memory that stores and shares the classes in memory between processes.Class Data Sharing... · Creating A Shared Classes... · Support For Custom Class...
  28. [28]
    OpenJ9 class sharing is enabled by default
    Oct 15, 2019 · Class data sharing is enabled by default for bootstrap classes from release 0.16.0 of OpenJ9 onwards (unless you are running in a container).Missing: documentation | Show results with:documentation
  29. [29]
  30. [30]
    GC policies - - The Eclipse Foundation
    Eclipse OpenJ9™ provides several garbage collection (GC) policies that are designed around different application workloads and service level agreements. Each GC ...Policy Selection And Tuning · Gencon Policy (default) · Concurrent Scavenge
  31. [31]
    Garbage Collection (GC) - - The Eclipse Foundation
    When garbage is collected, the garbage collector must obtain exclusive access to the heap, which causes an application to pause while the cleanup is done. This ...
  32. [32]
  33. [33]
    Eclipse OpenJ9 in Containers
    Jun 12, 2018 · OpenJ9 uses the amount of physical memory in the system to determine its default heap limit, even when running in container.
  34. [34]
    Diagnostic data and tooling - The Eclipse Foundation
    Eclipse OpenJ9™ contains a broad range of diagnostic capabilities to help identify, isolate, and solve run time problems. These capabilities include dump files ...
  35. [35]
  36. [36]
  37. [37]
  38. [38]
    CRIU: How to handle log files between checkpoint and restore #16601
    Jan 24, 2023 · J9 has various ways to log JVM info to file while the application is running (verbose GC, Xtrace, etc.). Due to the inner workings of criu, ...
  39. [39]
    JITServer technology - - The Eclipse Foundation
    JITServer technology decouples the JIT compiler from the VM and lets the JIT compiler run remotely in its own process.Using Jitserver Technology · Launch Openj9 In Server Mode · Configuring Jitserver...Missing: experimental January 2020
  40. [40]
    Using OpenJ9 JITServer in Kubernetes - IBM Developer
    Nov 17, 2023 · The JITServer technology from the Eclipse OpenJ9 JVM allows you to offload JIT compilations to a server that runs on a local or a remote machine ...Step 1. Deploying Jitserver · (option A) Deploying... · (option B) Deploying...
  41. [41]
    Disaggregated Caching JIT Compiler for the JVM in the Cloud
    JITServer is a disaggregated caching JIT compiler we implemented in the Eclipse OpenJ9 JVM. It improves system-wide resource utilization.Missing: Server | Show results with:Server
  42. [42]
    How we developed the Eclipse OpenJ9 CRIU Support for fast Java ...
    Jul 19, 2023 · Then we implemented a shared class cache (SCC) and ahead-of-time (AOT) ... A graph showing the reduction in time-to-first-response when restoring ...
  43. [43]
    CRIU support - - The Eclipse Foundation
    In OpenJ9, the CRIU support includes an API that you can use to stop the VM at a checkpoint, save its state, and then run the VM from the point where it was ...Missing: integration | Show results with:integration
  44. [44]
    CRIUSupport (OpenJ9 JDK 11)
    Restore is reading the saved checkpoint state and resuming the JVM application from when it was checkpointed. This technology is available via CRIU (checkpoint/ ...
  45. [45]
    -XX:[+|-]EnableCRIUSupport - IBM
    The option enables the use of org.eclipse.openj9.criu.CRIUSupport APIs. With CRIU support, you can take a checkpoint of the VM and restore the checkpoint image.
  46. [46]
    OpenJ9 CRIU Support: A look under the hood
    Oct 14, 2022 · A distinct approach in how Java security components are managed to avoid embedding any sensitive information in CRIU checkpoint image files.Missing: integration | Show results with:integration
  47. [47]
    Fast JVM startup with OpenJ9 CRIU Support
    Sep 26, 2022 · Linux Checkpoint Restore in User Space (CRIU) is a service that allows users to checkpoint an application in user space and then restore at ...
  48. [48]
    Security Bulletin: IBM Watson Assistant for IBM Cloud Pak for Data is ...
    Feb 8, 2023 · Potential security bypass vulnerability in Eclipse Openj9-(CVE-2022-3676) has been identified that may affect IBM Watson Assistant for IBM Cloud ...
  49. [49]
    IBM Semeru Runtimes - IBM Developer
    Built with the OpenJDK class libraries and the Eclipse OpenJ9 JVM, IBM Semeru Runtimes deliver high quality, strong security, and top performance to run ...
  50. [50]
    IBM Semeru Runtime - endoflife.date
    The IBM Semeru Runtimes are free production-ready binaries built with the OpenJDK class libraries and the Eclipse OpenJ9 JVM.
  51. [51]
    HotSpot vs OpenJ9 — choosing the right JVM | BellSoft Java
    Jun 28, 2022 · The default HotSpot configuration demonstrates the best throughput (5% higher than the best OpenJ9 configuration) and latency (69% lower than ...Experiment setup · Results · Startup · Footprint
  52. [52]
    Modernizing Legacy Java Apps with Semeru and Kubernetes
    Apr 17, 2025 · Real-World Use Case. A large financial services company migrated a monolithic Java 8 application to: Java 17 on Semeru; Dockerized microservice ...
  53. [53]
    (PDF) Integrating OpenJ9 Optimizations for Container Environments
    Oct 26, 2025 · Benchmarking results indicate that OpenJ9 reduces startup times by up to 35% and memory utilization by nearly 30% compared to standard HotSpot ...<|separator|>
  54. [54]
    OpenJDK 11 + Eclipse OpenJ9 for Java Applications on RHEL8
    Red Hat product repositories for IBM Power (ppc64le) and IBM Z (s390x) using OpenJ9 have been deprecated. Refer to this knowledge article for more information.
  55. [55]
    Eclipse OpenJ9 | projects.eclipse.org
    Get involved in Eclipse projects to help contribute to their success. We welcome users and adopters as part of the community.
  56. [56]
  57. [57]
    Adoptium: Home
    Eclipse Adoptium provides prebuilt OpenJDK binaries from a fully open source set of build scripts and infrastructure.Eclipse AQAvit · Eclipse Temurin · Eclipse Mission Control · Marketplace