Now that the cloud is a permanent fixture inside enterprise development shops, it’s only natural to bring legacy applications to the cloud. But deciding just how to do that remains an issue of contention and discussion for many teams.
For enterprises with a large variety of Java applications in their environments, Spring Boot has long been the path forward to the cloud for enterprise Java users. But over the course of 2021, Quarkus, the Kubernetes-native pure Java stack, began to gain momentum as an alternative path to the cloud for Java applications.
Now, in 2022, that growth is spurring Quarkus to become one of the most popular topics for Java developers. It’s also allowing companies to adopt a new stack.
That includes developers like KimJohn Quinn, co-founder of Logicdrop. His company makes a business automation platform that abstracts complexity away from users, creating a low-code platform for building business rules in the cloud.
Quinn said his company has been using Java since it was founded in 2010. He said he and the team were attracted to the productivity and time savings that Quarkus provides.
Quinn said the team at Logicdrop had adopted Quarkus less than a year ago. “In six months, we ported almost 70% of our platform over to Quarkus between two engineers doing most of that work.”
Shifting to Quarkus
Quinn is now a full believer in Quarkus and has begun planning the future of the company’s Java applications through its lens.
“Where at one time we seriously were considering other languages to replace most of our existing Spring Boot-based platform, we now think Quarkus is the future and have standardized on it as our primary stack. Quarkus lets us use the Java we all know and love as well as accepted standard APIs. We have a much more cohesive microservice environment that developers of any skill set are comfortable working in, it fits very well into our CI/CD process, configuration is simple and straightforward, and the developer tools are solid. Adding icing to the cake, we get native executables comparable to, if not smaller than, other alternatives such as Node, Python or C# to boot. Quarkus has been a refreshing change, and it really does make developing in Java fun again.”
“The Java world is rich with frameworks and APIs each having their own merits,” said Quinn. “For any developer, this plethora of choices can be overwhelming, especially when building a product that needs to be performant, maintainable and flexible. Spring is almost always the obvious go-to choice because of the richness of its libraries, the length of time it has been around and the familiarity many developers have with it, but it is those very reasons we sought out an alternative. … We wanted the simplicity of Google Guice for DI/IoC but also a robust platform with enough supporting libraries to meet our needs in a more conventional Java way. Quarkus literally has everything we need.”
Since Spring Boot has a rich battle-tested ecosystem supporting it, the company had hoped that it would enrich the development process and simplify integration with various Java and cloud technologies, making it faster and easier.
“In the end, as our platform grew, the combination of opinionated views on configuration, injection magic, and very seldom definitive answers on how to perform everyday tasks beyond the obvious, we found ourselves dealing with an increasingly complicated and bloated system,” Quinn said.
“Our core product, originally based on Spring Boot, bent Drools to our will before Quarkus and Kogito were publicly available. Later we added new technologies such as Reactive streams, Camel integration and messaging,” he said.
“Still, a good portion of our platform, probably like many others, relied on common boiler-plate approaches for security, MVC (model–view–controller) and CRUD. Spring was overkill in terms of what we needed versus what we used versus how we used it. Further complicating this was our head-on adoption of Kubernetes and Knative. Using Spring Boot, our container sizes and startup times were too heavy to play nicely in our environment.”
That was one of the major victories from moving to Quarkus, said Quinn.
“When we made the jump to Quarkus, it dramatically changed how we did things for the better, and it played with Kubernetes and Knative out of the box. Everything we needed, and more, was available in the Quarkiverse, and in short periods of time, we could prototype features that would have normally taken us much longer to just get our arms around.” said Quinn.
Quinn said that Quarkus is now the basis for the company’s core application and some of its other projects as well.
“We shifted to Quarkus and even in our early experimentation, we started to see a dramatic improvement in everything. We were going from one- to two-week first merge cycles to a matter of hours. Even to this day, we are pushing things out in hours. Features are flying in and out lightning fast, and we’ve been able to bring in developers who were formerly Node developers and Python developers, and we have a common understanding across our whole Quarkus platform by everybody. There’s productivity across the board. Quarkus has let us focus on what we need to do rather than how to get there first,” said Quinn.
Quinn particularly likes the way that Quarkus just works, something not necessarily familiar to Java developers.
“Getting set up was no problem. What pushed us over the top coming from Spring Boot: We took the OpenID Connect extension, hooked it into Keycloak and it worked. As an example, we said ‘Let’s throw it into Auth0 and see what happens.’ We were sure it was going to explode. We sent it, and I got a 401 HTTP error. That’s exactly what I’m looking for. We said ‘Let’s get a token,’ and it logged in and executed. When a single property changed, we bounced between Keycloak and Auth0 and everything ran,” said Quinn, explaining how easy it was to tie the Quarkus landscape into Kubernetes authentication procedures.
Vaadin on Quarkus — From Community Project to an Officially Supported Integration
Matti Tahvonen, senior developer advocate at Vaadin, said Quarkus has increased productivity among its developers as well. The company offers a web framework for Java applications, enabling modern UX development for modern browsers while still using Java behind the scenes.
Because Vaadin offers a UI framework for Java developers, they can see the trends among them fairly easily, and it sees Quarkus gaining steam.
To date, Spring Boot has the deepest integrations with Vaadin, created because Spring Boot was the most popular path to the cloud for many Java developers. Vaadin also has lots of users on Java EE servers, as well as some companies that want to build their own stack on plain servlet containers. Lately there have been requests for Quarkus as well, Tahvonen said.
But the reason Vaadin is now providing official integrations for Quarkus is not simply because customers are asking for it — the company had already chosen to build its big product with Quarkus as well. Indeed, some customers had already built community integration tools for Vaadin and Quarkus before Vaadin had a chance to build its own. The demand is there, said Tahvonen.
The customers he has seen transitioning to Quarkus are coming mostly from Java EE servers.
“So if they have been using JBoss in the past, now they are looking into Quarkus as a replacement for Spring Boot because Spring Boot has totally changed how people package and deploy their applications, and Quarkus is doing something similar, so the server is part of the application and not the other way around,” he said.
And Quarkus is pure Java, like Vaadin, another thing Tahvonen and his team like about it.
“Quarkus and Vaadin are a great combination,” said Tahvonen. “Vaadin is pure Java, only Java. There’s no XML, no HTML, no CSS, unless you want to get the lower abstraction level. You can work in one single language. The biggest benefit of Vaadin is that you don’t need to do context switches between languages and execution platforms.”
While Java may be viewed as an older language, Quarkus is helping companies around the world modernize their core applications for cloud deployment. Decathlon was able to ramp up to Quarkus from Spring Boot in a single week. Abraxas used Quarkus to build the backbone of its new tax solution for Swiss government tax agencies. Vodafone Greece migrated dozens of applications and improved performance over Spring Boot.
Quarkus offers a host of modern luxuries for the enterprise Java developer. From faster boot and REST response times, to smaller memory footprints, Quarkus can be used in containers without overwhelming the host server with mundane and traditional Java overhead. And it’s open source, so developers can contribute to it if they want to give back to the community.
Feature image via Pixabay