GraalVM is an extensive project from Oracle Labs developing a new JIT Compiler and Polyglot Runtime for the JVM. It removes the isolation between programming languages and enables interoperability in a high-performance runtime. GraalVM includes the following components:
-
Graal SDK contains long term supported APIs of GraalVM.
-
Graal dynamic compiler written in Java that integrates with the HotSpot JVM.
-
Truffle framework for implementing languages and instruments that use Graal as a dynamic compiler.
-
Tools contains a set of tools for Truffle guest languages implemented using the instrumentation framework.
-
Substrate VM framework that allows ahead-of-time (AOT) compilation of Java applications under closed-world assumption into executable images or shared objects.
-
TRegex is an implementation of regular expressions which leverages Graal and Truffle for efficient compilation of automata.
GraalVM is available as Community Edition (CE) and Enterprise Edition (EE). The current release is based on JDK 8.
GraalVM CE is available for free in development and production use on GitHub. GraalVM CE open-source binaries are pre-built for Linux OS.
GraalVM EE provides additional performance, security, and scalability relevant for running critical applications in production. It is free for use for evaluation purposes and available for download from Oracle Technology Network. We provide binaries for running GraalVM EE on Linux or Mac OS X on x86 64-bit systems.
A comprehensive GraalVM documentation can be found on the website.
It is divided into several sections:
If you can not find the answer you need or have a troubleshooting query, get in touch with us.
There are multiply examples on the website. To demonstrate GraalVM interoperability, let us refer to this tiny example, where you access Java from JavaScript code:
$ node --jvm
> var BigInteger = Java.type('java.math.BigInteger');
> console.log(BigInteger.valueOf(2).pow(100).toString(16));
10000000000000000000000000
The methods in other GraalVM supported languages can be also called with --polyglot
flag:
$ node --jvm --polyglot
> console.log(Polyglot.eval('R', 'runif(100)')[0]);
0.8198353068437427
- Download GraalVM and extract the archive to your file system.
- Add the GraalVM
/bin
folder to yourPATH
environment variable in order to deploy the executables. - Optionally set the
JAVA_HOME
environment variable to resolve to the GraalVM installation directory. You can also specify GraalVM as the JRE or JDK installation in your Java IDE.
Get acquainted with our contribution guide to learn how you can take part in improving Graal. Contribute your code or improvements on GitHub.
We adopted a Code of Conduct that we expect project contributors to follow. Please read our Contributor Covenant Code of Conduct to understand what actions will and will not be tolerated.
Please report bugs or enhancement requests to GitHub Issues. We listen to input and feedback from the community. We cannot give guarantees for issues to be addressed and will make decisions whether to address an issue based on the overall project direction. Customers using the enterprise edition can report their bugs via the standard support channels and according to the service level agreements.
For requests regarding commercial use, please contact [email protected].
GraalVM Community Edition is distributed under a GPLv2 open source license. It is free to use in production and comes with no strings attached, but also no guarantees or support. GraalVM Enterprise Edition is available from the Oracle Technology Network under an evaluation license. It provides improved performance and security for production deployments. Each GraalVM component is licensed: Truffle and its dependency Graal SDK are licensed under the GPL 2 with Classpath exception Tools project is licensed under the GPL 2 with Classpath exception TRegex project is licensed under the GPL 2 with Classpath exception. The Graal compiler is licensed under the GPL 2 Substrate VM is licensed under the GPL 2