Last year we started our first release candidate builds of GraalVM, and since then we received a lot of feedback, solved dozens of reported issues, improved developer experience, bettered performance, enhanced the polyglot interoperability and the compatibility of the languages with their respective ecosystems. We added tests, benchmarks and real world examples to the build infrastructure to ensure smooth progress. We received contributions from developers from all over the world and from many large companies like RedHat, Alibaba, OCI computing, Pivotal and others. We are really grateful for all contributions and also any feedback we have received so far! Early adopters and pioneers are essential kick starters for any new type of technology.
While we previously only published “release candidates”, we believe that GraalVM finally is mature and ready for production use. Therefore, we today officially release GraalVM 19.0. The core download contains the following components:
- Java 8 SE compliant Java Virtual Machine (based on OpenJDK 1.8.0_212). Many allocation-heavy workloads run faster with the GraalVM compiler, Twitter is one company known for running their systems with the GraalVM compiler. Also Scala programs show significant performance improvements when running on GraalVM. ES4x for Vert.x has included GraalVM as the runtime of their choice in the TechEmpower benchmarks. There’s also the Renaissance suite, a new aggregated benchmark for the modern workloads on the JVM shows that GraalVM is often superior to other ways for running Java applications.
- Node.js with polyglot capabilities, based on Node.js v10.15.2, which allows one to leverage Java or Scala libraries from Node.js. For example Wix engineering experimented with this approach and you can learn about their results here. One can also tinker with the interop in the other direction to use Node.js modules in Java applications like this article explores.
- Runtime for running LLVM 6.0.0 bitcode in a managed environment which allows to integrate native languages more directly into your Java programs.
There are also components that can be installed via the
gu (GraalVM Updater) utility, for example:
gu install native-image
GraalVM Native Image, currently available as an early adopter capability, has incredibly fast startup time, which is a very welcomed quality in cloud deployment scenarios. Many projects in the ecosystem have accepted GraalVM Native Images as a platform for their artifacts or workloads: Quarkus, Micronaut, Helidon — support GraalVM native images. Netty recently included the configuration for GraalVM native images into its artifacts simplifying native image generation for all their and downstream projects’ users. We also continue to work in collaboration with Pivotal engineers and looking forward to the native image support for Spring applications.
Other components installable with the
gu utility are the language components
gu install ruby R python
These languages Python, Ruby, and R, that we are developing, are still “experimental” in the release. We are looking for further feedback on those artifacts and need more stabilization/community work.
Until now we released monthly builds of GraalVM and we will continue to innovate and improve the platform further. However, we realize that with the release being available, the community will rely on it more than before.
The GraalVM 19.0 will be the current stable release recommended for production use. We plan to release updates to it: GraalVM 19.1, 19.2 and so on at least once per quarter. These updates will include bug fixes and stability and performance improvements, but no major new features. When necessary, a one-off hotfix GraalVM 19.x.1, 19.x.2, etc. release will be published.
At the same time, we’re going to have monthly beta releases which will push the boundaries of what’s possible to do with GraalVM, include new major features, add new platform support and so on. For example, we’re planning on keeping up with the ecosystem and releasing releases with the updated versions of the platforms regularly. JDK 11 based builds as well as Node.js 12 based builds are planned.
These beta releases are marked “20.0-betaN”, where N is an incremented counter. They will converge into the next stable release GraalVM 20.0 next year.
We see more and more interest for GraalVM in the community every day and we are thankful for any type of contributions. In order to further improve the engagement with the community and overall governance of the project, we are introducing regular community calls. The agenda for a community call will be based on graalvm-dev mailing list messages or GitHub issues that are posted on Twitter with hash tag #GraalVMCommunity — i.e., most liked tweets will be on the agenda.
We will also organize a regular GraalVM Committer Workshops, the first of which will happen at Code One. We will announce the details on the graalvm-dev mailing list.
We understand the value GraalVM offers to the ecosystem and we’d love to keep it a great open-source project which facilitates participation from various contributors and evolves to be the best version of itself for everyone involved.
In addition to the release of GraalVM 19.0 Community Edition, there is also the GraalVM 19.0 Enterprise Edition made available by Oracle. It provides even more options for increasing performance and comes with commercial support. See the announcement blog post for this as an official product here. We are committed to improve all editions of GraalVM and believe having a supported commercial product available adds value to the overall ecosystem. It provides the option for companies for a stable long-term supported offering and helps funding the quite substantial core development.
The GraalVM team is committed to make GraalVM the best in class runtime for all supported languages. It’s an ambitious goal and it will certainly take time, but we know that right now GraalVM can be used in production and offers benefits in many scenarios. We ourselves are using GraalVM for our Java deployments, Twitter is using it for speeding up Scala microservices, Goldman Sachs engineering is evaluating a migration of their internal programming language to GraalVM, the Wix Engineering team experiments with Java and Node.js polyglot applications, and there is also lightweight Native Clojure. We know of more projects or companies using GraalVM and are looking forward to hearing their stories publicly!
Go get GraalVM and build stuff!
Incredibly happy and excited GraalVM team