This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources. Find sources: "GraalVM" – news · newspapers · books · scholar · JSTOR (September 2019) (Learn how and when to remove this template message) This article's tone or style may not reflect the encyclopedic tone used on Wikipedia. See Wikipedia's guide to writing better articles for suggestions. (April 2021) (Learn how and when to remove this template message) (Learn how and when to remove this template message)
Developer(s)Oracle Corporation
Stable release
22.3.0[1] Edit this on Wikidata / 25 October 2022; 5 months ago (25 October 2022)
Written inJava
Operating systemLinux, Windows and macOS[2]
PlatformJava Virtual Machine
TypeJava dynamic compiler and runtime
LicenseCommunity Edition: GPLv2[3][4] Enterprise Edition: Trialware

GraalVM is a Java VM and JDK based on HotSpot/OpenJDK, implemented in Java. It supports additional programming languages and execution modes, like ahead-of-time compilation of Java applications for fast startup and low memory footprint. The first production-ready version, GraalVM 19.0, was released in May 2019.[5] The most recent version is GraalVM 22.1.0, made available in April 2022.

Major differentiators of GraalVM compared to the base JDK are:

Project goals


GraalVM has its roots in the Maxine Virtual Machine project at Sun Microsystems Laboratories (now Oracle Labs). The goal was to write a Java virtual machine in Java itself, hoping to free the development from the problems of developing in C++, particularly manual memory management, and benefit from meta-circular optimizations. Upon realizing that writing everything in Java was too ambitious as a first step, the decision was taken to focus on the compiler only and hook it into Hotspot, to reuse as much as possible the Hotspot runtime. The GraalVM compiler was started by manually converting the code of the Hotspot client compiler (named "C1") into Java, replacing the previous Maxine compiler.[10]

Graal was included in HotSpot-based Java VM releases like OpenJDK from Java 9 through 15, in order to support experimental ahead-of-time compilation. The UseJVMCICompiler option also allowed JIT use as a C2 replacement.[11] It was removed in Java 16 as maintaining both the version in the JDK and the standalone GraalVM release caused duplicate effort.[12] A similar functionality to create native executables from Java projects is provided by the native-image tool of standalone GraalVM releases.


GraalVM is available as Community Edition for an open-source license and as Oracle GraalVM Enterprise Edition accessible by accepting the "OTN License Agreement Oracle GraalVM Enterprise Edition Including License for Early Adopter Versions".[13] Oracle Corporation announced the release of Oracle GraalVM Enterprise Edition on 8 May 2019.[14] GraalVM can substitute a default JDK on Linux and macOS platforms on x86 64-bit systems.

GraalVM 22

GraalVM 22.1.0 GraalVM 22.1.0 was released in April 2022.[15]

GraalVM 22.0.0 GraalVM 22.0.0 was released in January 2022.

GraalVM 21

GraalVM 20

GraalVM 20.3.0

GraalVM 20.3.0 was released in November 2020.[16] It was marked as the first LTS enterprise version of GraalVM and as the final release for 2020. This version supports code sharing in the GraalVM LLVM runtime, allowing the AST and compiled code of common bitcode libraries to be shared between multiple contexts within a single engine.

GraalVM 20.1.0

GraalVM 20.1.0 was released in May 2020.[17] It included several improvement for many of the components. Besides performance improvements, usability fixes for native-image were published. The JavaScript engine supports all ECMAScript 2020 mode features by default. The regular expression engine (TRegex) used by JavaScript and Python supports all expressions now. Ruby (TruffleRuby) improved in compatibility with native gems.

GraalVM 20.0.0

GraalVM 20.0.0 was released in February 2020.[18] It improved in its Windows support, brought an enhanced native-image tool and improved the tooling support, among many detailed changes in the compiler and supported languages.

GraalVM 19

GraalVM 19.0.0

The support on Windows is currently under development and released as an early adopter functionality in GraalVM 19.0.

GraalVM 19.0 is based on top of JDK version 8u212.


The GraalVM compiler is shipped with the components of a normal Java virtual machine (OpenJDK). Additional components are included in GraalVM to support new execution modes (GraalVM Native Image) or programming languages (LLVM runtime, GraalVM JavaScript as a potential replacement to the deprecated Nashorn engine, TRegex as a regular expression engine).

GraalVM Compiler

The GraalVM Compiler is a modern Java just-in-time compiler. It complements or replaces the existing compilers (C1/C2 in HotSpot). In contrast to those existing compilers, the GraalVM compiler is written in modular, maintainable and extendable fashion in Java itself.

It is released under GPL version 2 with the classpath exception.

GraalVM Native Image

GraalVM Native Image is an ahead-of-time compilation technology that produces executable binaries of class files.[19] It is released as an early adopter plugin, which means it is production-ready but may include backport incompatible updates in the future releases.

This functionality supports JVM-based languages, but can optionally execute dynamic languages, developed on top of GraalVM with Truffle framework. The executable file does not run on a JVM and uses necessary runtime components as thread scheduling or GC from “Substrate VM” – a trivial version of a virtual machine. Since the resulting native binary includes application classes, JDK dependencies and libraries already, the startup and execution time reduces significantly.

GraalVM Native Image is officially supported by the Fn, Gluon, Helidon, Micronaut, Picocli, Quarkus, Vert.x and Spring Boot Java frameworks.[20] [21] In September 2016, Oracle detailed plans to add ahead-of-time compilation to the OpenJDK using the GraalVM compiler for Java 9.[22][23] This proposal, tracked by the JEP 295: Ahead-of-Time Compilation, was included in Java 9.[24] The experimental use of GraalVM as a just-in-time compiler was added for the Linux x86-64 platform for Java 10.[25]

In JDK releases 9 to 15, the jaotc command creates a Native Image.[26] The experimental -XX:+EnableJVMCIProduct flag enables the use of Graal JIT.[27] The functionality is since available in the native-image component of standalone GraalVM releases.[28]

Truffle Language Implementation Framework

In association with GraalVM, Oracle Labs developed a language abstract syntax tree interpreter called "Truffle" which would allow it to implement languages on top of the GraalVM.[29][30] Many languages have been implemented in Truffle, including a C interpreter claiming to be about as fast as GCC and Clang.[31]

The Truffle framework and its dependent part, GraalVM SDK, are released under the Universal Permissive License, version 1.0, to encourage use of the framework for projects which do not want to be bound by the copyright or other parent rights.

Instrumentation-based Tool Support

A major advantage of the GraalVM ecosystem is language-agnostic, fully dynamic instrumentation support built-in directly into the VM runtime. Execution events can be captured by API clients with overhead that is extremely low in fully optimized code.[32][33]

The core GraalVM installation provides a language-agnostic debugger, profiler, heap viewer, and others based on instrumentation and other VM support.[9] GraalVM also includes a backend implementation of the Chrome Inspector remote debugging protocol.[34] Although designed originally for JavaScript debugging, it can be used to debug all GraalVM languages from a browser.

Language and Runtime Support

GraalVM is written in and for the Java ecosystem. It can execute applications written in all languages that compile to the Java bytecode format, e.g. Java, Scala, Kotlin, and more.

Based on Truffle Language Implementation framework additional languages can be supported in GraalVM.

Support for additional languages can be implemented by users of GraalVM. Some notable third-party language implementations are grCuda,[42] SOMns,[43] TruffleSqueak,[44][45] and Yona.[46]


  1. ^ "Release Notes - 22.3.0". 25 October 2022.
  2. ^ "Downloads".
  3. ^ "GraalVM FAQ". Archived from the original on 2020-04-13. Retrieved 2018-04-25.
  4. ^ "graal/". GitHub. Retrieved 2018-04-25.
  5. ^ "For Building Programs That Run Faster Anywhere: Oracle GraalVM Enterprise Edition". Oracle Corporation. Retrieved 2022-01-21.
  6. ^ a b c "Why GraalVM". Retrieved 2018-04-25.
  7. ^ "Graal : Un compilateur dynamique pour Java". 2012-02-13. Retrieved 2013-08-23.
  8. ^ "Reference Manual for Polyglot Applications". Archived from the original on 2020-10-23. Retrieved 2018-04-25.
  9. ^ a b "GraalVM Debugging and Monitoring Tools". Archived from the original on 2019-04-25. Retrieved 2019-04-08. GraalVM provides a set of tools for developers, integrators, and IT administrators to debug and monitor GraalVM and deployed applications.
  10. ^ ""Meta-Circularity is Near", GraalVM, podcast : Adam Bien's Weblog". Archived from the original on 2020-05-29.
  11. ^ "OpenJDK: Graal".
  12. ^ "[JDK-8255616] Removal of experimental features AOT and Graal JIT". Retrieved 2021-03-13.
  13. ^[bare URL]
  14. ^ "GraalVM 19.3: Announcing GraalVM 19.3 with JDK 11 Support". Oracle Corporation. 20 November 2019. Retrieved 2019-11-25.
  15. ^ "GraalVM Release Notes 22.1.0". 2022-04-26. Retrieved 2022-04-26.
  16. ^ Šelajev, Oleg (2020-11-20). "GraalVM 20.3 is available". Medium. Retrieved 2020-12-31.
  17. ^ GraalVM 20.1
  18. ^ A look at GraalVM 20.0: better Windows support, better Native Images, better tooling
  19. ^ "Native Images". Archived from the original on 2018-04-20.
  20. ^ "GraalVM Open Source Ecosystem". Oracle Corporation. Retrieved 2019-09-11.
  21. ^ "Spring Native Image documentation". Spring Framework. Retrieved 2021-10-26.
  22. ^ "Ahead-of-Time (AOT) Compilation May Come to OpenJDK HotSpot in Java 9". 2016-10-01. Retrieved 2016-10-06. AOT brings about a new tool called 'jaotc' which uses Graal as the backend (to generate code)
  23. ^ Vladimir Kozlov (2016-09-14). "JDK-8166089: Ahead-of-Time Compilation". Oracle Corporation. Retrieved 2016-10-06. Compile an application's Java classes to native code prior to launching the virtual machine.
  24. ^ Vladimir Kozlov (2016-10-13). "JEP 295: Ahead-of-Time Compilation". Oracle Corporation. Retrieved 2016-10-13. Compile Java classes to native code prior to launching the virtual machine.
  25. ^ Vladimir Kozlov (2017-10-20). "JEP 317: Experimental Java-Based JIT Compiler". Oracle Corporation. Retrieved 2018-01-21. JEP 317: Experimental Java-Based JIT Compiler
  26. ^ "OpenJDK: Graal".
  27. ^ "[JDK-8232118] Add JVM option to enable JVMCI compilers in product mode".
  28. ^ "GraalVM: Reference Manual: Native Image".
  29. ^ "Truffle: A Self-Optimizing Runtime System" (PDF). Oracle Corporation. Retrieved 2013-08-23.
  30. ^ "Truffle served in a Holy Graal: Graal and Truffle for polyglot language interpretation on the JVM". 2017-12-05. Retrieved 2018-04-25.
  31. ^ "Truffle: Languages and Material". Gist.
  32. ^ Van De Vanter, Michael; Seaton, Chris; Haupt, Michael; Humer, Christian; Würthinger, Thomas (March 9, 2018). "Fast, Flexible, Polyglot Instrumentation Support for Debuggers and other Tools". The Art, Science, and Engineering of Programming. 2 (3, Article 14): 30. arXiv:1803.10201. doi:10.22152/ S2CID 4382172.
  33. ^ "Getting started with Instruments in GraalVM". Retrieved 2019-04-08. Truffle instruments can track very fine-grained VM-level runtime events to profile, inspect, and analyze the runtime behavior of applications running on GraalVM.
  34. ^ "Chrome DevTools". Retrieved 2019-04-08. Chrome DevTools is a set of web developer tools built directly into the Google Chrome browser. DevTools can help you edit pages on-the-fly and diagnose problems quickly, which ultimately helps you build better websites, faster.
  35. ^ GraalVM JavaScript github repository
  36. ^ TruffleRuby github repository
  37. ^ GraalVM FastR github repository
  38. ^ GraalPython github repository
  39. ^ GraalVM LLVM Runtime github repository
  40. ^ "GraalWasm github repository". GitHub.
  41. ^ Prokopec, Aleksandar (2019-12-02). "Announcing GraalWasm — a WebAssembly engine in GraalVM". Medium. Retrieved 2020-01-15.
  42. ^ grCuda GitHub repository
  43. ^ SOMns GitHub repository
  44. ^ TruffleSqueak GitHub repository
  45. ^ Niephaus, Fabio; Felgentreff, Tim; Hirschfeld, Robert (2019). "GraalSqueak: Toward a Smalltalk-based Tooling Platform for Polyglot Programming". Proceedings of the 16th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes - MPLR 2019. ACM Digital Library. pp. 14–26. doi:10.1145/3357390.3361024. ISBN 9781450369770. S2CID 204728643. Retrieved 2020-11-08.
  46. ^ Yona Language

Official website Edit this at Wikidata