More than a year of numerous release candidates, starting with the release of version 1.0 RC1 in April 2018, Oracle has released the GA version of GraalVM 19.0, a polyglot virtual machine and platform created by Oracle Labs. Features added in the RC releases this past year include: migrating the now deprecated Nashorn engine (JEP 335) to GraalVM, integration with Python’s numpy library, a managed mode LLVM interpreter, and introducing libgraal, a GraalVM compiler that can be deployed as a native image via SubstrateVM. Oracle Labs have also included the formal release of GraalVM Enterprise Edition.
GraalVM is comprised of Graal, a just-in-time compiler written in Java, SubstrateVM, a framework that allows ahead-of-time compilation of Java applications into executable images, and Truffle, an open-source toolkit and API for building language interpreters.
Core components of GraalVM 19.0 include:
- A HotSpot JVM that is compliant with OpenJDK 1.8.0_212
- NodeJS 10.15.2 with polyglot capabilities
- A JavaScript engine, compliant with ECMAScript 2019, as a replacement for Rhino and the now deprecated Nashorn. Oracle Labs offers a migration guide describing the differences between GraalVM and Nashorn
- A runtime for LLVM version 6.0
- The GraalVM Updater,
gu
, a utility that downloads components not included in the core distribution of GraalVM such as Native Image and support for Python, Ruby and R
The native-image
utility was once included in the GraalVM release candidates distributions, but was extracted with GraalVM 19.0 requiring a separate installation with the gu
utility. The gu
utility works similar to other package managers, such as SDK Man and Homebrew. For example, to install Native Image or Python:
$ gu install native-image
$ gu install python
As a stable release, Oracle Labs have changed GraalVM versioning from 1.0 RCxx to 19.x to reflect the current year of major release that will include periodic updates. Details on all the new features of GraalVM can be found in release history.
GraalVM Enterprise Edition
GraalVM Enterprise Edition was built for mission-critical production applications where performance, security, and scalability are required. Benefits offered by Enterprise Edition over the Community Edition include: improved performance and smaller footprint, sandboxing capabilities for native code, and commercial support options.
Optimization algorithms built into GraalVM Enterprise offer a 20% improvement in performance by rearranging natively compiled code.
Shown below is the GraalVM Enterprise architecture.
The GraalVM reference manual provides a starting point for developers who are interested in using GraalVM in their Java (and related JVM languages), JavaScript, Python, Ruby and R applications. Oracle has also published a Safe and Efficient Hybrid Memory Management for Java presentation that discusses details on the Truffle system structure, the SubstrateVM execution model and microbenchmarking.
GraalVM can be integrated with Java/JVM microservices frameworks such as Micronaut, Helidon, and Quarkus.
Resources
- Announcing GraalVM: Run Programs Faster Anywhere by Thomas Wuerthinger and the GraalVM Team (April 17, 2018)
- Oracle Releases GraalVM 1.0, a Polyglot Virtual Machine and Platform by InfoQ (April 27, 2018)
- Oracle GraalVM Announces Support for Nashorn Migration by Christian Wirth (July 19, 2018)
- Announcing GraalVM 19.0 by Oleg Šelajev (May 9, 2019)
- Helidon Flies Faster with GraalVM by Dmitry Kornilov (April 17, 2019)
- Introducing the Tracing Agent: Simplifying GraalVM Native Image Configuration by Christian Wimmer (June 5, 2019)
- New Renaissance Performance Benchmark Aims to Compare JVMs by InfoQ (June 6, 2019)