J9 VM components

The J9 Virtual Machine (VM) technology comprises a set of components.

The following diagram shows the component structure of the J9 VM:
This diagram shows the component structure (building blocks) of the J9 Virtual Machine
JVM API
The JVM API encapsulates all the interaction between external programs and the J9 VM. Examples of interaction include:
  • Creation and initialization of the VM through the invocation APIs.
  • Interaction with the standard Java™ launchers, including handling command-line directives.
  • Presentation of public JVM APIs such as JNI and JVMTI.
  • Presentation and implementation of private VM APIs used by core Java classes.
Class loader
The class loader component is responsible for supporting dynamic code loading facilities. The dynamic code loading facilities include:
  • Reading standard Java .class files.
  • Resolving class definitions in the context of the current runtime environment.
  • Verifying the bytecodes defined by the class file to determine whether the bytecodes are language-legal.
  • Initializing the class definition after it is accepted into the managed runtime environment.
  • Various reflection APIs for introspection on the class and its defined members.
JIT compiler
The Just-In-Time (JIT) compiler improves the performance of Java applications by compiling bytecodes in to native machine code at runtime. The JIT compiler is described in Enabling and disabling the JIT compiler.
Memory Management
The memory management component is responsible for the efficient use of system memory by a Java application. Java programs run in a managed execution environment. When a Java program requires storage, the memory management component allocates the application a discrete region of unused memory. After the application no longer refers to the storage, the memory management component must recognize that the storage is unused and reclaim the memory for subsequent reuse by the application or return it to the operating system. The memory management component has several policy options that you can specify when you deploy the application. Memory management discusses memory management in the J9 VM.
Diagnostic component
The diagnostic component provides Reliability, Availability, and Serviceability (RAS) facilities to the JVM. The J9 VM is distinguished by its extensive RAS capabilities. The J9 VM is deployed in business-critical operations and includes several trace and debug utilities to assist with problem determination. If a problem occurs in the field, it is possible to use the capabilities of the diagnostic component to trace the runtime function of the VM and help to identify the cause of the problem. The diagnostic component can produce output selectively from various parts of the VM and the JIT. For more information about the diagnostic component, see Diagnostic component.
Platform abstraction layer
The platform abstraction layer provides support for running Java applications on different platform architectures, including Linux, Windows, macOS, AIX, and z/OS operating systems.