This repository is intended to be a compilation of presentations, examples, links, and other resources on asynchronous and reactive programming in Java.
This initiative is part of the final project of: Mรกster Cloud Apps. Desarrollo y despliegue de aplicaciones en la nube [ ๐ช๐ธ ]
The project also provides, as documentation, a presentation about asynchronous and reactive programming in Java. You can check the slides here:
Name | Version | Download | Updated at | Lang |
---|---|---|---|---|
Presentaciรณn: Programaciรณn asรญncrona y reactiva con Java |
1.0.0 |
2020-12-08 |
๐ช๐ธ |
|
Slides: Asynchronous and reactive programming with Java |
0.0.3 |
2020-11-18 |
๐ฌ๐ง |
On the other hand, the academic resources delivered as part of the completion of the project are also included:
Name | Version | Download | Updated at | Lang |
---|---|---|---|---|
Memoria: Programaciรณn asรญncrona y reactiva con Java |
1.0.0 |
2020-12-14 |
๐ช๐ธ |
|
Presentaciรณn: Programaciรณn asรญncrona y reactiva con Java |
1.0.0 |
2020-12-14 |
๐ช๐ธ |
This section lists a series of examples that are intended to guide the content of the presentation.
Each of the mentioned examples are based on the latest version of Java (15+) and Spring Boot (2.4+).
Maven (3.6+) or Gradle (6+) will be used as build/dependency management tool. In addition, some examples will use the Lombok library to generate code through annotations
-
Example 00. Reactor operators: Simple project to practice with Project Reactor main operators. The purpose of the example is to show the behavior of Mono, Flux and their possibilities
-
Example 01. Basic comparison: Basic CRUD API (GET, POST, PUT, DELETE) in two flavors, Spring MVC and Spring WebFlux
-
Example 02. Using Spring WebClient: Basic API to retrieve information from remote web services using the reactive WebClient
-
Example 03. Gateway!: Gateway service to route requests to worker services to practice with Spring Cloud Gateway project
-
Example 04. Reactive DB access with R2DBC: Simple API with an internal relational PostgreSQL repository. R2DBC provides reactive non-blocking APIs to relational databases
-
Example 05. Protocols. RSocket: A simple project to know thow the reactive binary protocol RSocket works. The example includes two small modules that communicate with each other, exploring the different possibilities that RSocket offers to us
-
Example 06. Project Loom: Example for a first contact with Project Loom, its implementation and how to start with Virtual Threads
It seems obvious but the best place to find good information about the Spring ecosystem is its official documentation:
Name | Author | Year | Info |
---|---|---|---|
Rossen Stoyanchev |
2018 |
๐ฌ๐ง ๐น |
|
Paul Harris |
2019 |
๐ฌ๐ง ๐น |
|
Nicholas Frankel |
2020 |
๐ฌ๐ง ๐ |
|
Doโs and Donโts: Avoiding First-Time Reactive Programmer Mines |
Sergei Egorov |
2019 |
๐ฌ๐ง ๐น |
Benefits of reactive programming with Reactor and Spring Boot 2 |
Violeta Georgieva |
2019 |
๐ฌ๐ง ๐น |
Phil Clay |
2019 |
๐ฌ๐ง ๐น |
|
Oleh Dokuka |
2019 |
๐ฌ๐ง ๐น |
|
Mark Heckler |
2018 |
๐ฌ๐ง ๐น |
|
Josh Long |
2020 |
๐ฌ๐ง ๐น |
|
Simon Baslรฉ |
2018 |
๐ฌ๐ง ๐น |
|
Simon Baslรฉ |
2019 |
๐ฌ๐ง ๐ |
|
Simon Baslรฉ |
2019 |
๐ฌ๐ง ๐ |
|
Simon Baslรฉ |
2019 |
๐ฌ๐ง ๐ |
|
Project Reactor Docs |
- |
๐ฌ๐ง ๐ |
Name | Author | Year | Ecosystem | Info |
---|---|---|---|---|
- |
- |
Quarkus |
๐ฌ๐ง ๐ |
|
Clement Escoffier |
2020 |
Quarkus |
๐ฌ๐ง ๐น |
|
- |
- |
Micronaut |
๐ฌ๐ง ๐ |
|
- |
- |
Micronaut |
๐ฌ๐ง ๐ |
|
Ivรกn Lรณpez |
2019 |
Micronaut |
๐ช๐ธ ๐น |
|
Piotr Minkowski |
2019 |
Micronaut |
๐ฌ๐ง ๐ |
First and foremost: What is Project Loom?
According to OpenJDK Wiki:
Project Loom is to intended to explore, incubate and deliver Java VM features and APIs built on top of them for the purpose of supporting easy-to-use, high-throughput lightweight concurrency and new programming models on the Java platform. This is accomplished by the addition of the following constructs:
-
Virtual threads
-
Delimited continuations
-
Tail-call elimination
Name | Author | Year | Info |
---|---|---|---|
- |
- |
๐ฌ๐ง |
|
Project Loom: Modern Scalable Concurrency for the Java Platform |
Ron Pressler |
2020 |
๐ฌ๐ง ๐น |
Ron Pressler |
2020 |
๐ฌ๐ง ๐ |
|
Nicholas Frankel |
2020 |
๐ฌ๐ง ๐ |
|
Arnaud Bos |
2019 |
๐ฌ๐ง ๐ |
|
Arnaud Bos |
2019 |
๐ฌ๐ง ๐ |
|
Arnaud Bos |
2019 |
๐ฌ๐ง ๐ |
|
Arnaud Bos |
2019 |
๐ฌ๐ง ๐ |
|
Arnaud Bos |
2020 |
๐ฌ๐ง ๐ |
|
Mark Paluch |
2020 |
๐ฌ๐ง ๐ |
|
Cay Horstmann |
2020 |
๐ฌ๐ง ๐ |
Name | Description |
---|---|
VisualVM is a visual tool integrating commandline JDK tools and lightweight profiling capabilities. Designed for both development and production time use |
|
Mission Control is an open source production time profiling and diagnostics tool for Java |
|
Awaitility is a DSL that allows you to express expectations of an asynchronous system in a concise and easy to read manner |
|
Java agent to detect blocking calls from non-blocking threads |
|
A set of tools to improve Project Reactorโs debugging and development experience. Starting from Reactor 3.3.0.M2, reactor-tools is now moved to reactor-core |
|
Reactor-adapter and reactor-extras utils |
|
A webapp for experimenting with diagrams of Rx Observables, for learning purposes |
Name | Author | Year | Lang |
---|---|---|---|
Roland Kuhn, Jamie Allen |
2014 |
๐ฌ๐ง |
|
Sean Walsh, Duncan K. DeVore, Brian Hanafee |
2018 |
๐ฌ๐ง |
|
Tomasz Nurkiewicz, Ben Christensen |
2016 |
๐ฌ๐ง |
|
Greg L. Turnquist |
2020 |
๐ฌ๐ง |
|
Josh Long |
2020 |
๐ฌ๐ง |
|
Spring Boot: Up and Running: Building Cloud Native Java and Kotlin Applications |
Mark Heckler |
2021 |
๐ฌ๐ง |
Name | Author | Platform | Lang |
---|---|---|---|
Jakob Jenkov |
Youtube |
๐ฌ๐ง |
|
Efficient Java Multithreading and Concurrency with Executors |
Arun Kumar |
Udemy |
๐ฌ๐ง |
Josh Long |
Oreilly |
๐ฌ๐ง |
-
Simon Baslรฉ, @simonbasle
-
Jonas Bonรฉr, @jboner
-
Arnaud Bos, @arnaud_bos
-
Oleh Dokuka, @OlehDokuka
-
Sergei Egorov, @bsideup
-
Clement Escoffier, @clementplop
-
Nicholas Frankel, @nicolas_frankel
-
Violeta Georgieva, @violeta_g_g
-
Mark Heckler, @mkheck
-
David Karnok, @akarnokd
-
Josh Long, @starbuxman
-
Audrey Neveu, @Audrey_Neveu
-
Mark Paluch, @mp911de
-
Ron Pressler, @pressron
-
Rossen Stoyanchev, @rstoya05
-
Dave Syer, @david_syer
-
Ben Wilcock, @benbravo73
-
Akka Team, @akkateam
-
Project Reactor, @ProjectReactor
-
R2DBC, @r2dbc
-
RSocket, @RSocketIO
-
RxJava, @RxJava
-
Eclipse Vert.x, @vertx_project
-
Coffee-love icon by The Noun Project โ โค๏ธ