SlideShare a Scribd company logo
An introduction to reactive
applications, Reactive Streams, and
options for the JVM
Steve Pember
CTO, ThirdChannel
Software Architecture Con, 2016
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
Agenda
• The Problem
• To Be Reactive
• What are Reactive Streams?
• Rx in Depth
• An Overview of JVM Options
• Demo Time!
THIRDCHANNEL @svpember
The Problem: The Need to go
Reactive
Really, it’s Two problems
THIRDCHANNEL @svpember
1) Performance Demands
Are Always Increasing
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
We Use Technology from the
Beginning of Web Development
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
Things Slow Down
Users get
angry
quickly
–Johnny Appleseed
“Type a quote here.”
Let’s Keep Our Users Happy
And Engaged
THIRDCHANNEL @svpember
2) The Rise of Microservices
Multiple
Integration
Points
It’s Not Only Users That Use Up
Resources
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
So… what to do?
Embrace
Reactive
Applications
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
Reactive Applications
• Responsive
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
Reactive Applications
• Responsive
• Resilient
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
Embrace Failure
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
Independent Things Fail
Independently
THIRDCHANNEL @svpember
Reactive Applications
• Responsive
• Resilient
• Elastic (Scalable)
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
THIRDCHANNEL @svpember
Reactive Applications
• Responsive
• Resilient
• Elastic (Scalable)
• Asynchronous / Message Driven
Free up resources
with Async
Operations & Non-
Blocking I/O
Now do all of this at every level
of your app…
All the Way
Down
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
• User Interface: What the user interacts with (JS, iOS, Android)
• Inter-Service: Distributed application topology + service
communication design (e.g. Kafka for async messaging)
• Intra-Service: The code! (well designed with bounded contexts)
• Framework: Structures your code + provides external
communication, DI, etc
• Execution Environment: Broad area, but includes how your
code is executed (e.g. in JVM: Tomcat, Jetty, Netty)
THIRDCHANNEL @svpember
Mostly talk about this…
We’ll talk a little about this…
And a little more about this
There’s not enough time!
Writing Reactive Code is the
best method of introduction…
Async is Hard for Humans
One Excellent Tool is (are?)
Reactive Streams
But Wait…
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
THIRDCHANNEL @svpember
Agenda
• The Problem
• What are Reactive Streams?
“Reactive Streams”, “Reactive
Extensions”, or “Rx”
Collections + Time
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
Single abstraction over data
from many sources
THIRDCHANNEL @svpember
Observer Pattern
Push (not Pull)
based Iterators
Stream-Based
Functional Programming
Imperative
vs
Stream
Streams with Extensions for
Reactive Programming
Rx makes Async behavior easy!
(Reactive Pull) Backpressure
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
THIRDCHANNEL @svpember
What is Rx?
• Collections + Time
• A Single Abstraction over data from different sources
• Observer Pattern with Push-based iterators
• Stream Based Functional Programming
• … with Extensions for Reactive Programming
• Async is easy
• Backpressure
Rx Simplifies Complex Work
…Once you
understand,
of course…
THIRDCHANNEL @svpember
Story Time!
THIRDCHANNEL @svpember
Story Time
THIRDCHANNEL @svpember
Story Time
THIRDCHANNEL @svpember
Story Time
THIRDCHANNEL @svpember
Story Time
2012 - MS Open Source’s RX!
THIRDCHANNEL @svpember
Story Time
2012 - MS Open Source’s RX!
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
THIRDCHANNEL @svpember
Agenda
• The Problem
• What are Reactive Streams?
• Rx in depth
THIRDCHANNEL @svpember
Key Terms:
An Observable is like Promise ++
(Observable: aka ‘Publisher’)
Observables are most powerful
when wrapping external input
An Observable pushes items to
Subscribers
Subscribers receive and
operate on emitted data
Observables and Subscribers
operate on a Scheduler
The following
examples use
rxJava 1.x
Also, try out rxGroovy
THIRDCHANNEL @svpember
Groovy
• Dynamic Language for the JVM
• Less Verbose (Reduce Java Boilerplate)
• Ruby/Python - esque Collections
• Run Time Meta Programming
• Optionally Typed
• AST Transformations
• Powerful Annotations
• Multi - Inheritance via Traits and @DelegatesTo
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
Basic Usage
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
Thankfully, there are shortcuts
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
Streams are Composable
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
You can get much power from 5 functions
• filter
• map
• reduce
• groupBy
• flatMap
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
First Mental Leap: An
Observable of Observables
–Johnny Appleseed
“Type a quote here.”
THIRDCHANNEL @svpember
Let’s get a
little crazy
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
Hot vs Cold
Cold Observable: finite data, on
demand
Hot Observable: infinite data, as
it’s ready
Cold Observable: only starts
emitting data on .subscribe ()
Hot Observable: emits data
whenever it’s ready
THIRDCHANNEL @svpember
Asynchronous Streams
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
BackPressure
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
Can only Mitigate Hot Streams
• throttle
• sample
• window
• buffer
• drop
THIRDCHANNEL @svpember
Stream Interaction
Don’t Unsubscribe from Observables
Programmatically complete them
when another Observable fires
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
THIRDCHANNEL @svpember
AutoComplete Requirements
• Wait 250 ms between keypresses before querying
• If no keys are pressed, no query
• Successful queries should render movies
• Any new queries should kill in-flight queries
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
Pretty
Great,
But what’s
going on?
keyPress stream creates a sub-
stream which is reacting to
subsequent data from the
parent
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
Questions?
Ok, what about 2.0?
API hasn’t changed much
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
THIRDCHANNEL @svpember
RxJava 2.0
• Completely rebuilt for Reactive-Streams.org 1.0 spec
• Decreased resource usage
• No nulls allowed
• New Publisher types
THIRDCHANNEL @svpember
Publishers
• Observable - classic. In 2.0: no Backpressure
• Flowable - new to 2.0. Use this for Backpressure
• Single - only one item will be emitted or signal error
• Completable - only signal success or error
• Maybe - new to 2.0: one item emitted, signal success, or signal
error (think, Promise)
THIRDCHANNEL @svpember
Agenda
• The Problem
• What are Reactive Streams?
• Rx In Depth
• An Overview of JVM options
THIRDCHANNEL @svpember
Intra-Service Options
RxJava,
Obviously
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
THIRDCHANNEL @svpember
ReactiveX JVM Family
• rxJava
• rxJavaFX
• rxGroovy
• rxClojure
• rxKotlin
• rxScala
• And many more (beyond JVM): https://github.com/ReactiveX
THIRDCHANNEL @svpember
Akka & Akka Streams
• Library
• Definition of Reactive System
• Created by LightBend
• Actor-Based Concurrency
• Implemented Streams on Top of Actor Model
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
–Johnny Appleseed
“Type a quote here.”
–Johnny Appleseed
“Type a quote here.”
THIRDCHANNEL @svpember
• Pivotal Project
• Library
• Reactive Streams
• Built on LMAX Ring Buffer / Disrupter
• Multiple libraries to extend Disruptor in multiple ways
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
Java 9 will have Flow
THIRDCHANNEL @svpember
Framework Level
THIRDCHANNEL @svpember
• High Performance Web Framework
• Non-Opinionated
• Non-Blocking Network Stack
• Built on Reactive Streams, Netty, Java 8, Guice
• Deterministic Asynchronous Execution
Take a Look at Ratpack
http://www.infoq.com/presentations/ratpack-2015
Includes rxRatpack module, but
we’ll talk about that later
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
… specifically, Spring 5
THIRDCHANNEL @svpember
Spring Web Reactive vs
Spring Web MVC
THIRDCHANNEL @svpember
Spring 5
• spring-web-reactive instead of spring-mvc
• Same @Controller programming model
• Different underlying API
• Based on Project Reactor
• Can run within Tomcat, Jetty, or Netty (e.g. can fallback to use
servlets)
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
THIRDCHANNEL @svpember
Play Framework
• Part of the Lightbend family
• Built on Akka and Netty
• Async I/O
• Lightweight and stateless
• Encourages RESTful design
• Focus on JSON
An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)
THIRDCHANNEL @svpember
Vert.X
• Event-driven & Non blocking
• lightweight, non-opinionated, and modular
• integrates with rxJava
• support for additional languages (like JS and Ruby)
• Can be used as a library embedded in an existing app
THIRDCHANNEL @svpember
Demo Time
THIRDCHANNEL @svpember
Any Questions?
Thank You!
@svpember
spember@gmail.com
THIRDCHANNEL @svpember
THIRDCHANNEL @svpember
More Information
• Reactive Groovy & Ratpack Demo: https://github.com/spember/reactive-movie-demo
• Jafar Husain: RxJS: https://www.youtube.com/watch?v=XRYN2xt11Ek
• Reactive Streams Spec: http://www.reactive-streams.org/
• Reactive Manifesto: http://www.reactivemanifesto.org/
• Akka: http://akka.io/
• rxJava / ReactiveX libraries: https://github.com/ReactiveX
• Ratpack: http://ratpack.io/
• Reactor: https://github.com/reactor/reactor
• The Introduction to Reactive Programming you’ve been missing: https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
• Martin Fowler: Stream / Pipeline programming: http://martinfowler.com/articles/refactoring-pipelines.html
• Or Just on Groovy (Groovy the Awesome Parts): http://www.slideshare.net/SpringCentral/groovy-the-awesome-parts
• Ratpack Web Presentation: http://www.infoq.com/presentations/ratpack-2015
• Advanced RxJava Blog: http://akarnokd.blogspot.com/
• Martin Fowler LMAX breakdown: http://martinfowler.com/articles/lmax.html
• Reactive Web Apps with Spring 5: https://www.youtube.com/watch?v=rdgJ8fOxJhc&feature=youtu.be
Images
• Empty Pool: http://www.wtok.com/home/headlines/Water-Problems-205987121.html
• Juggling: https://en.wikipedia.org/wiki/Juggling
• Directing Traffic: https://www.flickr.com/photos/tracilawson/3474012583L
• LMAX Disrupter: http://martinfowler.com/articles/lmax.html
• Mailman: thebrandtstandard.com/2013/02/09/u-s-post-office-to-end-saturday-letter-delivery-this-summer/
• Actors Diagram: https://blog.codecentric.de/en/2015/08/introduction-to-akka-actors/
• Cheetah: www.livescience.com/21944-usain-bolt-vs-cheetah-animal-olympics.html
• Dominoes: https://www.flickr.com/photos/louish/5611657857/sizes/l/in/photostream/
• Spartans: www.300themovie.com/
• Stampeding Buffalo: news.sd.gov/newsitem.aspx?id=15164
• Turtles (Cosmic): http://synchronicity313.deviantart.com/art/Turtles-All-The-Way-Down-68160813
• XkCD turtles: https://xkcd.com/1416/
• Simpsons “Old Coot”: http://simpsons.wikia.com/wiki/Category:Grandparents
• Meditation: http://i.huffpost.com/gen/1405484/images/o-MEDITATION-facebook.jpg
• Death Star Architectures: http://www.slideshare.net/adriancockcroft/monitorama-please-no-more

More Related Content

PDF
Reactive Streams and the Wide World of Groovy
PDF
Reactive Streams and the Wide World of Groovy
PDF
An Introduction to Reactive Application, Reactive Streams, and options for JVM
PPTX
Groovy Options for Reactive Applications - Greach 2015
PPTX
Springone2gx 2015 Reactive Options for Groovy
PPTX
Ocassionally connected devices spark final
PDF
A year with event sourcing and CQRS
PPTX
Deploy Faster Without Failing Faster - Metrics-Driven - Dynatrace User Groups...
Reactive Streams and the Wide World of Groovy
Reactive Streams and the Wide World of Groovy
An Introduction to Reactive Application, Reactive Streams, and options for JVM
Groovy Options for Reactive Applications - Greach 2015
Springone2gx 2015 Reactive Options for Groovy
Ocassionally connected devices spark final
A year with event sourcing and CQRS
Deploy Faster Without Failing Faster - Metrics-Driven - Dynatrace User Groups...

What's hot (20)

PDF
Patterns of the Lambda Architecture -- 2015 April - Hadoop Summit, Europe
PPTX
Gr8conf US 2015: Reactive Options for Groovy
PPTX
Sydney Continuous Delivery Meetup May 2014
PPTX
London WebPerf Meetup: End-To-End Performance Problems
PPTX
Top .NET, Java & Web Performance Mistakes - Meetup Jan 2015
PPTX
(R)evolutionize APM
PDF
The Tools to get you started with React Native
PDF
Scaling the guardian
PPTX
Continuous database deployment
KEY
The guardian and app engine
PDF
Serverless Application Model - Executing Lambdas Locally
KEY
Scaling small apps
PPTX
Performance: Key Elements to Consider in the Cloud - RightScale Compute 2013
PPTX
Strong Consistency in Databases. What does it actually guarantee? - Andy Goo...
PPTX
Cloud fail scaling to infinity but not beyond
PPTX
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
PPTX
Developer day - AWS: Fast Environments = Fast Deployments
PPTX
Accelerating Innovation and Time-to-Market @ Camp Devops Houston 2015
PDF
Speed up your Serverless development flow
PPTX
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...
Patterns of the Lambda Architecture -- 2015 April - Hadoop Summit, Europe
Gr8conf US 2015: Reactive Options for Groovy
Sydney Continuous Delivery Meetup May 2014
London WebPerf Meetup: End-To-End Performance Problems
Top .NET, Java & Web Performance Mistakes - Meetup Jan 2015
(R)evolutionize APM
The Tools to get you started with React Native
Scaling the guardian
Continuous database deployment
The guardian and app engine
Serverless Application Model - Executing Lambdas Locally
Scaling small apps
Performance: Key Elements to Consider in the Cloud - RightScale Compute 2013
Strong Consistency in Databases. What does it actually guarantee? - Andy Goo...
Cloud fail scaling to infinity but not beyond
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
Developer day - AWS: Fast Environments = Fast Deployments
Accelerating Innovation and Time-to-Market @ Camp Devops Houston 2015
Speed up your Serverless development flow
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...
Ad

Viewers also liked (20)

PDF
Introduction to Reactive Streams and Reactor 2.5
PDF
Effective programming in Java - Kronospan Job Fair 2016
PPTX
Software Development: Trends and Perspectives
PDF
TDC2016SP - JooQ: SQL orientado a objetos.
PDF
openEHR: NHS Code4Health RippleOSI and EtherCis
PPSX
Introduction to Microsoft Bot Framework
PPTX
Emerging trends in software development: The next generation of storage
PDF
jOOQ at Topconf 2013
PPT
Aspect Oriented Software Development
PDF
Aspect oriented software development
PDF
ORM is an Offensive Anti-Pattern
PDF
An Introduction to jOOQ
PDF
New Trends in software development
PDF
Reactive Streams: Handling Data-Flow the Reactive Way
PDF
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
PDF
Reactive Web Applications
PDF
Embracing Reactive Streams with Java 9 and Spring 5
PDF
openEHR Technical Workshop Intro MIE 2016
PDF
Reactor 3.0, a reactive foundation for java 8 and Spring
PDF
Reactive Programming in Spring 5
Introduction to Reactive Streams and Reactor 2.5
Effective programming in Java - Kronospan Job Fair 2016
Software Development: Trends and Perspectives
TDC2016SP - JooQ: SQL orientado a objetos.
openEHR: NHS Code4Health RippleOSI and EtherCis
Introduction to Microsoft Bot Framework
Emerging trends in software development: The next generation of storage
jOOQ at Topconf 2013
Aspect Oriented Software Development
Aspect oriented software development
ORM is an Offensive Anti-Pattern
An Introduction to jOOQ
New Trends in software development
Reactive Streams: Handling Data-Flow the Reactive Way
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
Reactive Web Applications
Embracing Reactive Streams with Java 9 and Spring 5
openEHR Technical Workshop Intro MIE 2016
Reactor 3.0, a reactive foundation for java 8 and Spring
Reactive Programming in Spring 5
Ad

Similar to An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016) (20)

PDF
Reactive All the Way Down the Stack
PDF
Frontend as a first class citizen
PDF
Surviving in a Microservices environment -abridged
PPTX
RxJS and Reactive Programming - Modern Web UI - May 2015
PDF
Reactive Applications in Java
PPTX
Reactive Web Development with Spring Boot 2
KEY
Distributed app development with nodejs and zeromq
PPTX
Relay: Seamless Syncing for React (VanJS)
PDF
Adding GraphQL to your existing architecture
PDF
Meteor Revolution: From DDP to Blaze Reactive Rendering
PPSX
React introduction
PPTX
Untangling spring week11
PDF
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...
PPTX
Scaling Your Architecture for the Long Term
PDF
Streaming to a new Jakarta EE
PDF
Streaming to a New Jakarta EE
PDF
Springone2gx 2014 Reactive Streams and Reactor
PPTX
The challenges of live events scalability
PDF
Patterns of the Lambda Architecture -- 2015 April -- Hadoop Summit, Europe
PDF
How to debug slow lambda response times
Reactive All the Way Down the Stack
Frontend as a first class citizen
Surviving in a Microservices environment -abridged
RxJS and Reactive Programming - Modern Web UI - May 2015
Reactive Applications in Java
Reactive Web Development with Spring Boot 2
Distributed app development with nodejs and zeromq
Relay: Seamless Syncing for React (VanJS)
Adding GraphQL to your existing architecture
Meteor Revolution: From DDP to Blaze Reactive Rendering
React introduction
Untangling spring week11
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...
Scaling Your Architecture for the Long Term
Streaming to a new Jakarta EE
Streaming to a New Jakarta EE
Springone2gx 2014 Reactive Streams and Reactor
The challenges of live events scalability
Patterns of the Lambda Architecture -- 2015 April -- Hadoop Summit, Europe
How to debug slow lambda response times

More from Steve Pember (19)

PPTX
Spring I_O 2024 - Flexible Spring with Event Sourcing.pptx
PDF
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
PDF
SACon 2019 - Surviving in a Microservices Environment
PDF
Gradle Show and Tell
PDF
Greach 2018: Surviving Microservices
PDF
Event storage in a distributed system
PDF
Harnessing Spark and Cassandra with Groovy
PDF
Surviving in a microservices environment
PDF
Surviving in a Microservices Environment
PPTX
Richer Data History with Event Sourcing (SpringOne 2GX 2015
PPTX
Gr8conf US 2015 - Intro to Event Sourcing with Groovy
PDF
Advanced Microservices - Greach 2015
PPTX
Richer data-history-event-sourcing
PPTX
Managing a Microservices Development Team (And advanced Microservice concerns)
PDF
Reactive Microservice Architecture with Groovy and Grails
PPT
Why Reactive Architecture Will Take Over The World (and why we should be wary...
PPT
Richer Data History in Groovy with Event Sourcing
PPT
Distributed Reactive Architecture: Extending SOA with Events
PDF
Message Oriented Architecture - Gr8conf US 2013
Spring I_O 2024 - Flexible Spring with Event Sourcing.pptx
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
SACon 2019 - Surviving in a Microservices Environment
Gradle Show and Tell
Greach 2018: Surviving Microservices
Event storage in a distributed system
Harnessing Spark and Cassandra with Groovy
Surviving in a microservices environment
Surviving in a Microservices Environment
Richer Data History with Event Sourcing (SpringOne 2GX 2015
Gr8conf US 2015 - Intro to Event Sourcing with Groovy
Advanced Microservices - Greach 2015
Richer data-history-event-sourcing
Managing a Microservices Development Team (And advanced Microservice concerns)
Reactive Microservice Architecture with Groovy and Grails
Why Reactive Architecture Will Take Over The World (and why we should be wary...
Richer Data History in Groovy with Event Sourcing
Distributed Reactive Architecture: Extending SOA with Events
Message Oriented Architecture - Gr8conf US 2013

Recently uploaded (20)

PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
A REACT POMODORO TIMER WEB APPLICATION.pdf
PDF
Comprehensive Salesforce Implementation Services.pdf
PPTX
Online Work Permit System for Fast Permit Processing
PDF
Become an Agentblazer Champion Challenge
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Become an Agentblazer Champion Challenge Kickoff
PPTX
How a Careem Clone App Allows You to Compete with Large Mobility Brands
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
Benefits of DCCM for Genesys Contact Center
PPTX
ai tools demonstartion for schools and inter college
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
top salesforce developer skills in 2025.pdf
PPTX
What to Capture When It Breaks: 16 Artifacts That Reveal Root Causes
DOCX
The Five Best AI Cover Tools in 2025.docx
PDF
System and Network Administration Chapter 2
PDF
Perfecting Gamer’s Experiences with Performance Testing for Gaming Applicatio...
PDF
Forouzan Book Information Security Chaper - 1
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
How to Choose the Most Effective Social Media Agency in Bangalore.pdf
How to Migrate SBCGlobal Email to Yahoo Easily
A REACT POMODORO TIMER WEB APPLICATION.pdf
Comprehensive Salesforce Implementation Services.pdf
Online Work Permit System for Fast Permit Processing
Become an Agentblazer Champion Challenge
PTS Company Brochure 2025 (1).pdf.......
Become an Agentblazer Champion Challenge Kickoff
How a Careem Clone App Allows You to Compete with Large Mobility Brands
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Benefits of DCCM for Genesys Contact Center
ai tools demonstartion for schools and inter college
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
top salesforce developer skills in 2025.pdf
What to Capture When It Breaks: 16 Artifacts That Reveal Root Causes
The Five Best AI Cover Tools in 2025.docx
System and Network Administration Chapter 2
Perfecting Gamer’s Experiences with Performance Testing for Gaming Applicatio...
Forouzan Book Information Security Chaper - 1
Upgrade and Innovation Strategies for SAP ERP Customers
How to Choose the Most Effective Social Media Agency in Bangalore.pdf

An introduction to Reactive applications, Reactive Streams, and options for the JVM (SACon SF 2016)