Can I run my existing application with GraalVM?

We aim for compatibility with existing language implementations. Java and JavaScript programs are expected to run fully compatible out-of-the-box. This includes code written in other JVM languages, such as Scala or Kotlin, and node.js applications. For Ruby and R, we are still working on improved completeness, but specific applications may run. We do support LLVM-based languages via an LLVM bitcode execution environment. Python support is currently just beginning. Several third parties started their own development of GraalVM-based language implementations. We aim to grow the ecosystem of GraalVM languages such that GraalVM can truly run ‘any language’.

What makes GraalVM a true ‘polyglot’ VM?

GraalVM can not only run each of those individual languages with competitive performance, it also enables high-performance language interoperability. Languages can access each other’s data structures and call each other’s methods. We avoid costly conversions of data structures and instead allow data structures to be shared between languages. Our tooling is built in language-agnostic ways to unify tasks like debugging or profiling. Also, this simplifies deployment and configuration of the runtime environment. Important VM components like the just-in-time-compiler and the garbage collector are all fully shared across all languages and all embeddings of GraalVM.

What does it mean to run any language ‘anywhere’?

GraalVM can run embedded in a Java VM, stand-alone, or embedded in data stores like the Oracle RDBMS and MySQL. In all scenarios, the same underlying compilation and language execution technology runs in-process and with direct access to the data structure of the surrounding system. Separation of logical and physical data layout is a first class principle for GraalVM and enables flexible use of data structures without marshalling costs. We encourage embeddings of GraalVM in other projects and publish APIs for that purpose. The embeddings can work both in a managed JVM-based environment or a native environment. We envision a future where high-performance and standardized language execution technology is available without the need for provisioning separate VM deployments.

What are existing real-world production deployments of Graal?

GraalVM is a project with new innovative technology in its early stages. Nevertheless, there already exist production deployments of GraalVM today. For example, Christian Thalinger from Twitter describes the production deployment of GraalVM at Twitter and how it can help save money via improved performance in his talk Twitter’s Quest for a Wholly Graal Runtime and how they save money using GraalVM. We thank early adopters of our technology who give us feedback on the project and help us develop new features.

What is the license of GraalVM?

There is a community edition (CE) and an enterprise edition (EE) of GraalVM. The community edition is distributed under an open source license. It is free to use in production and comes with no strings attached, but also no guarantees or support. The enterprise edition is available from the Oracle Technology Network under an evaluation license. It provides improved performance and security for production deployments. If you are interested in using the enterprise edition in production, please contact

Where should bugs or enhancement requests be reported?

Please report bugs or enhancement requests at 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 priorities and direction.

What license can my GraalVM-based tools have?

The API for implementing languages or instrumentations that can run in GraalVM is licensed as GPLv2 with a classpath exception. Languages using this API are therefore not restricted to a specific open source license and can also use proprietary licenses.

How do I contribute to GraalVM?

We welcome contributions to the GraalVM project from the community and are thankful for past contributions both big and small. We are happy to accept pull requests at GitHub Pulls. We require contributors to sign the Oracle Contributor Agreement.