EVOLUTION OF MICROSERVICES FRAMEWORKS

In continuation to the previous article on Top Microservices Frameworks in Java, the evolution of Java frameworks with service-oriented architecture towards microservices architecture helps to understand the complete perspective.

microservices evolution in java

Evolution of Java & Services Frameworks with Industry Trends

  • Java EE launched EJB Specifications in 1999 to standardize enterprise services development to help developer’s focus on business logic encapsulation and underlying container (application server) handling non-functional aspects.
  • Spring framework (launched in 2003) challenged the idea of full compliance of Java EE specification to avoid a heavyweight application server-centric approach.
  • Service-oriented Architecture (SOA) as architectural style started getting momentum in early 2000 with multiple product offerings promoting the rise of middleware & SOA platforms such as Enterprise Service Bus (ESB). While these required steep learning curve, Java frameworks continued to rise because of either their simplicity & opensource nature or as technology emabler for these platforms.
  • Reactive programming with Java started with Play framework (by Lightbend) as one of the most widely known frameworks in 2007. Reactive programming introduced the idea of asynchronous programming with data streams. The communication mechanism for events, messages, calls, and even failure implements the observable pattern.
  • Functional programming (e.g. map, reduce, filter) has been historically less popular than imperative programming but since early 2000 started getting momentum from non-functional langugages. Java 8 support for functional programming with Lambda opened up avenues of applying functional programming with Java Frameworks.
  • Event-driven Architecture started getting momentum in between 2000-2010 with Event-driven service-oriented architecture (SOA), which helped building service offerings easier. This enabled rise of Axon framework, which enables building event-driven microservices.
  • Functional Reactive Programming (FRP) mixed best of both worlds from reactive & functional and though introduced in 1997, started getting momemtum in recent times. The ability to combine functions, operate, and transform the stream of events made concurrency handling better in Java. This enabled rise of framework Eclipse Vert.x, which makes building reactive applications & microservices in Java easier.
  • Microservices Architecture (term coined in 2005 in distributed computing fourm) started getting momentum since 2014 onwards and many frameworks have started being discussed to support this architectural style. Primiarily, lightweight with light resource footprint, cloud-native ready and nimbleness are key parameters frameworks started getting optimized for. Lagom, Helidon, Spring Boot, and Quarkus are the frameworks specifically designed to support Microservices Architecture (MSA) style.

Java Frameworks – Programming Style & Applicability

FrameworkDeveloped ByProgramming StyleMost suitable usage scenarios
Spring FrameworkPivotal (part of VMWare)Imperative Programming. Reactive style introduced recentlyEnterprise-grade, and industry-proven Java-based Microservices
MicronautObject ComputingImperative & Reactive ProgrammingReactive programming, Event-Driven/Message-Driven Applications, Command Line Applications, HTTP Servers, and Microservices with Faster Startup Time
QuarkusRed Hat (part of IBM)Imperative & Reactive ProgrammingApplications require faster boot time (native image), lightweight with low memory footprint. Reactive application development
HelidonOracleImperative & Reactive ProgrammingModern architecture with cloud-native, microservices support from initial architecture & design
Vert.xEclipse FoundationReactive ProgrammingEvent-driven architecture & Reactive application with non-blocking
Concurrency (Actor-based) & Asynchronous I/O is required
Support for multi-languages is required: Java, Kotlin, Groovy
DropwizardYammer (part of Microsoft)Imperative ProgrammingFor developing ops-friendly, high-performance, RESTful web services
Open libertyIBMImperative ProgrammingA lightweight open framework for building fast and efficient cloud-native Java microservices
ArmeriaLINE CorporationImperative & Reactive ProgrammingGo-to microservice framework leveraging your favorite technologies, including gRPC, Thrift, Kotlin, Retrofit, Reactive Streams, Spring Boot and Dropwizard
LagomLightbendReactive ProgrammingOpinioned framework to decompose monolith and build, test, and deploy entire systems of Reactive microservices
Axon FrameworkAxonIQEvent-driven ProgrammingFor event-driven microservices, based on CQRS, DDD
KumuluzSunesisImperative ProgrammingLightweight framework with Java EE / Jakarta EE technologies and extend them with Node.js, Go and other languages
Spark JavaPer WendelImperative ProgrammingA micro framework for creating web applications in Kotlin and Java 8 with minimal effort
Payara MicroPayaraImperative ProgrammingLightweight middleware platform for containerized Jakarta EE (Java EE) microservices
Play FrameworkLightbendReactive ProgrammingA 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

References

Leave a Comment