# Top Microservices Frameworks In Java

This article is an effort to summarize the Top Microservices Frameworks in Java and is listed in no particular priority order. Considering the flexibility in MSA (Microservices Architecture), these are not mutually exclusive and you can choose as per your architectural requirements, business need, organizational context, and other factors under consideration.

## #1 Spring Boot with Spring Cloud (Production-grade, Widely Adopted)

[Star](https://github.com/spring-projects/spring-boot)

**Developed by:** [Pivotal (part of VMWare)](https://tanzu.vmware.com/)  
**Link:** [spring.io/projects/spring-boot](https://spring.io/projects/spring-boot)

[Spring Boot](https://spring.io/microservices) does not require any introduction as it is the most widely used Microservices framework for Java. It is an opinionated view of Spring framework to get started quickly. [Spring initializer](https://start.spring.io/) is very handy to generate code with many options to choose from as dependencies as needed.

**Key Features:**

-   Production-grade java services with a strong development community.
-   Integrates with Spring lifecycle to leverage capabilities like Security, Service Discovery, Config Server, Tracing, and so on.
-   Automatically configure Spring and 3rd party libraries whenever possible.
-   Supports both [servlet stack](https://docs.spring.io/spring-framework/docs/current/reference/html/web.html) and now [reactive stack](https://spring.io/reactive) (see below).

[![Spring React vs. Spring Servlet Stack](https://vedcraft.com/images/2021/03/Spring-Stack.png)](https://vedcraft.com/images/2021/03/Spring-Stack.png)

Source: [https://spring.io/reactive](https://spring.io/reactive)

**High-level Architecture:**

[![Spring Microservices](https://vedcraft.com/images/2021/03/microservices-springboot.png)](https://vedcraft.com/images/2021/03/microservices-springboot.png)

Source: [https://spring.io/microservices](https://spring.io/microservices)

**Cloud Support:**

-   Spring Cloud has connectors built for integration with [AWS](https://spring.io/projects/spring-cloud-aws), [Azure](https://spring.io/projects/spring-cloud-azure), [Google Cloud](https://spring.io/projects/spring-cloud-gcp), [Alibaba Cloud](https://spring.io/projects/spring-cloud-alibaba), and many more. [Click here](https://docs.spring.io/spring-boot/docs/current/reference/html/deployment.html#cloud-deployment) for Cloud Deployment.
-   [Spring Cloud for CloudFoundry](https://cloud.spring.io/spring-cloud-cloudfoundry/reference/html/) makes it easy to run Spring Microservices using [CloudFoundr](https://www.cloudfoundry.org/)y (an OpenSource PaaS model built by Pivotal).
-   Provides [Spring Cloud Services with VMWare Tanzu](https://tanzu.vmware.com/solutions-hub/microservices-management/spring-cloud-services) as a service offering.
-   VMWare partnered with Azure to provide it as a service offering: [Azure Spring Cloud](https://azure.microsoft.com/en-us/services/spring-cloud)

**Suitable for:**

-   Enterprise-grade, and industry-proven Java-based Microservices
-   Out-of-the-box integration with many third-party libraries/dependencies are needed
-   Developers availability & community support are major criteria for selection

**Where other frameworks flare better:**

-   Lightweight Microservices – Spring dependencies can make the services heavier particularly with many dependencies
-   [gRPC](https://grpc.io/) based Microservices – Custom support but still evolving
-   [Reactive programming](https://www.lightbend.com/white-papers-and-reports/reactive-programming-versus-reactive-systems#:~:text=Reactive%20Programming%20is%20a%20distinct,Systems%20at%20the%20implementation%20level.&text=Reactive%20Systems%20offers%20productivity%20for,other%20large%2Dscale%20distributed%20systems.) – started support but there are other frameworks which got built with reactive as foundational architecture

## #2 Micronaut (Modern, Full-stack, Easy Testable, Designed for Serverless)

[Star](https://github.com/micronaut-projects/micronaut-core)

**Developed by:** [Object Computing](https://objectcomputing.com/) (the company behind [Grails](https://grails.org/))  
**Link**: [micronaut.io](https://micronaut.io/)

Micronaut is a modern, lightweight framework designed for building modular, easily testable JVM applications with multi-lingual support for _Java, Kotlin, and Groovy_. It has excellent cloud-native & serverless support. [Click here](https://objectcomputing.com/files/7515/8584/3080/Slide_Deck_SPAs_for_Microservices_Webinar.pdf) to download the slides covering an overview of the framework.

**Key Features:**

-   Based on Reactive programming model with support for both RxJava & Project Reactor.
-   Faster startup time (early [GraalVM](https://www.graalvm.org/) adopter), reduced memory footprint, minimal use of proxies & reflection, no runtime bytecode generation
-   Easy unit testing & lightweight framework with non-blocking calls native built using [Netty](https://netty.io/) from start

**Cloud Support:**

-   [AWS Lambda Support](https://micronaut-projects.github.io/micronaut-aws/latest/guide/index.html#lambda) for building Serverless Application ([with GraalVM Native Image](https://guides.micronaut.io/mn-application-aws-lambda-graalvm/guide/index.html))
-   Azure Support for Deploying to [Microsoft Azure App Service for Web Apps](https://guides.micronaut.io/micronaut-azure-cloud/guide/index.html)
-   Google Cloud Support for [Deploying to Google App Engine](https://guides.micronaut.io/micronaut-gradle-google-cloud/guide/index.html)

**Suitable for:**

-   Reactive programming model (with serverless support) is a key criterion
-   Event-Driven/Message-Driven Applications, Command Line Applications, HTTP Servers, and Microservices with Faster Startup Time
-   Lightweight & Minimal Overhead

****Where other frameworks flare better:****

-   Wider developer community and skill-set support is required
-   Companies looking for wider adoption and avoidance of multiple frameworks

## #3 Quarkus (Container First, Cloud-Native, Faster Startup)

[Star](https://github.com/quarkusio/quarkus)

**Developed by:** [Red Hat (part of IBM)](https://www.redhat.com/en)  
**Link:** [quarkus.io](https://quarkus.io/)

Quarkus is a Kubernetes Native Java Stack tailored for OpenJDK HotSpot and GraalVM. It is designed to work with popular Java standards, frameworks, and libraries like Eclipse MicroProfile, Spring, and many more.

[![Quarkus Stack](https://vedcraft.com/images/2021/03/QuarkusStackV2-1024x207.png)](https://vedcraft.com/images/2021/03/QuarkusStackV2.png)

Source: [https://quarkus.io/blog/quarkus-for-spring-developers/](https://quarkus.io/blog/quarkus-for-spring-developers/)

**Key Features:**

-   Container First with fast boot time, incredibly low RSS memory, high-density memory utilization
-   Focused on Compile first approach using Native Image (GraalVM)
-   Imperative and reactive code – designed to seamlessly combine the familiar imperative style code and the non-blocking, reactive style when developing applications

**Cloud Service Provider Support:**

-   Deployment guide available for [Azure](https://quarkus.io/guides/deploying-to-azure-cloud), AWS, OpenShift, [Google Cloud](https://quarkus.io/guides/deploying-to-google-cloud) – essentially using container-based deployment model
-   Serverless deployment support with cloud-service provide native tool (e.g. using _gscloud_ & _gcloud_ CLI for [Google Cloud Functions](https://quarkus.io/guides/gcp-functions))

**Suitable for:**

-   Applications require faster boot time (native image), lightweight with low memory foot-print
-   Reactive application development

****Where other frameworks flare better:****

-   If preference is to use framework, which has been battle tested for production (as Quarkus is relatively – first released in 2019)
-   Wider developer community and skill-set support is required
-   Companies looking for wider adoption and avoidance of multiple frameworks

## #4 Helidon (Lightweight, Modern, Cloud-native, MicroProfile Compliant)

[Star](https://github.com/oracle/helidon)

**Developed by:** [Oracle](https://www.oracle.com/index.html)  
**Link:** [helidon.io](https://helidon.io/)

Helidon is described as a collection of libraries (than framework) for writing microservices powered by [Netty](https://netty.io/). It is simple, lightweight, functional, and reactive.

**Key Features:**

-   Supports two programming models: [Helidon MP](https://helidon.io/docs/v2/#/mp/introduction/01_introduction) (MicroProfile implementation, Declarative style with dependency injection) and [Helidon SE](https://helidon.io/docs/v2/#/se/introduction/01_introduction) (a small, functional style API)
-   Supports GraalVM to convert Helidon SE & MP applications to native executable code
-   Cloud-native support with modern architecture and so no need for any specific tooling or deployment model

**High-level Architecture**:

[![](https://vedcraft.com/images/2021/04/helidon-architecture.png)](https://vedcraft.com/images/2021/04/helidon-architecture.png)

Source: [https://medium.com/helidon/](https://medium.com/helidon/)

**Cloud Service Provider Support:**

-   Oracle Cloud published documentation and support for Helidon. [Click here](https://docs.oracle.com/en-us/iaas/developer-tutorials/tutorials/helidon-cloud-shell/01oci-helidon-shell-summary.htm) to read the deployment article.
-   As it is built using cloud-native principles, Kubernetes & Docker support available with a lightweight footprint and hence can easily be deployed to any Cloud.

**Suitable for:**

-   Architecture looking to support both functional & reactive: Helidon SE for minimal development experience with no annotations and no dependency injections, and Helidon MP for Jakarta EE microprofile development experience
-   Modern architecture with cloud-native, microservices support from initial architecture & design

****Where other frameworks flare better:****

-   Full-stack framework or capabilities required
-   Wider developer community and skill-set support is required
-   Companies looking for wider adoption and avoidance of multiple frameworks

## #5 Eclipse Vert.x (Polyglot, Event-driven, Reactive)

[Star](https://github.com/eclipse-vertx/vert.x)

**Developed by:** [Eclipse Foundation](https://www.eclipse.org/)  
**Link:** [vertx.io](https://vertx.io/)

Vert.x started with taking non-blocking, event-driven principles from Nodej.js and implemented it for Java applications. It is one of the most popular for building reactive and non-blocking java applications.

**Key Features:**

-   Polyglot (Java, Kotlin & Groovy) event-driven application development
-   Resource-efficient – handles more requests with less resources in comparison to other frameworks
-   Concurrent & asynchronous with flexible framework. Supports ecosystems such as Web APIs, data­bases, mes­sag­ing, event streams, cloud, reg­istries, se­cu­rity, and many more

**Cloud Service Provider Support:**

-   Tooling support available in the community for deployment. [Click here](https://github.com/msoute/vertx-deploy-tools) to see an example.
-   Standard packaging (zip or jar) will work with most of the cloud providers. See [How-To Guide](https://how-to.vertx.io/) (very useful):
    -   [AWS Lambda Deployment Example](https://how-to.vertx.io/aws-native-image-lambda-howto/)
    -   [Azure Deployment Screencast](https://vertx.io/blog/vertx-3-and-azure-cloud-platform-tutorial/)
    -   [Google Cloud Example](https://github.com/GoogleCloudPlatform/java-docs-samples/tree/master/appengine-java11/vertx-helloworld)

**Suitable for:**

-   Event-driven architecture & Reactive application with non-blocking
-   Concurrency (Actor-based) & Asynchronous I/O is required
-   Support for multi languages is required: Java, Kotlin, Groovy

****Where other frameworks flare better:****

-   Full-stack framework or capabilities required
-   Synchronous and RESTful application development

## Key Frameworks Summary

| Framework | Developed By | Key Proposition | GitHub Stars | Microprofile Compliant |
| --- | --- | --- | --- | --- |
| [Spring Boot](https://spring.io/projects/spring-boot) | [Pivotal (now VMWare)](https://www.vmware.com/) | Most widely used with production-grade java services with a strong development community | [Star](https://github.com/spring-projects/spring-boot) | No |
| [Micronaut](https://micronaut.io/) | [Object Computing](https://objectcomputing.com/) | A modern, JVM-based, full-stack framework for building modular, easily testable microservice and serverless applications | [Star](https://github.com/micronaut-projects/micronaut-core) | No |
| [Helidon](https://helidon.io/) | [Oracle](https://www.oracle.com/index.html) | A cloud-native, open‑source set of Java libraries for writing microservices that run on a fast web core powered by Netty | [Star](https://github.com/oracle/helidon) | Yes |
| [Quarkus](https://quarkus.io/) | [Red Hat (part of IBM)](https://www.redhat.com/en) | A Kubernetes Native Java stack tailored for OpenJDK HotSpot and GraalVM, crafted from the best of breed Java libraries and standards. | [Star](https://github.com/quarkusio/quarkus) | Yes |
| [Eclipse Vert.x](https://vertx.io/) | [Eclipse Foundation](https://www.eclipse.org/) | For building reactive applications on JVM | [Star](https://github.com/eclipse-vertx/vert.x) | No |
| [Dropwizard](https://www.dropwizard.io/) | Yammer | For developing ops-friendly, high-performance, RESTful web services | [Star](https://github.com/dropwizard/dropwizard) | No |
| [Open liberty](https://openliberty.io/) | [IBM](https://developer.ibm.com/blogs/) | A lightweight open framework for building fast and efficient cloud-native Java microservices | [Star](https://github.com/OpenLiberty/open-liberty) | Yes |
| [Armeria](https://armeria.dev/) | [LINE Corporation](https://engineering.linecorp.com/en/opensource/) | Go-to microservice framework leveraging your favorite technologies, including gRPC, Thrift, Kotlin, Retrofit, Reactive Streams, Spring Boot and Dropwizard | [Star](https://github.com/line/armeria) | No |
| [Lagom](https://www.lagomframework.com/) | [Lightbend](https://www.lightbend.com/) | Opinioned framework to decompose monolith and build, test, and deploy entire systems of Reactive microservices | [Star](https://github.com/lagom/lagom) | Yes |
| [Axon Framework](https://axoniq.io/product-overview/axon-framework) | [AxonIQ](https://axoniq.io/) | For event-driven microservices, based on CQRS, DDD | [Star](https://github.com/AxonFramework/AxonFramework) | No |
| [Kumuluz](https://ee.kumuluz.com/) | [Sunesis](https://sunesis.si/) | Lightweight framework with Java EE / Jakarta EE technologies and extend them with Node.js, Go and other languages | [Star](https://github.com/kumuluz/kumuluzee) | Yes |
| [Spark Java](https://sparkjava.com/) | Per Wendel | A micro framework for creating web applications in Kotlin and Java 8 with minimal effort | [Star](https://github.com/perwendel/spark) | No |
| [Payara Micro](https://www.payara.fish/learn/getting-started-with-payara-micro/) | [Payara](https://www.payara.fish/) | Lightweight middleware platform for containerized Jakarta EE (Java EE) microservices | [Star](https://github.com/payara/Payara) | Yes |
| [Play Framework](https://www.playframework.com/) | [Lightbend](https://www.lightbend.com/) | A lightweight, stateless, web-friendly architecture with Java & Scala support. Built on Akka, provides predictable and minimal resource consumption (CPU, memory, threads) for highly-scalable applications |  | No |

## Java Frameworks – Visual Representation

![Java Frameworks](https://vedcraft.com/images/2021/04/JavaFrameworks.jpg)

Image: Java Frameworks

## **References**

-   [Difference between Spring framework & Spring Boot](https://www.baeldung.com/spring-vs-spring-boot) – by Baeldung
-   [Difference between Reactive Programming & Reactive Systems](https://www.lightbend.com/white-papers-and-reports/reactive-programming-versus-reactive-systems#:~:text=Reactive%20Programming%20is%20a%20distinct,Systems%20at%20the%20implementation%20level.&text=Reactive%20Systems%20offers%20productivity%20for,other%20large%2Dscale%20distributed%20systems.) – by Lightbend
-   [InfoQ Article on Oracle Helidon](https://www.infoq.com/news/2018/10/oracle-introduces-helidon/)

## Related Articles

-   [Evolution of Microservices Frameworks in Java](https://vedcraft.com/architecture/evolution-of-microservices-frameworks-in-java/)
-   [AWS App Mesh vs. Istio: A Comparison of Service Mesh](https://vedcraft.com/architecture/aws-appmesh-vs-istio-comparison-of-service-mesh/)
-   [Top Ten Technology Trends For 2021](https://vedcraft.com/tech-trends/top-ten-technology-trends-for-2021/)
-   [Introduction to Software Architecture](https://vedcraft.com/architecture/introduction-to-software-architecture/)
