GraalVM is made by Oracle and is available in a free community edition and a commercial enterprise edition. The main difference between these two versions is that the enterprise edition of GraalVM has higher performance, and a few extra tools (as far as I remember).
You can download GraalVM from its website at:
GraalVM Main Parts
GraalVM consist of the following important parts:
- A Java Virtual Machine
- Other language virtual machines
- The Truffle language implementation framework
- The polyglot API
- Command line tools for building native images
I will go into a bit more detail about these parts in the following sections.
Java Virtual Machine
GraalVM is at its core a virtual machine. It's first language was Java - meaning GraalVM started out as a Java Virtual Machine (Java VM / JVM). You can download GraalVM from its website and unzip it into a directory, and use it like if you had downloaded and unzipped an OpenJDK version of the Java Virtual Machine.
One Virtual Machine - Multiple Languages
GraalVM Language Support
GraalVM already has language implementations for the languages listed below, and more are probably coming in the future:
- Web Assembly (Wasm)
Some of these languages may have to be installed after you have installed GraalVM. You can see how to install the following languages here:
Truffle Language Implementation Framework
GraalVM Truffle is a Java library for implementing programming languages that can be executed by GraalVM. You do so by building a language interpreter using the Truffle library.
I have explained the GraalVM polyglot API in a bit more detail in its own text about GraalVM Polyglot API.
Command Line Tools for Building Native Images
GraalVM comes with a set of command line tools that can build your Java or polyglot application into a native executable image for several different operating systems, including:
- Raspberry Pi (because it runs Linux)
Raspberry Pi and iPhone's run on ARM CPUs, so GraalVM can build native images for Intel, AMD and ARM chipsets.