From Wikipedia, the free encyclopedia
  (Redirected from Graal (compiler))
Jump to navigation Jump to search
Developer(s)Oracle Corporation
Preview release
1.0 RC7[1][2][3] / 2 October 2018; 2 months ago (2018-10-02)
Repository Edit this at Wikidata
Written inJava
Operating systemLinux and macOS[4]
PlatformJava Virtual Machine
TypeJava dynamic compiler and runtime
LicenseCommunity Edition: GPLv2[5][6] Enterprise Edition: Trialware

GraalVM is an extension of the Java virtual machine to support more languages and execution modes. The Graal project includes a new high performance Java compiler, itself called Graal,[7][8] which can be used in a just-in-time configuration on the HotSpot VM, or in an ahead-of-time configuration on the SubstrateVM.

One objective of Graal is to improve the performance of Java virtual machine-based languages to match the performance of native languages.[9][10] Another goal, dubbed "Project Metropolis" or "Java-on-Java", is to implement a substitute for the substantial use of C++ within HotSpot.[11] A third goal is to allow freeform mixing of code from any programming language in a single program, billed as "polyglot applications".[9][12]


In association with GraalVM, Oracle developed a language abstract syntax tree interpreter called Truffle which would allow it to implement languages on top of the Graal framework.[13][14]

The Truffle framework was released under GPL version 2 with the classpath exception to encourage use of the framework for projects which do not want to be bound by the viral, copyleft nature of the GPL, while the Graal compiler remains under GPLv2 only.[15]

Ahead-of-Time Compilation[edit]

In September 2016, Oracle detailed plans to add ahead-of-time compilation to the OpenJDK using the Graal compiler for Java 9.[16][17] This proposal, tracked by the JEP 295: Ahead-of-Time Compilation, was included in Java 9.[18]

The experimental use of Graal as a just-in-time compiler was added for the Linux x64 platform for Java 10.[19]

See also[edit]


  1. ^ "Announcing GraalVM: Run Programs Faster Anywhere". Oracle Corporation. Retrieved 2018-04-22.
  2. ^
  3. ^
  4. ^
  5. ^ "GraalVM FAQ". Retrieved 2018-04-25.
  6. ^ "graal/". Retrieved 2018-04-25.
  7. ^ "Graal Java compiler would enable high-quality code, efficient memory use". JavaWorld. 2012-02-14. Retrieved 2013-08-23. The effort would explore implementing a dynamic compiler that can be used in a native JVM such as HotSpot or a metacircular JVM such as Maxine. On its project site, Oracle describes the Maxine VM as a next-generation platform written in Java, compatible with modern Java IDEs and the standard Java Development Kit, and featuring a modular architecture
  8. ^ "Graal : Oracle championing cause for Graal to be part of OpenJDK". 2012-02-15. Retrieved 2013-08-23.
  9. ^ a b "Why GraalVM". Retrieved 2018-04-25.
  10. ^ "Graal : Un compilateur dynamique pour Java". 2012-02-13. Retrieved 2013-08-23.
  11. ^ John Rose. "Call for discussion: New Project: Metropolis". Retrieved 2018-04-25.
  12. ^ "Reference Manual for Polyglot Applications". Retrieved 2018-04-25.
  13. ^ "Truffle: A Self-Optimizing Runtime System" (PDF). Oracle Corporation. Retrieved 2013-08-23.
  14. ^ "Truffle served in a Holy Graal: Graal and Truffle for polyglot language interpretation on the JVM". 2017-12-05. Retrieved 2018-04-25.
  15. ^ "License". Oracle Corporation. 2013-08-03. Retrieved 2013-08-23.
  16. ^ "Ahead-of-Time (AOT) Compilation May Come to OpenJDK HotSpot in Java 9". 2016-10-01. Retrieved 2016-10-06. AOT brings about a new tool called ‘jaotc' which uses Graal as the backend (to generate code)
  17. ^ Vladimir Kozlov (2016-09-14). "JDK-8166089: Ahead-of-Time Compilation". Oracle Corporation. Retrieved 2016-10-06. Compile an application's Java classes to native code prior to launching the virtual machine.
  18. ^ Vladimir Kozlov (2016-10-13). "JEP 295: Ahead-of-Time Compilation". Oracle Corporation. Retrieved 2016-10-13. Compile Java classes to native code prior to launching the virtual machine.
  19. ^ Vladimir Kozlov (2017-10-20). "JEP 317: Experimental Java-Based JIT Compiler". Oracle Corporation. Retrieved 2018-01-21. JEP 317: Experimental Java-Based JIT Compiler

External links[edit]