GraalVM in 2024: A year in review

Alina Yurenko
graalvm
Published in
7 min readDec 19, 2024

The year is coming to an end and many exciting things happened in the GraalVM project and in our community! In this blog post, we want to share with you some of the highlights.

Graal JIT in Oracle JDK 23 🚀

Starting with Oracle JDK 23, the Oracle GraalVM JIT compiler is now included among the compilers available as part of the Oracle JDK.

This means that Oracle JDK users can easily get access to the advanced performance optimizations, offered by GraalVM!🎉 There are several studies showcasing the performance benefits of using Oracle GraalVM JIT — you can check out the Renaissance benchmark suite, or performance study by Ionut Balosin and Florin Blanaru.

Now it’s your time to take Graal JIT for a spin!

Faster than ever on JIT and AOT 🏁

Graal JIT is known to be very fast. We love seeing users randomly discovering this and observing performance gains with zero tuning. It is that easy!

You might know that we have this big vision of AOT at the speed of JIT, and with every release we are working to that end. We are constantly tracking multiple performance metrics, to make sure that with Native Image you get the best possible peak performance in addition to fast startup and low memory usage. One of our benchmark applications is Spring PetClinic. For GraalVM for JDK 23 we benchmarked it on Ampere A1 machines, and here are the results:

Performance of Spring PetClinic with Oracle GraalVM Native Image and GraalVM CE JIT. The benchmarking experiment ran the latest Spring PetClinic on Ampere A1 servers.

More optimizations coming up in GraalVM for JDK 24!😎

Parsing 1 Billion Rows in Java in 0.3 Seconds 🤯

Speaking of speed, we can’t leave out the 1BRC 1️⃣🐝🏎️ challenge, which concluded at the beginning of the year. There are many great blog posts dissecting the competition and each of performance optimizations used by the contestants. Most of them suggest that before any manual tuning, you should start by choosing an advanced compiler, that will give you performance gains out of the box, and Graal JIT shined throughout the competition, both in JIT and AOT modes. If you are looking for a fun and highly educational video to watch during your Christmas break, may I suggest that you go with a 1BRC deep dive from Thomas Wuerthinger and Roy van Rijn at Devoxx Belgium:

Native Image developer experience 👩‍💻

The developer experience of working with Native Image is one of our priorities, and it has evolved significantly in the recent years. We are always working to reduce the time and resources needed for builds, and with every release you can see improvements. It also doesn’t hurt if you have a very good machine, as observed by Marcus Hellberg :)

Build time of a Spring Boot & Vaadin application on Apple M4 Max vs M1 Pro

We know that now that more and more users are using GraalVM in production, a smooth experience using libraries is crucial. To that end, Native Build Tools (NBT), our Maven and Gradle plugins, now enable access to the GraalVM Reachability Metadata repository by default. This means that for projects that use NBT (and frameworks that rely on NBT), configuration for known libraries will be resolved automatically. We also actively work with framework and library teams to expand what can be easily built with Native Image, and smooth out the experience. Currently, our community-maintained list of frameworks and libraries integrating with Native Image contains over 200 projects!🤯

We are also working on several projects that will improve Native Image configuration and usability.

There were several great new Native Image features introduced in 2024, such as new compacting garbage collector, new optimization level for size, and others — you can learn more about them in our release blog posts (GraalVM for JDK 23, GraalVM for JDK 22).

Expect even more DX improvements in 2025!

Graal Languages

GraalPy and GraalWasm are now stable and ready for production workloads!🎉 They have joined Java and JavaScript as our supported Graal languages.

This year we’ve spent a lot of effort on improving compatibility and developer experience of GraalPy. You might remember that embedding Graal languages in Java is just a matter of adding two Maven dependencies — org.graalvm.polyglot:polyglot and, for example, org.graalvm.polyglot:python. You can also use our graalpy-maven-plugin (or graalPy Gradle) to conveniently configure the embedding as a part of your normal Java build configuration.

Additionally, you can now use GraalPy within the setup-python GitHub Action!

Another major update in the languages space is that after two years of R&D we’ve finally merged the Bytecode DSL. Bytecode interpreters have the same peak performance as ASTs, but they can be encoded with less memory, and can benefit further from additional performance optimizations.

As the easiest way to get started with Graal languages, try our demos:

Community and User Stories

We work closely with our community to build productive partnerships, get valuable feedback, and further improve GraalVM for everyone. One of our favorite platforms for collaboration is our yearly GraalVM Community Summit. It’s a two-day event in Zurich where we meet with our partners and community members, discuss recent updates and our roadmap, and have working sessions on various topics. Every year the event grows bigger and bigger, and we are already at max capacity of our office :) This year we had a truly impressive lineup of participants, with representatives from Alibaba, Amazon, Apple, BellSoft, Broadcom, Enso, Google, JetBrains, Microsoft, MicroDoc, Neo4J, Red Hat, SAP, Shopify, TornadoVM, and others, as well as all GraalVM teams.

Photos of attendees at the GraalVM Community Summit.
GraalVM Community Summit 2024

This year was very productive for open-source community and governance. We did a public call for lead maintainers for GraalVM backport repositories, and they are now led by Foivos Zakkak, who has track record of contributing to the GraalVM project and maintaining related distributions.

Also, Sandra Ahlgrimm from Microsoft joined the GraalVM Advisory Board to help us drive the project forward and contribute to its vision.

Here are a few more notable updates from our community and users:

  • More than 2000 repositories on GitHub are now using the GraalVM GitHub action!🚀
  • GraalVM meets IntelliJ IDEA! ❤️ We have a great collaboration with the IntelliJ IDEA team, and they implemented several great features for our users. GraalJS now acts as a modern execution engine for the HTTP client, you can have syntax highlighting for polyglot applications, and most recently they are working on streamlining debugging experience for GraalVM native images.
  • The“State of Spring” survey results are out, and they offer interesting insights. 11% of Spring Boot users already run GraalVM natively compiled applications in production, 26% of users are currently evaluating, and 31% are planning to develop native applications with GraalVM!
  • One of my favorite projects this year is llama3.java, built by our brilliant colleague Alfonso² Peterssen. It’s a complete LLM inference engine in Java! No C, no Python, no dependencies, and no calls to cloud-based LLMs — a complete inference engine, which along with a model gives you a full-blown local LLM assistant. Under the hood it’s using the power of the FFM & Vector APIs, and GraalVM for starting the application with zero overhead. How cool is that!👾
  • Google Java Code Formatter is now available as very fast platform specific native binary executables, built with GraalVM.
  • Apple have announced their new configuration language, Pkl, which is built on top of Truffle.
  • You can speed up Timefold Solver startup by 20x with Native Image!
  • AWS added support for Native Image to AWS CRT Client for Java, reducing cold start request processing time by 4x reduction for 90% of the requests.
  • Micrometer enables passing observability data to multiple platforms & backends, and works like a charm with Native Image:
Native Kafka with GraalVM

Conclusions

We are already actively working on the next release of GraalVM due in March. We also have several ongoing major projects in the GraalVM space, such as Native Image Layers, GraalOS, and further compatibility and performance improvements for all our projects.

Thank you for being a part of our community and for all your contributions, suggestions, and support. We wish you happy holidays and plenty of time to recharge, and see you in 2025!🎄

--

--

Alina Yurenko
Alina Yurenko

Written by Alina Yurenko

I love all things tech & community. Developer Advocate for @graalvm, blog posts about programming, open source, and devrel.

No responses yet