Spring Boot is by far the most popular choice when it comes to developing microservices in Java – so much so that it has become synonymous with Java microservices. There are, however, alternatives in the Java ecosystem to develop microservices. They have their own advantages and niche use cases where they shine that the developers should be aware of so that they can choose the right framework for their use case.
In this article, we’ll look at the top frameworks to develop microservices in Java and JVM ecosystem so that developers can choose the best framework for their requirements.
When it comes to developing enterprise-grade java/jvm microservices, some of the Spring Boot alternatives are Quarkus, Micronaut, DropWizard, Kalix and Sparks.
Let’s look at each one of them.
What is Quarkus?
Quarkus is a comprehensive set of Java libraries and tools that focuses on developer experience, native binary generation and associated performance benefits and enhanced support for containerized environments such as Kubernetes.
Quarkus leverages ahead-of-time (AOT) compilation with GraalVM to produce lightweight native binaries with extremely fast startup times and lower time-to-first-request.
Similar to Spring Boot, Quarkus leverages open standards and extends core functionality via a plethora of extensions. This approach reduces the time required for Java engineers to ramp up on Quarkus.
When to use Quarkus?
Quarkus is best suited for the following use cases –
- You need to combine imperative and reactive styles of development
- You need truly high scalability, fast boot times
- You want to continue leveraging popular best of the breed libraries for specific capabilities.
What are the Advantages of using Quarkus?
Quarkus offers the following advantages –
- Quarkus helps tailor your application for GraalVM & Hotspot
- Extremely fast boot times and near-instant scalability
- Ability to continue using other best-of-the-breed libraries
- Allows you to combine imperative and reactive development styles
- Vibrant community & comprehensive documentation
- Optional enterprise support by Red Hat
Who is using Quarkus?
How to get started with Quarkus?
There is a quick four step guide that covers setting up and running with Quarkus. Once you complete that, the guides page lists guides for amnay other use cases such as building native executables, deploying to kubernetes, etc.
What is Micronaut?
According to Micronaut’s website, Micronaut is a modern, JVM-based, Full-Stack framework for building modular, easily testable microservices and serverless applications.
It offers some key features out of the box, such as service discovery, tracing, cloud-native runtimes, and OpenAPI support that are necessary for operating microservices in the cloud at scale.
When to use Micronaut?
Micronaut is best suited for the following use cases –
- You need Spring like dependency injection without using Spring or Spring Boot.
- Use cases that require quick start-up time (in tens of milliseconds) and optimized for memory footprint
What are the Advantages of using Micronaut?
Micronaut offers the following advantages
- Rapidly build modular and easy testable JVM applications using familiar programming models and concepts such as Inversion of Control (IoC), Aspect oriented programming (AOP) and sensible defaults.
- Out of the box support for necessary cloud native features such as Cloud configuration, service discovery and routing, serverless functions (on AWS, GCP, Azure), distributed tracing, event driven producers and consumers, etc.
- Comprehensive guides, webinars, professional training available to meet enterprise standards for upskilling and support.
Who is using Micronaut?
Lot of organizations from startups, to large enterprises in various industries such as a retail and gaming are using Micronaut. Some of them are –
- Mojang (Creators of popular game, Minecraft)
- Samsung SmartThings IoT platform
- Large unnamed multinational manufacturer of spacecraft and commercial jetliners
How to get started with Micronaut?
Java, Kotlin or Groovy developers can easily get started with Micronaut using the following resources –
- Create your first Micronaut application
- Micronaut Dependency Injection
- Error handling in micronaut framework
- Event driven applications using Kafka and Micronaut
There are many more guides available for specific use cases at https://guides.micronaut.io/.
Micronaut also has comprehensive documentation and API reference that is typically available at https://docs.micronaut.io/index.html.
Similar to Spring Initializr, Micronaut provides Micronaut Launch to quickly configure your project and generate scaffolding code.
Micronaut is an open source project with Apache-2.0 license. As such, it is free to download and use. Paid consulting and support packages are provided by Object Computing, Inc., the primary team behind the framework.
What is Dropwizard?
By providing support for production ready features such as metrics, logging, ops tools, etc., Dropwizard enables developers to rapidly write production quality web applications.
When to use Dropwizard?
Dropwizard is best suited for the following use cases –
- Your primary microservices use case is developing RESTful APIs.
- You are looking for a lean framework that pulls together best of the breed libraries from across the Java ecosystem.
- You don’t require commercial support for the framework.
What are the Advantages of using Dropwizard?
Micronaut offers the following advantages –
- Familiar programming model and libraries
- Out of the box support for production ready features such as logging, metrics, liquibase for database schema management, OAuth2, etc.
How to get started with Dropwizard?
Dropwizard’s Getting started guide walks you through the process of creating a simple Hello World application explaining various libraries and concepts along the way.
You can also browse through the code for an Example Application on Github.
Dropwizard is open source project released under the standard Apache-2.0 license.
What is Kalix?
Kalix is a programming model, runtime as well as a Platform-as-a-Service (PaaS). By owning the entire stack required to create and operate microservices, Kalix can offer a comprehensive serverless solution that makes it easy to develop and run highly performant low latency microservices. Kalix’s opinionated approach and stack significantly reduces build as well as operation costs for microservices.
Using Kalix, developers can take a true API-first approach to developing and exposing microservices.
When to use Kalix?
Kalix is best suited for the following use cases –
- Serverless event-driven microservices
- IoT platforms
- Streaming media platforms
- Messengers and chatbots
What are the Advantages of using Kalix?
Kalix offers the following advantages –
- Cost efficiency – By owning the entire stack required to build and run microservices and offering a pay-as-you-go pricing model, Kalix is able to drive significant cost savings in building and managing microservices at scale
- Reduced operational overheads – Kalix’s approach eliminates the need for data caching, database administration, custom DevOps and SRE significantly reducing the operational overhead for your microservices
- Multiple programming languages – You can develop Kalix microservices not just in Java but also in Typescript, Scala, Python or plain JS.
How to get started with Kalix?
Kalix Developer hub (https://www.kalix.io/developer) is the best place to learn how to use Kalix for microservices. It contains a quick guide to seting up your first microservices with Kalix as well as video series that cover typical use cases you’ll encounter and different aspects of microservices development.
Kalix offers various pricing models, including a free tier, pay-as-you-go model as well as plans for large enterprises. Head over to their pricing page (https://www.kalix.io/pricing) to learn more.
What is Vert.x?
Vert.x is a framework for developing Reactive microservices on the JVM platform. Using Vert.x, developers can rapidly create high quality reactive microservices in Java, Kotlin or Groovy programming languages.
Vert.x comes with built-in support for a lot of pragmatic, enterprise-grade capabilities, features, and integrations with other best of the class open source libraries.
When to use Vert.x?
Vert.x is best suited for the following use cases –
- Resource efficiency is a factor
- The microservices need to be written in the reactive paradigm
Who is using Vert.x?
Vert.x website lists popular organization and brands such as Groupon, ING, Red Hat, Hulu, Ticketmaster that are using Vert.X
How to get started with Vert.x?
Similar to Spring Initializr, Vert.X provides https://start.vertx.io/ that you can use as a project generator. Using start.vertx.io, you can quickly get started with an empty application scaffolding in either Java or Kotlin and using either Maven or Gradle for dependency management.
Introduction to Vert.X and Reactive is a good introduction to the reactive programming paradigm and how Vert.X helps.
What is Spark?
Spark is an expressive and lightweight micro-framework to create RESTful API microservices. Spark supports Java and Kotlin programming languages and built with the goal of improving developer productivity. For example, you can write a basic REST API implementation in under 10 lines of code using Spark.
When to use Spark?
Spark is best suited to develop microservices when you need a simple, unopnionated framework to reduce boiler plate code and improve developer productivity.
What are the Advantages of using Spark?
Spark offers the following advantages –
- Simple – Unopnionated micro-framework with very little learning curve for Java/Kotlin developers
- Lightweight -Spark’s philosophy is to improve developer productivity. It does not promise anything else. This focus on singular objective allows Spark to be a lightweight framework.
- It is easy to containerize microservices written using Spark and deploy them to hyper-scaler of your choice that can run containers (Heroku, AWS, GCP, Azure, etc.)
How to get started with Spark?
Getting started with Spark is as easy as adding one dependency to your Maven pom (or Gradle).
The tutorials page on the project website has a comprehensive list of tutorials that you can follow to get started with developing REST APIs using Spark.
Spark is a free and open-source framework. It is released under Apache 2 License.