GraalVM Community Survey 2022 results

Alina Yurenko
graalvm
Published in
8 min readMay 18, 2023

Some time ago we asked our community to provide feedback for our team — about the features we are working on, recent updates, and our roadmap. We received lots of valuable feedback and want to share the results and also compare them across previous years. Let’s go!

“How familiar are you with GraalVM?”

The first thing we asked to get a better understanding of our community is how familiar they are with GraalVM. Here are the results:

One insight here is that 65% of respondents are either already using GraalVM in production, or considering it for use in production.

It’s also interesting to look at this response across the years — the trend looks nice:

We are also grateful to all our contributors (7.11%), who help us improve GraalVM!

How do you use GraalVM?

There are so many ways to use GraalVM that it’s always interesting to see which are the most popular. Building native executables with Native Image, either for internal use or for distribution, is certainly leading:

What’s interesting is that 40% of respondents are using GraalVM as their JDK to run applications in JIT mode. And one in four are extending their Java applications with JavaScript, Python, and R via GraalVM’s polyglot API. And also quite a few people, 11.58%, are using GraalVM as a platform for building their own languages and tools.

“What are you working on?”

We also asked people what kind of applications they are working on. Microservices are the most common answer, which is not surprising in general and for the GraalVM ecosystem in particular. What is a bit surprising though, at least for me, is that in second place is libraries and frameworks. Desktop andCLI apps comprise about a third of the responses each.

“What languages are you using with GraalVM?”

The most popular language in the GraalVM community is Java, which is not surprising. Among other JVM languages, Kotlin is the leader. JavaScript and Python are also quite popular — almost one in five people in our community are running them on GraalVM.

It’s also interesting to look at how language distribution changes across years. If we compare 2022 and 2021 (in 2020 the question was slightly different), we see that Java is a definite leader. Among non-JVM languages, Python is catching up with JavaScript pretty quickly and it is quite likely that next year it will the most popular non-JVM language in the GraalVM community:

“What technologies are you using with GraalVM?”

HTTP server and client are used by the majority of the GraalVM community — 70%. What’s interesting is that those numbers have increased rapidly over the years: from ~20% in 2020, to ~57% in 2021, to 70% now. One of the possible reasons could be ease of adoption: many Java web frameworks and libraries now support GraalVM, and in particular Native Image, out of the box.

We see a similar trend for database connection — 66.84% of respondents now use it with GraalVM with rapid growth over the years.

On the other hand, technologies like Apache Spark, Hadoop, and ElasticSearch, are now used less often on GraalVM.

“Which frameworks are you using with GraalVM?”

We are glad to see many Java frameworks adopt GraalVM — it’s now easy to build applications that work with GraalVM, no matter which framework you are using.

In terms of trends, we see more Spring Boot applications being developed on GraalVM, since Spring Boot 3.0 with Native Image support went GA.

“What is your primary development platform?”

Linux is leading, which is not surprising — 40.5% of responses. Windows is in second spot but a bit behind with 24.5% of responses, and MacOS on ARM64 is already third with almost one in five developers in the GraalVM community working on such machines. This data will help us prioritize our platform support.

“What is your primary deployment platform?”

Cloud deployments (serverless and container deployments) are used by 42.1% of respondents. Desktop remains quite a popular deployment platform — it was mentioned by 22.6% of respondents.

“Which IDE are you using?”

No surprises here — everyone loves Intellij IDEA and so do we :) Visual Studio Code is also quite popular with almost a third of the responses. We also already see some adoption of Cloud IDEs, and we expect to see it rapidly growing in the future.

“Which GraalVM tools are you using?”

We are happy to see more than 70% of developers in our community using Native Build Tools! 🛠 These Maven and Gradle plugins are very helpful for developing, building and testing applications with GraalVM Native Image, and they are also used and included in your build file by several frameworks. By the way, Native Build Tools released a new version recently — check it out!

VisualVM is another popular tool with 26.58% of responses. If some of the tools in this list are new to you, check out our tools page: graalvm.org/latest/tools.

“What is the biggest barrier preventing you from adopting GraalVM?”

This is one of the most important questions for us, as we want to make GraalVM helpful and accessible for everyone. Let’s look at this year’s results:

  • Need more libraries available in native mode”, 16.84%. It’s hard to develop or migrate an existing application if your libraries don’t yet support Native Image. Luckily, recently library support has improved significantly. At graalvm.org you can find a list of libraries and frameworks that are tested to seamlessly work with Native Image. At the moment, the list contains more than 150 such libraries and frameworks, including Micronaut, Spring, Quarkus, Helidon, H2, GraphQL, MariaDB, Netty, MySQL, Neo4j, PostgreSQL, Testcontainers, Thymeleaf, and many others. We are glad to see our ecosystem actively adopting Native Image and building out support for it, in particular in the GraalVM-reachability-metadata repository. This repository is also integrated with Native Build Tools, so it’s now possible to automatically discover and pull Native Image configuration files for your dependencies.
  • Need better error/diagnostic messages when compilation fails”, 13.16%. Compiling Java applications to native is not a trivial process, and when it fails, it might be hard to understand what exactly failed and how to fix it. We are actively working to improve error handling with every release. Another improvement in this area that is already merged and is coming up in the next release is more user-friendly reporting of internal errors. In case of a build failure, instead of stack traces the build will produce a clear message with instructions for how to proceed: inspect the error report and, if you are unable to resolve the problem, file an issue with the error report. And we are working on another longer-term project, which is Better Native Image Errors. We are going through each possible error making sure that the error messages are clear and actionable, it’s easy to find related issues and report new issues, and are recategorizing errors. For example, we plan to clearly distinguish between user errors (caused by the user; need a clear action) and internal errors (caused by Native Image; need to be reported).
  • Want higher native executable peak throughput”, 10.79%. This is another aspect of Native Image that we’ve been working on for a while. In GraalVM 21.3 we showed that peak performance of native executables built with GraalVM can be on par with executing on the JVM, and we’ve added several improvements since then. As another example, watch our recent demo at Devoxx Belgium, where we show how a native executable version of an application performs on par and even outperforms running on the JVM. To achieve the best peak throughput for Native Image, you do need profile-guided optimizations and G1 GC, that are available in GraalVM Enterprise.
  • I need more information about project’s future and stability”, 9.21%. One of the places where you can find such information is our roadmap on GitHub, and we expect more changes soon related to GraalVM in OpenJDK and Project Galahad. We are also meeting regularly with the GraalVM Advisory Board to discuss recent and upcoming updates with key partners in the ecosystem. Let us know what other questions or suggestions you have for GraalVM’s roadmap.

“Which edition of GraalVM are using”?

11.05% of our respondents use GraalVM Enterprise. What’s interesting, 5% build their own custom builds of GraalVM.

“Which Java version do you mainly use in production?”

We are glad to see most of community embracing the most recent Java versions. 47.7% are using Java 17, and 63.5% combined are using Java 17 or higher. Some, but not many, are still on Java 11 (23.7%), and <1% are on versions older than Java 8 :)

Conclusion

We hope that this (not so short) blog post was interesting for you, and will also help our partners in the ecosystem get insights into how GraalVM is being used in the community. The results of the survey were definitely very helpful for us in terms of adjusting our roadmap, prioritizing features and platforms, and planning upcoming changes.

Feel free to share this blog post with your community, and if you have any additional feedback for us, please share it via Slack, GitHub, or Twitter.

--

--

Alina Yurenko
graalvm

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