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. The most recent version is GraalVM 20.1.0, made available in May 2020. Major differentiators of GraalVM compared to the base JDK are:
GraalVM is a production-ready software and is available as Community Edition for an open-source license and as Oracle GraalVM Enterprise Edition accessible by accepting . Oracle Corporation announced the release of Oracle GraalVM Enterprise Edition on 8 May 2019. GraalVM can substitute a default JDK on Linux and macOS platforms on x86 64-bit systems.
;GraalVM 19.0.0 The support on Windows is currently under development and released as an early adopter functionality in GraalVM 19.0. It was 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. Additional components are included in GraalVM to support new execution modes or programming languages.
The GraalVM Compiler is a modern Java just-in-time compiler. It complements or replaces the existing compilers. 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
is an ahead-of-time compilation technology that produces executable binaries of class files. 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 and Vert.x Java frameworks. Support for Spring Boot applications is under development. In September 2016, Oracle detailed plans to add ahead-of-time compilation to the OpenJDK using the GraalVM compiler for Java 9. This proposal, tracked by the JEP 295: Ahead-of-Time Compilation, was included in Java 9. The experimental use of GraalVM as a just-in-time compiler was added for the Linux x86-64 platform for Java 10.
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. The Truffle framework and its dependent part, , are released under 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
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.
TruffleRuby: Ruby language implementation with preliminary support for Ruby on Rails