Java has been the workhorse of enterprise software application development for the past 25 years. During this time, we have also seen some drastic changes to application infrastructure technologies - ones that are not always compatible with the Java framework. We have seen it all: from monolithic application servers, to API-driven programmable infrastructure, to just-in-time intelligent serverless infrastructures. We have gone from extensive setup and dynamic configuration for peak workloads, to expressing the ideal operational model as code for our applications. Now with serverless computing, developers can focus on providing the application code and letting an intelligent application infrastructure run and scale up and down for use, without even thinking about infrastructure concerns.
Increasingly, modern application infrastructure tends to be immutable, meaning that servers are not able to be modified after they have been deployed. Immutable infrastructure can help simplify operations and lead to simpler, more predictable, and consistent deployment processes. When changes are required, the old configuration can be replaced with a new configuration to keep the environments consistent and easily reproducible across development, test and production. However, the traditional Java framework was designed for changeable application infrastructure that is no longer required in modern cloud environments.
Updates to Java and benefits of Quarkus
What does infrastructure advancement have to do with the Java programming language? As an industry, we need to rethink how Java can be best utilized for modern application development and deployments on new application infrastructure environments and application architectures. According to the 2020 Eclipse Foundation Jakarta EE developer survey, which included respondents who range from developers to IT management and leadership, Quarkus is one of the most rapidly growing Java projects. The survey found that “Since its announcement early in 2019, the adoption of Red Hat’s Quarkus has skyrocketed with 16% of developers now using the framework.”
Quarkus can help Java developers be more productive and apply their Java experience to modern application architectures like microservices and functions. To help facilitate the transition to Kubernetes-native Java, Red Hat worked with analyst firm IDC to publish the Lab Validation Report1. This report compares Quarkus to a popular cloud-native Java framework based on a number of criteria that are important for container, Kubernetes, and cloud deployments and developer efficiency. The report validates that Quarkus improves developer productivity as compared to the other popular Java framework. This is a key benefit of Quarkus, as improvements in developer productivity can lead to faster time to market and innovation that is able to empower organizations to remain competitive by providing enhanced user experiences and new innovative solutions to their customers.
Business impact of Quarkus
Vodafone Greece replaced SpringBoot with Quarkus, not just because it was a cool, new project, but their investigation revealed real business impact. For example, each development cycle consists of one to two sprints (one sprint being a two-week period) depending on the complexity of the logic being developed, and with Quarkus they saw a “30 to 40% better developer productivity vis-a-vis Spring Boot, and this is for an ex-Spring Boot developer,” according to Christos Sotiriou, technical lead at Vodafone Greece.
Similarly, Sam Dacanay, lead developer at LogicMonitor, shared a blog highlighting that Quarkus used about 15% of the CPU from the previous Spring/Tomcat solution. This enabled LogicMonitor to scale down one of the POC application’s resource requests/limits in Kubernetes (about 200 cores worth across LogicMonitor’s infrastructure’s Kubernetes worker nodes). With Quarkus, only about 12% of memory is used, so they could scale down here too, resulting in a memory reduction of approximately 500 GB across the infrastructure in this application alone. The startup time was reduced from 15 seconds to an average of two seconds, 85% faster than before. This reduction in startup time could have a huge impact on both developer productivity and operational efficiency in production.
Quarkus provides an effective solution for running Java in this new world of serverless, microservices, containers, Kubernetes, functions, and the cloud because it has been designed with these in mind. Key benefits of using Quarkus include better cloud resource utilization through increased deployment density, enhanced developer productivity, improved application throughput given increasing load, and decreased start-up time. The need for multiple environments such as development, testing, and high availability also means developers could see significant productivity gains and cost savings with Quarkus.