SlideShare a Scribd company logo
T O M A S Z K O W A L C Z E W S K I
Agenda
• A little bit of history
• Challenges before us
• A few words about API
• Code!
Reactive, asynchronous
• People have been doing it for years
• (Re)invented time and again by big companies
and/or in high performance products
–Donald Knuth
“The idea that people knew a thing or two in the
70s is strange to a lot of young programmers”
Reactive, asynchronous
• People have been doing it for years
• (Re)invented time and again by big companies
and/or in high performance products
• Now every company may need to operate at that
scale
• As users demand more and faster we need tools to
do it right
It started in Microsoft
Brought to you by Erik Meijer & co.
Synchronous pull communication
Client Server
Request
Response
Processing
Network latency
Asynchronous push
Processing
Network latency
Asynchronous push
t
subscribe
onNext*
onCompleted | onError
unsubscribe
Synchronous design
List<String> tweets = client.getNextTweets();
List<Tweet> validTweets = Lists.newArrayList();
for (String jsonTweet : tweets) {

Tweet tweet = gson.fromJson(jsonTweet, Tweet.class);
Image image;
image = download(tweet.getUser().getProfileImage());
Tweet.setImage(image);


if (tweet.isValidTweet()) {
validTweets.add(tweet);
}
}
Decomposing individual operations
List<String> tweets = client.getNextTweets();
List<Tweet> validTweets = Lists.newArrayList();
for (String jsonTweet : tweets) {

Tweet tweet = gson.fromJson(jsonTweet, Tweet.class);
Image image;
image = download(tweet.getUser().getProfileImage());
Tweet.setImage(image);


if (tweet.isValidTweet()) {
validTweets.add(tweet);
}
}
Decomposing individual operations
List<String> tweets = client.getNextTweets();
List<Tweet> validTweets = Lists.newArrayList();
for (String jsonTweet : tweets) {

Tweet tweet = gson.fromJson(jsonTweet, Tweet.class);
Image image;
image = download(tweet.getUser().getProfileImage());
Tweet.setImage(image);


if (tweet.isValidTweet()) {
validTweets.add(tweet);
}
}
Decomposing individual operations
List<String> tweets = client.getNextTweets();
List<Tweet> validTweets = Lists.newArrayList();
for (String jsonTweet : tweets) {

Tweet tweet = gson.fromJson(jsonTweet, Tweet.class);
Image image;
image = download(tweet.getUser().getProfileImage());
Tweet.setImage(image);


if (tweet.isValidTweet()) {
validTweets.add(tweet);
}
}
Decomposing individual operations
List<String> tweets = client.getNextTweets();
List<Tweet> validTweets = Lists.newArrayList();
for (String jsonTweet : tweets) {

Tweet tweet = gson.fromJson(jsonTweet, Tweet.class);
Image image;
image = download(tweet.getUser().getProfileImage());
Tweet.setImage(image);


if (tweet.isValidTweet()) {
validTweets.add(tweet);
}
}
What is missing?
List<String> tweets = client.getNextTweets();
List<Tweet> validTweets = Lists.newArrayList();
for (String jsonTweet : tweets) {

Tweet tweet = gson.fromJson(jsonTweet, Tweet.class);
Image image;
image = download(tweet.getUser().getProfileImage());
Tweet.setImage(image);


if (tweet.isValidTweet()) {
validTweets.add(tweet);
}
}
Error
handling
Timeouts
Monitoring
Logging
Back pressure
Parallelism
Deep dive reactive java (DevoxxPl)
Available in a language or

framework near you
source: flatmapthatshit.com
Credits
• Cat picture taken from http://www.teckler.com/en/
Rapunzel

More Related Content

PDF
Introduction to Git Version Control System
PPTX
Reactive Java (33rd Degree)
PDF
AWS Java SDK @ scale
PPTX
Measure to fail
PPTX
Pekerja kreatif di industri kreatif
PDF
Umowa najmu
PPTX
Ingles
PDF
Chartschool1 0 manual
Introduction to Git Version Control System
Reactive Java (33rd Degree)
AWS Java SDK @ scale
Measure to fail
Pekerja kreatif di industri kreatif
Umowa najmu
Ingles
Chartschool1 0 manual

Viewers also liked (10)

PPTX
Feria de reciclaje
PDF
Fluidisasi
PPT
Duck dynasty - My family
PDF
히포차트4.1업데이트
PPTX
Learning@Work Product Tour
PPT
Mano miestas mycka
PDF
Underneath the Roses Where I Remembered Everything by Molly Rose
PPTX
PPTX
Power point group project luis alvarez
PDF
Presentazione openBilanci
Feria de reciclaje
Fluidisasi
Duck dynasty - My family
히포차트4.1업데이트
Learning@Work Product Tour
Mano miestas mycka
Underneath the Roses Where I Remembered Everything by Molly Rose
Power point group project luis alvarez
Presentazione openBilanci
Ad

Similar to Deep dive reactive java (DevoxxPl) (20)

PDF
JDD2015: Panta rhei or Reactive Java in practice - Tomasz Kowalczewski
PDF
.NET Fest 2018. Антон Молдован. One year of using F# in production at SBTech
KEY
Re-architecting the designer-developer workflow
PDF
Adopting F# at SBTech
PDF
PyTorch 튜토리얼 (Touch to PyTorch)
PPTX
Tutorial: Building Your First App with MongoDB Stitch
PDF
Moderne App-Architektur mit Dagger2 und RxJava
PPTX
How to perform debounce in react
PDF
Tsar tech talk
PDF
TSAR (TimeSeries AggregatoR) Tech Talk
PDF
Who needs MVVM? Architecture components & MVP - Timor Surkis, Colu
PPTX
Building Your First App with MongoDB Stitch
PDF
Unleashing twitter data for fun and insight
PDF
Unleashing Twitter Data for Fun and Insight
PPTX
Using Graph Databases in Real-Time to Solve Resource Authorization at Telenor...
PDF
Fast REST APIs Development with MongoDB
PPTX
react-suspense-for-people-in-hurry
PPTX
Introduction to Reactive Extensions (Rx)
PDF
Server side rendering with React and Symfony
PDF
Data Platform at Twitter: Enabling Real-time & Batch Analytics at Scale
JDD2015: Panta rhei or Reactive Java in practice - Tomasz Kowalczewski
.NET Fest 2018. Антон Молдован. One year of using F# in production at SBTech
Re-architecting the designer-developer workflow
Adopting F# at SBTech
PyTorch 튜토리얼 (Touch to PyTorch)
Tutorial: Building Your First App with MongoDB Stitch
Moderne App-Architektur mit Dagger2 und RxJava
How to perform debounce in react
Tsar tech talk
TSAR (TimeSeries AggregatoR) Tech Talk
Who needs MVVM? Architecture components & MVP - Timor Surkis, Colu
Building Your First App with MongoDB Stitch
Unleashing twitter data for fun and insight
Unleashing Twitter Data for Fun and Insight
Using Graph Databases in Real-Time to Solve Resource Authorization at Telenor...
Fast REST APIs Development with MongoDB
react-suspense-for-people-in-hurry
Introduction to Reactive Extensions (Rx)
Server side rendering with React and Symfony
Data Platform at Twitter: Enabling Real-time & Batch Analytics at Scale
Ad

More from Tomasz Kowalczewski (12)

PDF
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
PDF
How I learned to stop worrying and love the dark silicon apocalypse.pdf
PDF
Is writing performant code too expensive?
PDF
Is writing performant code too expensive?
PDF
Is writing performant code too expensive?
PDF
Everybody Lies
PDF
Forgive me for i have allocated
PPTX
Reactive Java at JDD 2014
PPTX
Reactive Java (GeeCON 2014)
PPTX
Introduction to Reactive Java
PPTX
Java 8 jest tuż za rogiem
PPTX
Java gets a closure
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
How I learned to stop worrying and love the dark silicon apocalypse.pdf
Is writing performant code too expensive?
Is writing performant code too expensive?
Is writing performant code too expensive?
Everybody Lies
Forgive me for i have allocated
Reactive Java at JDD 2014
Reactive Java (GeeCON 2014)
Introduction to Reactive Java
Java 8 jest tuż za rogiem
Java gets a closure

Recently uploaded (20)

PDF
Digital Systems & Binary Numbers (comprehensive )
PDF
Understanding Forklifts - TECH EHS Solution
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPTX
Introduction to Artificial Intelligence
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PPT
Introduction Database Management System for Course Database
PPTX
Computer Software and OS of computer science of grade 11.pptx
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
System and Network Administraation Chapter 3
PPTX
assetexplorer- product-overview - presentation
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PPTX
Reimagine Home Health with the Power of Agentic AI​
Digital Systems & Binary Numbers (comprehensive )
Understanding Forklifts - TECH EHS Solution
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Design an Analysis of Algorithms II-SECS-1021-03
2025 Textile ERP Trends: SAP, Odoo & Oracle
VVF-Customer-Presentation2025-Ver1.9.pptx
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Introduction to Artificial Intelligence
wealthsignaloriginal-com-DS-text-... (1).pdf
Introduction Database Management System for Course Database
Computer Software and OS of computer science of grade 11.pptx
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Operating system designcfffgfgggggggvggggggggg
System and Network Administraation Chapter 3
assetexplorer- product-overview - presentation
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Which alternative to Crystal Reports is best for small or large businesses.pdf
How to Choose the Right IT Partner for Your Business in Malaysia
Reimagine Home Health with the Power of Agentic AI​

Deep dive reactive java (DevoxxPl)

  • 1. T O M A S Z K O W A L C Z E W S K I
  • 2. Agenda • A little bit of history • Challenges before us • A few words about API • Code!
  • 3. Reactive, asynchronous • People have been doing it for years • (Re)invented time and again by big companies and/or in high performance products –Donald Knuth “The idea that people knew a thing or two in the 70s is strange to a lot of young programmers”
  • 4. Reactive, asynchronous • People have been doing it for years • (Re)invented time and again by big companies and/or in high performance products • Now every company may need to operate at that scale • As users demand more and faster we need tools to do it right
  • 5. It started in Microsoft
  • 6. Brought to you by Erik Meijer & co.
  • 7. Synchronous pull communication Client Server Request Response Processing Network latency
  • 10. Synchronous design List<String> tweets = client.getNextTweets(); List<Tweet> validTweets = Lists.newArrayList(); for (String jsonTweet : tweets) {
 Tweet tweet = gson.fromJson(jsonTweet, Tweet.class); Image image; image = download(tweet.getUser().getProfileImage()); Tweet.setImage(image); 
 if (tweet.isValidTweet()) { validTweets.add(tweet); } }
  • 11. Decomposing individual operations List<String> tweets = client.getNextTweets(); List<Tweet> validTweets = Lists.newArrayList(); for (String jsonTweet : tweets) {
 Tweet tweet = gson.fromJson(jsonTweet, Tweet.class); Image image; image = download(tweet.getUser().getProfileImage()); Tweet.setImage(image); 
 if (tweet.isValidTweet()) { validTweets.add(tweet); } }
  • 12. Decomposing individual operations List<String> tweets = client.getNextTweets(); List<Tweet> validTweets = Lists.newArrayList(); for (String jsonTweet : tweets) {
 Tweet tweet = gson.fromJson(jsonTweet, Tweet.class); Image image; image = download(tweet.getUser().getProfileImage()); Tweet.setImage(image); 
 if (tweet.isValidTweet()) { validTweets.add(tweet); } }
  • 13. Decomposing individual operations List<String> tweets = client.getNextTweets(); List<Tweet> validTweets = Lists.newArrayList(); for (String jsonTweet : tweets) {
 Tweet tweet = gson.fromJson(jsonTweet, Tweet.class); Image image; image = download(tweet.getUser().getProfileImage()); Tweet.setImage(image); 
 if (tweet.isValidTweet()) { validTweets.add(tweet); } }
  • 14. Decomposing individual operations List<String> tweets = client.getNextTweets(); List<Tweet> validTweets = Lists.newArrayList(); for (String jsonTweet : tweets) {
 Tweet tweet = gson.fromJson(jsonTweet, Tweet.class); Image image; image = download(tweet.getUser().getProfileImage()); Tweet.setImage(image); 
 if (tweet.isValidTweet()) { validTweets.add(tweet); } }
  • 15. What is missing? List<String> tweets = client.getNextTweets(); List<Tweet> validTweets = Lists.newArrayList(); for (String jsonTweet : tweets) {
 Tweet tweet = gson.fromJson(jsonTweet, Tweet.class); Image image; image = download(tweet.getUser().getProfileImage()); Tweet.setImage(image); 
 if (tweet.isValidTweet()) { validTweets.add(tweet); } } Error handling Timeouts Monitoring Logging Back pressure Parallelism
  • 17. Available in a language or
 framework near you
  • 19. Credits • Cat picture taken from http://www.teckler.com/en/ Rapunzel