|
| 1 | +--- |
| 2 | +layout: ohc |
| 3 | +permalink: /overview/architecture/ |
| 4 | +--- |
| 5 | + |
| 6 | +# Oracle GraalVM Enterprise Edition Architecture Overview |
| 7 | + |
| 8 | +Oracle GraalVM Enterprise Edition (GraalVM Enterprise) is a highly productive JDK distribution. |
| 9 | +It is designed to accelerate the execution of applications written in Java and other JVM languages while also providing a high-performance runtime for JavaScript, Ruby, Python, and a number of other popular languages. |
| 10 | +GraalVM Enterprise's polyglot capabilities make it possible to mix multiple programming languages in a single application while eliminating any foreign language call costs. |
| 11 | + |
| 12 | +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. |
| 13 | +The conceptual overview and advantages of GraalVM Enterprise are described on the [Solutions Overview](/en/graalvm/enterprise/{{ site.version }}/docs/overview/) page. |
| 14 | + |
| 15 | +* [GraalVM Enterprise Architecture](#graalvm-enterprise-architecture) |
| 16 | +* [Runtime Modes](#runtime-modes) |
| 17 | +* [Available Distributions](#available-distributions) |
| 18 | +* [Supported Platforms](#supported-platforms) |
| 19 | +* [Distribution Components List](#distribution-components-list) |
| 20 | +* [Licensing and Support](#licensing-and-support) |
| 21 | +* [Experimental and Early Adopter Features](#experimental-and-early-adopter-features) |
| 22 | +* [What to Read Next](#what-to-read-next) |
| 23 | + |
| 24 | +## GraalVM Enterprise Architecture |
| 25 | + |
| 26 | + |
| 27 | + |
| 28 | +*Figure 1. GraalVM Enterprise Runtime* |
| 29 | + |
| 30 | +The preceding diagram illustrates a complete high-level architecture of GraalVM Enterprise. |
| 31 | + |
| 32 | +GraalVM adds an [advanced just-in-time (JIT) optimizing compiler](/en/graalvm/enterprise/{{ site.version }}/docs/reference-manual/compiler/), which is written in Java, to the HotSpot Java Virtual Machine. |
| 33 | + |
| 34 | +In addition to running Java and JVM-based languages, GraalVM's [Truffle language implementation framework](/en/graalvm/enterprise/{{ site.version }}/docs/graalvm-as-a-platform/language-implementation-framework/) makes it possible to run JavaScript, Ruby, Python, and a number of other popular languages on the JVM. |
| 35 | +With GraalVM Truffle, Java and other supported languages can directly interoperate with each other and pass data back and forth in the same memory space. |
| 36 | + |
| 37 | +## Runtime Modes |
| 38 | + |
| 39 | +GraalVM Enterprise is unique as a runtime environment offering several modes of operation: JVM runtime mode, Native Image, Java on Truffle (the same Java applications can be run on either). |
| 40 | + |
| 41 | +#### JVM Runtime Mode |
| 42 | +When running programs on the HotSpot JVM, GraalVM defaults to the [GraalVM compiler](/en/graalvm/enterprise/{{ site.version }}/docs/reference-manual/compiler/) as the top-tier JIT compiler. |
| 43 | +At runtime, an application is loaded and executed normally on the JVM. |
| 44 | +The JVM passes bytecodes for Java or any other JVM-native language to the compiler, which compiles that to the machine code and returns it to the JVM. |
| 45 | +Interpreters for supported languages, written on top of the [Truffle framework](/en/graalvm/enterprise/{{ site.version }}/docs/graalvm-as-a-platform/language-implementation-framework/), are themselves Java programs that run on the JVM. |
| 46 | + |
| 47 | +#### Native Image |
| 48 | +[Native Image](/en/graalvm/enterprise/{{ site.version }}/docs/reference-manual/enterprise-native-image/) is an innovative technology that compiles Java code into a standalone binary executable or a native shared library. |
| 49 | +The Java bytecode that is processed during the native image build includes all application classes, dependencies, third party dependent libraries, and any JDK classes that are required. |
| 50 | +A generated self-contained native executable is specific to each individual operating systems and machine architecture that does not require a JVM. |
| 51 | + |
| 52 | +#### Java on Truffle |
| 53 | +[Java on Truffle](/en/graalvm/enterprise/{{ site.version }}/docs/reference-manual/java-on-truffle/) is an implementation of the Java Virtual Machine Specification, built with the [Truffle language implementation framework](/en/graalvm/enterprise/{{ site.version }}/docs/graalvm-as-a-platform/language-implementation-framework/). |
| 54 | +It is a complete Java VM that includes all core components, implements the same API as the Java Runtime Environment library, and reuses all JARs and native libraries from GraalVM. |
| 55 | +Java on Trufle is an experimental technology in GraalVM, available as of version 21.0.0. |
| 56 | + |
| 57 | +## Available Distributions |
| 58 | + |
| 59 | +GraalVM Enterprise distributions are based on Oracle JDK 8, 11, and 16. |
| 60 | +GraalVM Enterprise releases include all Oracle Java critical patch updates (CPUs), which are released on a regular schedule to remedy defects and known vulnerabilities. |
| 61 | + |
| 62 | +GraalVM Enterprise is available for Linux, macOS, and Windows platforms on x86 64-bit systems, and for Linux on ARM 64-bit system. |
| 63 | +The base GraalVM binary including all components is experimental on Linux/ARM and Windows. |
| 64 | +The GraalVM Enterprise distribution based on Oracle JDK 16 is experimental with [several known limitations](/en/graalvm/enterprise/{{ site.version }}/docs/release-notes/known-issues/). |
| 65 | +Depending on the platform, the distributions are shipped as *.tar.gz* or *.zip* archives. |
| 66 | + |
| 67 | +## Supported Platforms |
| 68 | + |
| 69 | +The following are the supported platforms for GraalVM Enterprise 21: |
| 70 | + |
| 71 | +| Operating System | Version | Architecture | Installation Guide | |
| 72 | +|------------------------------------ |-------------- |-------------- |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 73 | +| Oracle Linux on OCI | 6, 7, 8 | x86 64-bit | [GraalVM Enterprise Installation Guide on OCI](/en/graalvm/enterprise/{{ site.version }}/docs/getting-started/oci/compute-instances/) | |
| 74 | +| Oracle Linux | 6, 7, 8 | x86 64-bit, ARM 64-bit (experimental) | [GraalVM Enterprise Installation Guide for Linux](/en/graalvm/enterprise/{{ site.version }}/docs/getting-started/installation-linux/) | |
| 75 | +| Red Hat Enterprise Linux(RHEL) | 6, 7, 8 | x86 64-bit | [GraalVM Enterprise Installation Guide for Linux](/en/graalvm/enterprise/{{ site.version }}/docs/getting-started/installation-linux/) | |
| 76 | +| macOS | 10.13 (High Sierra), 10.14 (Mojave), 10.15 (Catalina), 11.2 (Big Sur) | x86 64-bit | [GraalVM Enterprise Installation Guide for macOS](/en/graalvm/enterprise/{{ site.version }}/docs/getting-started/installation-macos/) | |
| 77 | +| Windows | 10 | x86 64-bit | [GraalVM Enterprise Installation Guide for Windows](/en/graalvm/enterprise/{{ site.version }}/docs/getting-started/installation-windows/) | |
| 78 | + |
| 79 | + |
| 80 | +## Distribution Components List |
| 81 | + |
| 82 | +GraalVM Enterprise consists of core and additional functionalities. |
| 83 | + |
| 84 | +### Core Components |
| 85 | +**Runtimes** |
| 86 | +* Java HotSpot VM |
| 87 | +* JavaScript runtime |
| 88 | +* LLVM runtime |
| 89 | + |
| 90 | +**Libraries (JAR files)** |
| 91 | +* GraalVM compiler - the top-tier JIT compiler |
| 92 | +* Polyglot API – the APIs for combining programming languages in a shared runtime |
| 93 | + |
| 94 | +**Utilities** |
| 95 | +* JavaScript REPL with the JavaScript interpreter |
| 96 | +* `lli` tool to directly execute programs from LLVM bitcode |
| 97 | +* [GraalVM Updater](/en/graalvm/enterprise/{{ site.version }}/docs/reference-manual/graalvm-updater/) to install additional functionalities |
| 98 | + |
| 99 | +### Additional Functionalities |
| 100 | +GraalVM Enterprise core installation can be extended with more languages runtimes and utilities. |
| 101 | + |
| 102 | +Tools/Utilities: |
| 103 | + |
| 104 | +* [Native Image](/en/graalvm/enterprise/{{ site.version }}/docs/reference-manual/enterprise-native-image/) -- a technology to compile an application ahead-of-time into a native platform executable. |
| 105 | +* [LLVM toolchain](/en/graalvm/enterprise/{{ site.version }}/docs/reference-manual/llvm/) -- a set of tools and APIs for compiling native programs to bitcode that can be executed on GraalVM. |
| 106 | +* [Java on Truffle](/en/graalvm/enterprise/{{ site.version }}/docs/reference-manual/java-on-truffle/) -- a JVM implementation built upon the [Truffle framework](/en/graalvm/enterprise/{{ site.version }}/docs/graalvm-as-a-platform/language-implementation-framework/) to run Java via a Java bytecode interpreter. |
| 107 | + |
| 108 | +Runtimes: |
| 109 | + |
| 110 | +* [Node.js](/en/graalvm/enterprise/{{ site.version }}/docs/reference-manual/js/) -- the Node.js 14.16.1 runtime for JavaScript |
| 111 | +* [Python](/en/graalvm/enterprise/{{ site.version }}/docs/reference-manual/python/) -- Python 3.8.5 compatible |
| 112 | +* [Ruby](/en/graalvm/enterprise/{{ site.version }}/docs/reference-manual/ruby/) -- Ruby 2.7.2 compatible |
| 113 | +* [R](/en/graalvm/enterprise/{{ site.version }}/docs/reference-manual/r/) -- GNU R 4.0.3 compatible |
| 114 | +* [GraalWasm](/en/graalvm/enterprise/{{ site.version }}/docs/reference-manual/wasm/) -- WebAssembly (Wasm) |
| 115 | + |
| 116 | +## Licensing and Support |
| 117 | + |
| 118 | +Oracle GraalVM Enterprise Edition is licensed under the [Oracle Technology Network License Agreement for GraalVM Enterprise Edition](https://www.oracle.com/downloads/licenses/graalvm-otn-license.html) for developing, testing, prototyping, and demonstrating Your application. |
| 119 | + |
| 120 | +For production use, GraalVM Enterprise is available as part of the [Oracle Java SE Subscription](https://www.oracle.com/uk/java/java-se-subscription/) which includes 24x7x365 [Oracle premier support](https://www.oracle.com/support/premier/) and the access to [My Oracle Support (MOS)](https://www.oracle.com/support/). |
| 121 | + |
| 122 | +## Experimental and Early Adopter Features |
| 123 | + |
| 124 | +Oracle GraalVM Enterprise Edition features are distributed as fully supported, early adopter, and experimental. |
| 125 | + |
| 126 | +Experimental features are being considered for future versions of GraalVM Enterprise. |
| 127 | +They are not meant to be used in production and are not supported by Oracle. |
| 128 | +The development team welcomes feedback on experimental features, but users should be aware that experimental features might never be included in a final version, or might change significantly before being considered production-ready. |
| 129 | + |
| 130 | +For more information, check the [Oracle Technology Network License Agreement for GraalVM Enterprise Edition](https://www.oracle.com/downloads/licenses/graalvm-otn-license.html). |
| 131 | + |
| 132 | +The following table lists supported and experimental features in GraalVM Enterprise Edition 21 by platform. |
| 133 | + |
| 134 | +| Feature | Linux AMD64 | Linux ARM64 | macOS | Windows | |
| 135 | +|--------------------|---------------|---------------|---------------| |
| 136 | +| Native Image | early adopter | experimental | early adopter | experimental | |
| 137 | +| LLVM runtime | supported | experimental | supported | not available | |
| 138 | +| LLVM toolchain | supported | experimental | supported | not available | |
| 139 | +| JavaScript | supported | experimental | supported | experimental | |
| 140 | +| Node.js | supported | experimental | supported | experimental | |
| 141 | +| Java on Truffle | experimental | not available | experimental | experimental | |
| 142 | +| Python | experimental | not available | experimental | not available | |
| 143 | +| Ruby | experimental | not available | experimental | not available | |
| 144 | +| R | experimental | not available | experimental | not available | |
| 145 | +| WebAssembly | experimental | experimental | experimental | experimental | |
| 146 | + |
| 147 | +## What to Read Next |
| 148 | + |
| 149 | +Users who are new to GraalVM Enterprise or have little experience using it, continue to [Getting Started with GraalVM Enterprise](/en/graalvm/enterprise/{{ site.version }}/docs/getting-started/). |
| 150 | +Download and install GraalVM Enterprise on your local machine, try running the examples provided in the guide, or test GraalVM Enterprise with your workload. |
| 151 | +We suggest you then look at more complex [Examples Applications](/en/graalvm/enterprise/{{ site.version }}/docs/examples/). |
| 152 | + |
| 153 | +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](/en/graalvm/enterprise/{{ site.version }}/docs/reference-manual/) for |
| 154 | +in-depth coverage of GraalVM Enterprise technologies. |
0 commit comments