Oracle GraalVM Enterprise Edition Architecture Overview
This page provides developers, solution architects, and infrastructure architects with an architectural overview of GraalVM Enterprise, as well as information about runtime modes, supported platforms, available distributions, core and additional functionalities, and support levels for various features. The conceptual overview and advantages of GraalVM Enterprise are described on the Solutions Overview page.
- GraalVM Enterprise Architecture
- Runtime Modes
- Available Distributions
- Supported Platforms
- Distribution Components List
- Licensing and Support
- Experimental and Early Adopter Features
- What to Read Next
GraalVM Enterprise Architecture
Figure 1. GraalVM Enterprise Runtime
The preceding diagram illustrates a complete high-level architecture of GraalVM Enterprise.
GraalVM Enterprise is unique as a runtime environment offering two modes of operation: JVM runtime mode and Native Image (the same Java applications can be run on either).
JVM Runtime Mode
When running programs in the JVM runtime mode, GraalVM Enterprise adds the GraalVM compiler as the top-tier JIT compiler. At runtime, an application is loaded and executed normally on the JVM. The JVM passes bytecode to the GraalVM compiler, which compiles that to the machine code and returns it to the JVM. In the same way GraalVM Enterprise can execute programs written in JVM-based languages, it can also run the Truffle language implementation framework and languages interpreters, which are all Java programs, and thus can run them on the JVM.
Native Image is an innovative technology offered by GraalVM Enterprise that can ahead-of-time compile Java code to a standalone native executable, called a native image. The Java code that is processed during a native image build includes all application classes, dependencies, runtime library classes from JDK, and statically-linked native code from JDK. This self-contained native image is specific for individual operating systems and architectures, and may not require a JVM to run on.
GraalVM Enterprise distributions are based on Oracle Java 8 and 11. The GraalVM Enterprise Java 8-based distribution is built on Oracle JDK 1.8.0_281. The GraalVM Enterprise Java 11-based distribution is built on Oracle JDK 11.0.10. GraalVM Enterprise releases include all Oracle Java critical patch updates (CPUs), which are released on a regular schedule to remedy defects and known vulnerabilities.
GraalVM Enterprise distributions are available for Linux, macOS, and Windows platforms on x86 64-bit systems, and for Linux on ARM 64-bit system. The base GraalVM binary including all components is experimental on Linux/ARM and Windows.
The following are the supported platforms for GraalVM Enterprise 20:
|Operating System||Version||Architecture||Installation Guide|
|Oracle Linux on OCI||6, 7, 8||x86 64-bit||Oracle GraalVM Enterprise Edition Installation Guide on OCI|
|Oracle Linux||6, 7, 8||x86 64-bit, ARM 64-bit (experimental)||Oracle GraalVM Enterprise Edition Installation Guide for Linux|
|Red Hat Enterprise Linux(RHEL)||6, 7, 8||x86 64-bit||Oracle GraalVM Enterprise Edition Installation Guide for Linux|
|macOS||10.13 (High Sierra), 10.14 (Mojave), 10.15 (Catalina)||x86 64-bit||Oracle GraalVM Enterprise Edition Installation Guide for macOS|
|Windows||10||x86 64-bit||Oracle GraalVM Enterprise Edition Installation Guide for Windows|
Distribution Components List
GraalVM Enterprise consists of core and additional functionalities.
- Java HotSpot VM
- LLVM runtime
Libraries (JAR files)
- GraalVM compiler - the top-tier JIT compiler
- Polyglot API – the APIs for combining programming languages in a shared runtime
llitool to directly execute programs from LLVM bitcode
- GraalVM Updater to install additional functionalities
GraalVM Enterprise core installation can be extended with more languages runtimes and utilities.
- Native Image – a technology to compile an application ahead-of-time into a native executable.
- LLVM toolchain – a set of tools and APIs for compiling native programs to bitcode that can be executed on GraalVM.
- Python – Python 3.8.5 compatible
- Ruby – Ruby 2.6.6 compatible
- R – GNU R 3.6.1 compatible
- GraalWasm – WebAssembly (Wasm)
Licensing and Support
Oracle GraalVM Enterprise Edition is licensed under the Oracle Technology Network License Agreement for GraalVM Enterprise Edition for developing, testing, prototyping, and demonstrating Your application.
For production use, GraalVM Enterprise is available as part of the Oracle Java SE Subscription which includes 24x7x365 Oracle premier support and the access to My Oracle Support (MOS).
Experimental and Early Adopter Features
Oracle GraalVM Enterprise Edition features are distributed as fully supported, early adopter, and experimental.
Experimental features are being considered for future versions of the product.
They are not meant to be used in production and are not supported by Oracle.
Oracle welcomes feedback on experimental features but users should be aware that experimental features might never be included in a production version, or might change significantly before being considered production-ready.
The experimental features in GraalVM Enterprise can be unlocked using the
--experimental-options option passed on the command line to the language launchers, or with
Engine.Builder#allowExperimentalOptions set in other scenarios.
Early adopter features are considered production-ready, but are subject to ongoing development, testing, and modification. The technology identified as “early adopter” may significantly change and future releases may include changes that are incompatible with the current version. For more information, check the License for Early Adopter Versions of Oracle Master Agreement.
The following table indicates the Experimental and Early Adopter features in GraalVM Enterprise 20.
|Native Image||Early Adopter||Early Adopter||Early Adopter|
|LLVM runtime||supported||supported||not available|
|LLVM toolchain||supported||supported||not available|
|Python runtime||experimental||experimental||not available|
|Ruby runtime||experimental||experimental||not available|
|R runtime||experimental||experimental||not available|
|WebAssembly runtime||experimental||experimental||not available|
What to Read Next
Users who are new to GraalVM Enterprise or have little experience using it, continue to Getting Started with GraalVM Enterprise. Download and install GraalVM Enterprise on your local machine, try running the examples provided in the guide, or test GraalVM Enterprise with your workload. We suggest you then look at more complex Examples Applications.
Developers, who have GraalVM Enterprise already installed or have experience using it in the past, can skip the getting started guide and proceed to the Reference Manuals for in-depth coverage of GraalVM Enterprise technologies.