Serious Java Programmer on cloud-native stack? Quarkus is here to help!
The Java platform, undoubtedly, is one of the most widely used platforms, with a huge ecosystem in the world of technology. The most of the serious java programmers work on specifications such as EJB, JPA, JMS, JAX-RS, JAX-WS. And of course Spring framework is one of the popular framework — particularly springboot providing a bootstrap environment to develop and deploy java applications faster.
The cloud computing concept has radically altered the way developers architect, write, and think about applications. Particularly the microservices architecture with domain driven and event driven concepts help rapid development of cloud-native applications. Container and kubernetes make it now easier to deploy on any cloud environment and manage them. Java is still number one choice of programming language on cloud-native technology stacks (pl see the chart depicting millions of programmers using various languages — source: IDC). And of these developers, about 80% use containers as the core technology to develop and deploy new applications (source — IDC).
Rapid adoption of containers, with portability being the main reason for adoption, has started posing challenges to these new applications. Java Virtual Machine (JVM) when running as part of applications within containers, is essentially unwanted overhead leading to consumption of computing resources (large memory requirements) and add intricacies in managing.
So, the exam question is: with number of frameworks (some based on the yesteryear Java programming model centered around JVMs), what is the best way to write and deploy complex java programs at scale that aligns with cloud computing paradigm — optimal consumption of computing resources?
Enter Quarkus!!
Quarkus is a full-stack, Kubernetes-native Java framework from Redhat with container-first strategy in mind. It is developed specifically for containers and enabling it to become an effective platform for serverless, cloud, and Kubernetes environments.
Quarkus is designed to work with popular Java standards, frameworks, and libraries like Eclipse MicroProfile and Spring , and popular open source / CNCF components such as Apache Kafka, RESTEasy (JAX-RS), Hibernate ORM (JPA), Spring, Infinispan, and Camel.
It also is designed to work with GraalVM (a universal virtual machine for running apps written in a number of languages, including Java and JavaScript) for native compilation of cloud-native applications. Quarkus is optimized for lower memory usage and faster startup times in such a way that it builds applications to consume 1/10th the memory when compared to traditional Java, and has a faster startup time (as much as 300 times faster).
Not just the lower memory usage, but the deployment density of containers in a cluster ecosystem is highly improved — particularly when used natively within kubernetes environment. Essentially, you can pack upto 8 times as many applications in containers/kubernetes clusters when compared to some of the popular frameworks (source IDC benchmark). This means:
- Optimized resource consumption (memory and cpu/gpu)
- Simplified operations given fewer number of container clusters to manager for the same amount of applications (reduction in the number of nodes)
- All leading to cost savings — fewer computing and management resources for the same number of applications
In addition, applications developed with Quarkus performs better in a serverless ecosystem. As one can imagine, its about how quickly the application “wakes-up” in response to serverless triggers (aka application startup times). For serverless infrastructure, reduced wake-up time is important because containers are spun up on demand that implicitly impacts user experience. Quarkus based applications are benchmarked to show an improved of 91% quicker wake-up in Quarkus-native types and about 50% in Quarkus JVM types (source IDC benchmark).
To conclude:
- In a typical cloud / cloud native application deployment model, Quarkus is proved to increase deployment density on container ecosystem thus optimizes Java for use with containers.
- In serverless ecosystem, reductions in first response time
time for container-native, serverless applications translate to lower application latency and improved performance thus leading to better customer experience.
References:
- https://www.redhat.com/en/topics/cloud-native-apps/what-is-quarkus
- Red Hat Quarkus Lab Validation — IDC Report