Red Hat Quarkus is a superfast-to-load, Kubernetes-native Java framework, tailored for GraalVM and (OpenJDK) HotSpot JVMs. Quarkus is significant in that it brings Java back into the frame where faster languages designed for cloud-native computing threaten to edge it out. Such an eventuality would not be good for the vast number of enterprises that have invested heavily in Java and want to move to microservices, containers, and Kubernetes. Quarkus is still at an early stage of development but this is a technology Red Hat is clearly excited about, given its existing stake in Java, its increasing role in the Java community, and its embrace of cloud-native computing. Expect to hear more about Quarkus as it makes Java a first choice for cloud-native computing.
Kubernetes is written in the Go programming language, and Google chose this over Java due to Java’s slow and heavy runtime. Java badly needs to be reformed for microservices applications and Quarkus provides a high-performance Java runtime that competes on a level field with newer languages such as Go and node.js. Quarkus has fast load time (Red Hat has measured 0.008 sec), has lower memory usage (Red Hat has measured 13MB of memory consumption for a simple REST microservice), and a smaller footprint than other JVMs.
Quarkus is a Kubernetes-based framework. Its key feature is the use of ahead-of-time compilation to perform optimization at build time, so the application only contains classes used at runtime. This results in the superfast load time. When it is compiled down to a native image, it can run with a much smaller heap than a standard JVM and pre-booting of the framework during the build results in an even faster startup. Moreover, it makes containers the method of delivery, it supports the melding of imperative (traditional) with reactive programming, and it can be used with Knative, the Kubernetes platform for building, deploying, and managing serverless workloads, independent of the cloud flavor they run on. It has a unified configuration that makes cloud-native programming painless for developers. And the framework libraries include Eclipse MicroProfile, JPA/Hibernate, JAX-RS/RESTEasy, Eclipse Vert.x, Netty, and others.
Quarkus tries to avoid Java reflection because reflection impacts startup time and memory usage, so ideal applications for Quarkus should not use reflection.
Quarkus requires GraalVM or OpenJDK Hotspot. GraalVM emerged from the broader Graal and Truffle project. Graal (the name appears to stem from an old spelling of grail, as in Holy Grail) and Truffle have been in the works research projects embracing academia and technology companies for many years. Graal itself is a highly efficient just-in-time compiler, and the GraalVM component in this stack was contributed by Oracle in 2018.
MicroProfile is now part of the Eclipse OSS portfolio, and is defined as “a baseline platform definition that optimizes Enterprise Java for a microservices architecture and delivers application portability”. Through MicroProfile, GraalVM and several popular developer frameworks, Quarkus offers the enterprise Java developer a set of familiar and powerful APIs with which to build cloud-native Java applications.
Michael Azoff, Distinguished Analyst, IT Infrastructure