Latest Release of the GraalVM Comes with Experimental JDK 16 Binaries

An update of the GraalVM high-performance Java environment was announced this week. GraalVM 21.1, which is available in both community and enterprise editions, introduces new experimental binaries based on JDK 16.0.1, the current release.

All components in the binaries are considered experimental, explained Oleg Šelajev, developer advocate for GraalVM at OracleLabs, in a blog post, regardless of their status in other distribution versions.

Oracle GraalVM Enterprise Edition 21.1 is based on Oracle JDK version 1.8.0_291 and Oracle JDK version 11.0.11. GraalVM Community Edition in 21.1 is based on OpenJDK version 1.8.0_292 and OpenJDK version 11.0.11. Node.js included in this release has been updated to 14.16.1, which is recommended for most users, Šelajev said. As of GraalVM 21.1, Also, Node.js support is no longer included in the base GraalVM download. It’s now a separate component that can be installed with the gu install nodejs command. JavaScript support continues to be a part of the base download. It's the Node.js support that's installable separately. "This change is for speed and clarity," Šelajev added. "It aims to reduce the size of the base GraalVM download, and to reduce confusion among some users who want to use GraalVM primarily as their main JDK."

This release comes with two compiler improvements worth noting: new optimization that eliminates unneeded memory barriers on sequential volatile writes on x86, and support in the GraalVM Enterprise compiler for vectorizing loops that have the hashCode-like pattern. Hashcode is often computed with an idiom like: hash = c * hash + array[i] , which the compiler can now recognize and vectorize, Šelajev explained.

"The JIT (just-in-time) mode for Java applications is perhaps the most tested capability for these builds," Šelajev added, "so if you are interested in running your Java applications with the GraalVM compiler or are currently using the JVMCI compiler in any other JDK 16 OpenJDK builds, consider trying out the GraalVM binaries. These include the latest OpenJDK changes and the latest GraalVM compiler changes which is the best of both worlds setup."

"Updates to the compiler are especially exciting," Šelajev said, "because they improve GraalVM across the board, since the compiler underpins the performance of all the various languages supported on GraalVM!"

The GraalVM, the first version of which was released in April 2018, is an extension of the Java Virtual Machine (JVM) designed to run applications written in a range of languages, including JavaScript, Python, Ruby, and R; JVM-based languages, such as Java, Scala, and Kotlin; and Low Level Virtual Machine (LLVM)-based languages, such as C and C++. Graal is the Java-based Just-in-Time (JIT) compiler (JEP 317) that is the basis of the Ahead-of-Time (AOT) compiler introduced in JDK 9.

About the Author

John K. Waters is the editor in chief of a number of sites, with a focus on high-end development, AI and future tech. He's been writing about cutting-edge technologies and culture of Silicon Valley for more than two decades, and he's written more than a dozen books. He also co-scripted the documentary film Silicon Valley: A 100 Year Renaissance, which aired on PBS.  He can be reached at [email protected].