How is GraalVM licensed?

GraalVM is distributed as Community and Enterprise editions.

GraalVM Community Edition is open source software built from the sources available on GitHub and distributed under version 2 of the GNU General Public License with the “Classpath” Exception, which are the same terms as for Java. We also recommend checking the licenses of the individual GraalVM components (which are generally derivative of the license of a particular language). GraalVM Community is free to use for any purpose and comes with no strings attached, but also no guarantees or support.

Oracle GraalVM Enterprise Edition is licensed under the Oracle Technology Network License Agreement for GraalVM Enterprise Edition for testing, evaluation, or for developing non-production applications.

For production use, GraalVM Enterprise is available under the Oracle Java SE Subscription Licensing and Support terms. Subscribers to Oracle Java SE Subscription and Oracle Java SE Desktop Subscription are entitled to use GraalVM Enterprise at no additional cost. Read more here.

What does the GraalVM Enterprise subscription include?

The Oracle Java SE Subscription provides licensing and support for GraalVM Enterprise use on premises, and includes:

For Oracle Cloud customers, GraalVM Enterprise is included in the Oracle Cloud subscription.

Where should bugs, security issues, or enhancement requests be reported?

Any security vulnerabilities in either GraalVM Community or GraalVM Enterprise should only be reported via email to secalert_us@oracle.com. Please consult our Reporting Vulnerabilities guide for more information on reporting security vulnerabilities. Do not report security issues on GitHub Issues.

Please report any bugs or enhancement requests for GraalVM Community using GitHub Issues. GraalVM Enterprise bugs or enhancement requests should be reported using My Oracle Support.

How do I contribute to GraalVM?

We welcome contributions to GraalVM from the community and are thankful for past contributions both big and small. There are two common ways to collaborate:

See how to become a GraalVM contributor. If you consider contributing solely to the documentation, please check this guide.

How can I receive updates about GraalVM?

We maintain three mailing lists:

  • graalvm-announce@oss.oracle.com – a low traffic announcement list used by the project maintainers;
  • graalvm-users@oss.oracle.com – an open source user mailing list for general questions and discussions;
  • graalvm-dev@oss.oracle.com – a list for contributors and language implementors.

Additional ways to stay up-to-date with GraalVM development is to track GraalVM at Medium blogging platform, follow the @graalvm Twitter handle, watch the github.com/oracle/graal repository.

How do I get support updates?

Comprehensive GraalVM Enterprise support is provided by the Oracle GraalVM team via My Oracle Support. Please verify if support services are activated with your account.

Can I run my existing application with GraalVM?

The team behind GraalVM aims for compatibility with existing language implementations. Any application that runs on the Java HotSpot VM will run on GraalVM. This includes the code written in other JVM languages, such as Scala or Kotlin. JavaScript and Node.js are expected to run fully compatible out-of-the-box. LLVM-based languages are fully supported via the LLVM bitcode execution environment. For Ruby, R, and Python we are working on improved compatibility. Specific applications may run. Several third parties have started their own development of GraalVM-based language implementations. We continue 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 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. This simplifies deployment and configuration of the runtime environment. Important VM components like the just-in-time-compiler and garbage collector are all fully shared across all languages.

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

GraalVM can run embedded in OpenJDK, Oracle JDK or Node.js platforms, standalone, or embedded in data stores like the Oracle Database. In all scenarios, the same underlying compilation and language execution technology runs in-process and with direct access to data structures of the surrounding system. The 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 the embedding of GraalVM in other projects and publish APIs for that purpose. We envision a future where high-performance and standardized language execution technology is available without the need for provisioning separate VM deployments.

Can I use GraalVM with microservices frameworks?

GraalVM can run any Java microservices framework. Several Java microservices frameworks have already accepted the GraalVM Native Image technology as a platform. Examples include: Micronaut, Spring, Helidon, Quarkus. For these frameworks Native Image significantly reduces the startup time and runtime memory requirements.

Can GraalVM run Spring applications?

GraalVM can run Spring applications, compiled with OpenJDK, OracleJDK or other JVMs. Here is a Spring application example that not only runs on GraalVM, but also applies the R language to visualize a plot of the data, using GraalVM polyglot capabilities.

Spring Framework support of Native Image is under active development. The Spring Native project provides an incubating support for compiling Spring applications to native executables using GraalVM Native Image, in order to provide a native deployment option designed to be packaged in lightweight containers. In practice, the target is to support a Spring application (typically a Spring Boot one), unmodified, with GraalVM Native Image.

What is the status of IDE integration?

GraalVM supports major IDEs, as well as major debugging protocols. Eclipse, NetBeans, IntelliJ IDEA, Visual Studio Code are possible IDEs since they support all languages within one environment. IntelliJ Enterprise edition has strong support for all languages even within one file. GraalVM provides a built-in implementation of Chrome DevTools Protocol, Debug Adapter Protocol (DAP), Language Server Protocol (LSP) which, in addition to debugging JavaScript, even enables debugging of R and Ruby applications, separately or across languages. You can get a multilingual stacktrace that way.

What are existing real-world production deployments of GraalVM?

Several production deployments of GraalVM exist today. For example, Christian Thalinger from Twitter describes the production deployment of GraalVM at Twitter, how it can help save money via improved performance in his interview Accelerating Processing at Twitter , and how they save money using GraalVM. See others listed in the Use Cases section on GraalVM’s home page. We thank early adopters of our technology who give us feedback on the project and help us develop new features.

Connect with us