Book Image

Supercharge Your Applications with GraalVM

By : A B Vijay Kumar
Book Image

Supercharge Your Applications with GraalVM

By: A B Vijay Kumar

Overview of this book

GraalVM is a universal virtual machine that allows programmers to compile and run applications written in both JVM and non-JVM languages. It improves the performance and efficiency of applications, making it an ideal companion for cloud-native or microservices-based applications. This book is a hands-on guide, with step-by-step instructions on how to work with GraalVM. Starting with a quick introduction to the GraalVM architecture and how things work under the hood, you'll discover the performance benefits of running your Java applications on GraalVM. You'll then learn how to create native images and understand how AOT (ahead-of-time) can improve application performance significantly. The book covers examples of building polyglot applications that will help you explore the interoperability between languages running on the same VM. You'll also see how you can use the Truffle framework to implement any language of your choice to run optimally on GraalVM. By the end of this book, you'll not only have learned how GraalVM is beneficial in cloud-native and microservices development but also how to leverage its capabilities to create high-performing polyglot applications.
Table of Contents (17 chapters)
1
Section 1: The Evolution of JVM
4
Section 2: Getting Up and Running with GraalVM – Architecture and Implementation
8
Section 3: Polyglot with Graal
13
Section 4: Microservices with Graal

Preface

GraalVM is a universal virtual machine that allows programmers to embed, compile, interoperate, and run applications written in JVM languages such as Java, Kotlin, and Groovy; non-JVM languages such as JavaScript, Python, WebAssembly, Ruby, and R; and LLVM languages such as C and C++.

GraalVM provides the Graal just-in-time (JIT) compiler, an implementation of the Java Virtual Machine Compiler Interface (JVMCI), which is completely built on Java and uses Java JIT compiler (C2 compiler) optimization techniques as the baseline and builds on top of them. The Graal JIT compiler is much more sophisticated than the Java C2 JIT compiler. GraalVM is a drop-in replacement for the JDK, which means that all the applications that are currently running on the JDK should run on GraalVM without any application code changes.

GraalVM also provides ahead-of-time (AOT) compilation to build native images with static linking. GraalVM AOT compilation helps build native images that have a very small footprint and faster startup and execution, which is ideal for modern-day microservices architectures.

While GraalVM is built on Java, it not only supports Java, but also enables polyglot development with JavaScript, Python, R, Ruby, C, and C++. It provides an extensible framework called Truffle that allows any language to be built and run on the platform.

GraalVM is becoming the default runtime for running cloud-native Java microservices. Soon, all Java developers will be using GraalVM to run their cloud-native Java microservices. There are already a lot of microservices frameworks that are emerging in the market, such as Quarkus, Micronaut, Spring Native, and so on, that are built on GraalVM.

Developers working with Java will be able to put their knowledge to work with this practical guide to GraalVM and cloud-native microservice Java frameworks. The book provides a hands-on approach to implementation and associated methodologies that will have you up and running, and productive in no time. The book also provides step-by-step explanations of essential concepts with simple and easy-to-understand examples.

This book is a hands-on guide for developers who wish to optimize their apps' performance and are looking for solutions. We will start by giving a quick introduction to the GraalVM architecture and how things work under the hood. Developers will quickly move on to explore the performance benefits they can gain by running their Java applications on GraalVM. We'll learn how to create native images and understand how AOT can improve application performance significantly. We'll then move on to explore examples of building polyglot applications and explore the interoperability between languages running on the same VM. We'll explore the Truffle framework to implement our own languages to run optimally on GraalVM. Finally, we'll also learn how GraalVM is specifically beneficial in cloud-native and microservices development.