SlideShare une entreprise Scribd logo
1  sur  58
Télécharger pour lire hors ligne
REACTIVE
EVERYWHERE
JAVAONE 2016
Stefan Reuter, Karsten Sitterberg
22016-09-20
STEFAN
REUTER
@StefanReuter
● IT Architect
● Trainer and Consultant for trion development GmbH – www.trion.de
32016-09-20
KARSTEN
SITTERBERG
@kakulty
● Java, JavaScript/TypeScript, Web
● Trainer and Consultant for trion development GmbH – www.trion.de
42016-09-20
trion
www.trion.de
● Professional services
● Architecture
● Consulting
● Development
● Training
slideshare.net/triondevelopment
52016-09-20
AGENDA
Reactive Backends
Summary
Reactive Web Frontends
Item
Introduction to Reactive Programming
Situation
62016-09-20
SITUATION
Environment
Expectations
Changes
 Massive changes to both environment and
expectations in recent years
 Mobile applications (native and web-based)
 Cloud environment and infrastructure
 Multicore
 Order of magnitude increase in number of connections
 Interactive
 Real-time
 Responsive
 Collaborative
72016-09-20
TODAY'S APPLICATIONS MUST...
React to Events Event-Driven
React to Load Elastic
React to Failure Resilient
React to Users Responsive
82016-09-20
REACTIVE MANIFESTO
“[…] Systems built as Reactive Systems are more flexible, loosely-coupled and scalable. This
makes them easier to develop and amenable to change. They are significantly more tolerant
of failure and when failure does occur they meet it with elegance rather than disaster.
Reactive Systems are highly responsive, giving users effective interactive feedback. […]”
From: Reactive Manifesto, Version 2, September 2014
Elastic
Responsive
Resilient
Message Driven
92016-09-20
INTRO TO REACTIVE PROGRAMMING
INTRODUCTION TO
REACTIVE PROGRAMMING
102016-09-20
reactive programming
is programming with
asynchronous
data streams
112016-09-20
JAVA.UTIL.ITERATOR
Iterator
hasNext
next
hasNext
next
...
122016-09-20
OBSERVABLE AND SUBSCRIBER
Subscriber Observable
subscribe
onNext*
onCompleted
or: onError
OnNext* (OnCompleted|OnError)?
132016-09-20
ITERATOR vs. OBSERVABLE
T next() onNext(T t)
boolean hasNext() onCompleted()
throws RuntimeException onError(Throwable e)
Iterator Observable
 blocking
 synchronous
 pull
 non-blocking
 asynchronous
 push
142016-09-20Source: Reactive Programming with RxJava, O'Reilly 2016
152016-09-20
CREATING
162016-09-20
CREATING OBSERVABLES
Edge cases
Custom
Pre defined values
 Observable.just(T value)
 Observable.from(T[] values) / from(Iterable<T> values)
 Observable.range(int start, int count)
 Observable.interval()
 Observable.empty()
 Observable.never()
 Observable.error(Throwable exception)
 Observable.create(OnSubscribe<T> f)
Observable.create(subscriber -> {
subscriber.onNext(“Hello World”);
subscriber.onCompleted();
}
172016-09-20
SUBSCRIBING
182016-09-20
SUBSCRIBE (1/2)
 Observables do not emit items until someone subscribes
 Observables can have numerous subscribers
(unlike a Java 8 stream that can only be consumed once)
Observable<Integer> o = Observable.range(1,3);
o.subscribe(System.out::println);
o.subscribe(System.out::println);
192016-09-20
SUBSCRIBE (2/2)
o.subscribe(new Observer<Integer>() {
public void onNext(Integer t) { }
public void onError(Throwable e) { }
public void onCompleted() { }
});
o.subscribe(System.out::println,
Throwable::printStackTrace,
this::completed);
o.subscribe(i -> logger.info("{}", i));
202016-09-20
INTEGRATING EXISTING CODE
212016-09-20
WRAPPING AN EXISTING ASYNC API
222016-09-20
COMPOSABLE FUNCTIONS
232016-09-20
COMPOSABLE FUNCTIONS (1/2)
Filter
Combine
Transform
 map, flatMap
 groupBy, buffer
 window
 ...
 take, skip, last
 distinct
 filter
 ...
 concat, merge, zip, combineLatest
 multicast, publish
 switchOnNext
 ...
242016-09-20
COMPOSABLE FUNCTIONS (2/2)
Error Handling
Custom
Concurrency
 observeOn
 subscribeOn
 onErrorReturn
 onErrorResumeNext
 retry
 ...
 any public class that implements the Operator interface
 or a subclass like Transformer
 most likely you will never need this!
252016-09-20
MAP
262016-09-20
BUFFER
272016-09-20
TWEETS PER SECOND
Observable<Integer> o = tweets()
.buffer(1, TimeUnit.SECONDS)
.map(items -> items.size())
Observable<Integer> itemsPerSecond
(Observable<?> o) {
return o.buffer(1, TimeUnit.SECONDS)
.map(items -> items.size());
}
282016-09-20
REACTIVE BACKENDS
REACTIVE BACKENDS
292016-09-20
REACTIVE ECOSYSTEM
Service
Database
Consumed
3rd
Party API
Message Queue
Web
Frontend
Provided
API
302016-09-20
SERVICE
Message Queue
Web
Frontend
Provided
API
Consumed
3rd
Party API
Database
Service
312016-09-20
IMPLEMENTATIONS ON THE JVM
Project Reactor
Java 9 j.u.c.Flow
RxJava
 Reactive Extensions (ReactiveX.io) for the JVM
 Zero Dependencies
 Polyglot (Scala, Groovy, Clojure and Kotlin)
 RxJava 2: Java 8+ and Reactive Streams compatible
 Spring Ecosystem
 Reactive Streams compatible
 Will become part of Spring Framework 5.0
 Flow.Processor, Publisher, Subscriber and Subscription
 Interfaces correspond to Reactive Streams specification
 Will be used in Java EE 9, estimated 2018
322016-09-20
REACTIVE WEB IMPLEMENTATION
@Controller, @RequestMapping
Spring Web Reactive
Reactive HTTP
Spring MVC
Servlet API
Any Servlet Container Servlet 3.1, Netty, Undertow
332016-09-20
CONTROLLER
 With RxJava:
@GetMapping("/persons")
Observable<Person> list() {
return this.repository.findAll();
}
@GetMapping("/persons")
Flux<Person> list() {
return this.repository.findAll();
}
 With Project Reactor:
342016-09-20
PLAIN JSON OR SERVER SENT EVENTS
 JSON Array of persons:
GET /persons HTTP/1.1
Host: localhost
Accept: application/json
GET /persons HTTP/1.1
Host: localhost
Accept: text/event-stream
 Event stream of JSON person objects:
 Backend implementation is agnostic of the exact transport
352016-09-20
DATABASE
Message Queue
Web
Frontend
Provided
API
Service
Database
Consumed
3rd
Party API
362016-09-20
DATABASE CHALLENGES
Transactions
Locking
API
 Current standard APIs like JDBC, JPA, etc. are not build
with reactive programming in mind
 Usually synchronous and blocking
 Traditional databases couple heavy-weight “connection”
and “transaction”
 Transactions cause blocking
 Locks at the database level prevent
parallel execution
 Global coordinator
Traditional database
patterns do not work
well in a reactive
world
372016-09-20
DATABASE TRENDS
Abstract API
NoSQL
Native API
 Couchbase offers a reactive API since SDK v2
 PostgreSQL, MongoDB, Cassandra and others provide
at least async APIs
 Spring Data 2.0 comes with reactive repositories aligned
with Spring Framework 5.0
 BASE instead of ACID enables scalability
 Distributed databases without global coordination are a
good fit
382016-09-20
REACTIVE REPOSITORIES
public interface PersonRepository extends
ReactiveCrudRepository<Person, String> {
Flux<Person> findByLastName(String ln);
Flux<Person> findByFirstName(String fn);
}
392016-09-20
CONSUMED THIRD PARTY API
Web
Frontend
Provided
API
Service
Database
Message Queue
Consumed
3rd
Party API
402016-09-20
THIRD PARTY SYSTEMS
Plain HTTP API
Internals
Reactive API
 Few third party systems offer a native reactive API
 Examples include Couchbase
 Non reactive HTTP APIs can be made reactive:
 Reactive Web Client is part of Spring Framework 5
 Reactive Jersey Client
 RxNetty Client
 Third party systems that are blocking or synchronous
internally prevent a pure reactive everywhere scenario
even if the API can be made reactive
412016-09-20
REACTIVE WEB CLIENT
 With RxJava:
Observable<Person> response = webClient
.perform(get("http://example.com/persons")
.accept(APPLICATION_JSON))
.extract(body(Account.class));
Flux<Person> response = webClient
.perform(get("http://example.com/persons")
.accept(APPLICATION_JSON))
.extract(body(Account.class));
 With Project Reactor:
422016-09-20
REACTIVE BACKENDS
REACTIVE WEB FRONTENDS
432016-09-20
WEB FRONTEND
Provided
API
Service
Database
Consumed
3rd
Party API
Message Queue
Web
Frontend
442016-09-20
Web Frontends
● Browser
• JavaScript
• Single Threaded
● Remote Communication:
• HTTP
• WebSockets
• WebRTC
● Many modern Frameworks
• Our Example: Angular 2
452016-09-20
Reactive Frontends: Angular 2
● Built on top of RxJS
• Implementation of ReactiveX for JavaScript
● Reactive HTTP
• All HTTP calls are handled reactive!
this.http
.get('http://example.com/persons')
.map(response => response.json())
.subscribe(
person => this.person = person,
error => this.errorMessage = <any>error,
() => console.log('Completed')
);
Returns an
Observable<Response>
462016-09-20
Angular 2 Server-Sent Events
● Angular 2 reactive SSE
● Use JavaScript event source
• No reactive API
● onmessage vs. onnext
● no oncompleted
→ Need adapter
• Wrap JS event source into Rx Observable
let source = new EventSource('http://example.com/persons');
472016-09-20
Angular 2 SSE
● Create Observable from Event Source
public getEventsource(): Observable<MessageEvent> {
return Observable.create(
(observer: Observer<MessageEvent>) => {
let source = new EventSource('http://example.com/persons');
source.onmessage = observer.next;
source.onerror = observer.error;
return () => {
eventSource.close();
});
}
Close event source
If observable unsubscribed
482016-09-20
Angular 2 WebSockets
● Angular 2 reactive WebSockets
● Use javascript WebSockets
• No reactive API
● onmessage vs. onnext
● onclose vs oncompleted
→ Need adapter
● Data flow in both directions with WebSockets
• Wrap JS WebSocket into Rx Subject
let socket = new WebSocket('http://example.com/persons');
492016-09-20
Reactive Subjects
● Observer and Observable combined
● Observable Part:
• Client can listen to changes/new data from Subject
• Subject obtains this data externally, e.g. from a WebSocket
● Observer Part:
• Subject can listen to changed/new data from client
• Subject can send this data e.g. via WebSocket
Subject.create(observer, observable)
Subject
subscribe()
onNext()
502016-09-20
Angular 2 WebSockets
1. Create WebSocket
public createWebsocket(): Subject<MessageEvent> {
let socket = new WebSocket('http://example.com/persons');
//...
return Subject.create(observer, observable);
}
512016-09-20
Angular 2 WebSockets
2. Create Observable (Make Data from WebSocket available to Client)
• Function inside create() defines behavior of observable
• Via calls to observer.next(), .error(), .completed()
Observable.create(function (observer) {
//...
});
522016-09-20
Angular 2 WebSockets
2. Create Observable (Make Data from WebSocket available to Client)
public createWebsocket(): Subject<MessageEvent> {
let socket = new WebSocket('http://example.com/persons');
let observable = Observable.create(
(observer: Observer<MessageEvent>) => {
socket.onmessage = observer.next.bind(observer);
socket.onerror = observer.error.bind(observer);
socket.onclose = observer.complete.bind(observer);
return socket.close.bind(socket);
}
);
//...
} Map WebSocket Events
to Observable Handlers
532016-09-20
Angular 2 WebSockets
3. Create Observer (Client can notify update of data)
• Event-Handler Functions to be defined in
● [onNext] – what to do if new value emitted,
● [onError] – what to do if error emitted,
● [onCompleted] – what to do if observable completes
Observer.create(
[onNext], [onError], [onCompleted]
);
542016-09-20
Angular 2 Websockets
3. Create Observer (Client can notify update of data)
public createWebsocket(): Subject<MessageEvent> {
//...
let observer = {
next: (data: Object) => {
if (socket.readyState === WebSocket.OPEN) {
socket.send(JSON.stringify(data));
}
},
// implement error, completed handlers
};
return Subject.create(observer, observable);
}
onnext
handler for
updates
from Client
552016-09-20
Reactive Angular 2
WebSockets
SSE
HTTP  Reactive built-in with Angular 2
 Wrap into Rx subject
 Wrap into Rx observable
562016-09-20
 You can start using reactive program-
ming on all tiers right away
 Begin on the layers where you get most
out of reactive
 If you want to start right now Spring 5
and Angular 2 are good options. Keep
an eye on JavaEE for the future.
SUMMARY
reactive
programming is
a powerful
option that is
available today
572016-09-20
Questions?
582016-09-20
Thank you
for your attention
We are looking forward to answer your questions
@StefanReuter
stefan.reuter@trion.de
@kakulty
karsten.sitterberg@trion.de

Contenu connexe

En vedette

Codes and conventions of music magazine
Codes and conventions of music magazineCodes and conventions of music magazine
Codes and conventions of music magazineBethVannet
 
Nouth Phouthavongsa - Asian TYA Network event presentation at ricca ricca*fes...
Nouth Phouthavongsa - Asian TYA Network event presentation at ricca ricca*fes...Nouth Phouthavongsa - Asian TYA Network event presentation at ricca ricca*fes...
Nouth Phouthavongsa - Asian TYA Network event presentation at ricca ricca*fes...TYA Asia
 
B uppsats den kyrkliga forsvenskningen av bohuslanska hisingen
B uppsats  den kyrkliga forsvenskningen av bohuslanska hisingenB uppsats  den kyrkliga forsvenskningen av bohuslanska hisingen
B uppsats den kyrkliga forsvenskningen av bohuslanska hisingenDiana Olausson Öberg
 
How does your media product represent particular social groups? evaluation qu...
How does your media product represent particular social groups? evaluation qu...How does your media product represent particular social groups? evaluation qu...
How does your media product represent particular social groups? evaluation qu...Ethan_Whitmore
 
How does your media product represent particular social groups? evaluation qu...
How does your media product represent particular social groups? evaluation qu...How does your media product represent particular social groups? evaluation qu...
How does your media product represent particular social groups? evaluation qu...Ethan_Whitmore
 
Teta Tulay - Asian TYA Network event presentation at ricca ricca*festa 2016.
Teta Tulay - Asian TYA Network event presentation at ricca ricca*festa 2016.Teta Tulay - Asian TYA Network event presentation at ricca ricca*festa 2016.
Teta Tulay - Asian TYA Network event presentation at ricca ricca*festa 2016.TYA Asia
 
Contents page powerpoint
Contents page powerpointContents page powerpoint
Contents page powerpointBethVannet
 
Polliticians in cg
Polliticians in cgPolliticians in cg
Polliticians in cgallwina
 
Contents page powerpoint
Contents page powerpointContents page powerpoint
Contents page powerpointBethVannet
 
B uppsats den kyrkliga försvenskningen av bohuslänska hisingen
B uppsats  den kyrkliga försvenskningen av bohuslänska hisingenB uppsats  den kyrkliga försvenskningen av bohuslänska hisingen
B uppsats den kyrkliga försvenskningen av bohuslänska hisingenDiana Olausson Öberg
 

En vedette (15)

Naomi reyes uft
Naomi reyes uftNaomi reyes uft
Naomi reyes uft
 
Codes and conventions of music magazine
Codes and conventions of music magazineCodes and conventions of music magazine
Codes and conventions of music magazine
 
Nouth Phouthavongsa - Asian TYA Network event presentation at ricca ricca*fes...
Nouth Phouthavongsa - Asian TYA Network event presentation at ricca ricca*fes...Nouth Phouthavongsa - Asian TYA Network event presentation at ricca ricca*fes...
Nouth Phouthavongsa - Asian TYA Network event presentation at ricca ricca*fes...
 
CV Tamer Abbass
CV Tamer AbbassCV Tamer Abbass
CV Tamer Abbass
 
B uppsats den kyrkliga forsvenskningen av bohuslanska hisingen
B uppsats  den kyrkliga forsvenskningen av bohuslanska hisingenB uppsats  den kyrkliga forsvenskningen av bohuslanska hisingen
B uppsats den kyrkliga forsvenskningen av bohuslanska hisingen
 
2016 CV 1
2016 CV 12016 CV 1
2016 CV 1
 
How does your media product represent particular social groups? evaluation qu...
How does your media product represent particular social groups? evaluation qu...How does your media product represent particular social groups? evaluation qu...
How does your media product represent particular social groups? evaluation qu...
 
evolució del web
evolució del webevolució del web
evolució del web
 
How does your media product represent particular social groups? evaluation qu...
How does your media product represent particular social groups? evaluation qu...How does your media product represent particular social groups? evaluation qu...
How does your media product represent particular social groups? evaluation qu...
 
Case Study Of Webgraph
Case Study Of WebgraphCase Study Of Webgraph
Case Study Of Webgraph
 
Teta Tulay - Asian TYA Network event presentation at ricca ricca*festa 2016.
Teta Tulay - Asian TYA Network event presentation at ricca ricca*festa 2016.Teta Tulay - Asian TYA Network event presentation at ricca ricca*festa 2016.
Teta Tulay - Asian TYA Network event presentation at ricca ricca*festa 2016.
 
Contents page powerpoint
Contents page powerpointContents page powerpoint
Contents page powerpoint
 
Polliticians in cg
Polliticians in cgPolliticians in cg
Polliticians in cg
 
Contents page powerpoint
Contents page powerpointContents page powerpoint
Contents page powerpoint
 
B uppsats den kyrkliga försvenskningen av bohuslänska hisingen
B uppsats  den kyrkliga försvenskningen av bohuslänska hisingenB uppsats  den kyrkliga försvenskningen av bohuslänska hisingen
B uppsats den kyrkliga försvenskningen av bohuslänska hisingen
 

Similaire à Reactive Everywhere

Easing offline web application development with GWT
Easing offline web application development with GWTEasing offline web application development with GWT
Easing offline web application development with GWTArnaud Tournier
 
Spring 5 Webflux - Advances in Java 2018
Spring 5 Webflux - Advances in Java 2018Spring 5 Webflux - Advances in Java 2018
Spring 5 Webflux - Advances in Java 2018Trayan Iliev
 
Microservices with Spring 5 Webflux - jProfessionals
Microservices  with Spring 5 Webflux - jProfessionalsMicroservices  with Spring 5 Webflux - jProfessionals
Microservices with Spring 5 Webflux - jProfessionalsTrayan Iliev
 
IPT Reactive Java IoT Demo - BGOUG 2018
IPT Reactive Java IoT Demo - BGOUG 2018IPT Reactive Java IoT Demo - BGOUG 2018
IPT Reactive Java IoT Demo - BGOUG 2018Trayan Iliev
 
Make It Fast - Using Modern Browser Performance APIs to Monitor and Improve t...
Make It Fast - Using Modern Browser Performance APIs to Monitor and Improve t...Make It Fast - Using Modern Browser Performance APIs to Monitor and Improve t...
Make It Fast - Using Modern Browser Performance APIs to Monitor and Improve t...Nicholas Jansma
 
NGRX Apps in Depth
NGRX Apps in DepthNGRX Apps in Depth
NGRX Apps in DepthTrayan Iliev
 
Ten practical ways to improve front-end performance
Ten practical ways to improve front-end performanceTen practical ways to improve front-end performance
Ten practical ways to improve front-end performanceAndrew Rota
 
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java DevelopersWebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java DevelopersViktor Gamov
 
R2DBC JEEConf 2019 by Igor Lozynskyi
R2DBC JEEConf 2019 by Igor LozynskyiR2DBC JEEConf 2019 by Igor Lozynskyi
R2DBC JEEConf 2019 by Igor LozynskyiIgor Lozynskyi
 
Reactive Java Robotics and IoT 2016
Reactive Java Robotics and IoT 2016Reactive Java Robotics and IoT 2016
Reactive Java Robotics and IoT 2016ilievt
 
Introduction to R2DBC
Introduction to R2DBCIntroduction to R2DBC
Introduction to R2DBCRob Hedgpeth
 
ASP.NET Core 2.1: The Future of Web Apps
ASP.NET Core 2.1: The Future of Web AppsASP.NET Core 2.1: The Future of Web Apps
ASP.NET Core 2.1: The Future of Web AppsShahed Chowdhuri
 
Java API for XML Web Services (JAX-WS)
Java API for XML Web Services (JAX-WS)Java API for XML Web Services (JAX-WS)
Java API for XML Web Services (JAX-WS)Peter R. Egli
 
Reactive database access with Slick3
Reactive database access with Slick3Reactive database access with Slick3
Reactive database access with Slick3takezoe
 
Wakanda: a new end-to-end JavaScript platform - JSConf Berlin 2009
Wakanda: a new end-to-end JavaScript platform - JSConf Berlin 2009Wakanda: a new end-to-end JavaScript platform - JSConf Berlin 2009
Wakanda: a new end-to-end JavaScript platform - JSConf Berlin 2009Alexandre Morgaut
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop OverviewShubhra Kar
 
Reactive Programming on Android - RxAndroid - RxJava
Reactive Programming on Android - RxAndroid - RxJavaReactive Programming on Android - RxAndroid - RxJava
Reactive Programming on Android - RxAndroid - RxJavaAli Muzaffar
 
Exploring the continuum between Cordova and React Native
Exploring the continuum between Cordova and React NativeExploring the continuum between Cordova and React Native
Exploring the continuum between Cordova and React NativeSimon MacDonald
 
"Offline mode for a mobile application, redux on server and a little bit abou...
"Offline mode for a mobile application, redux on server and a little bit abou..."Offline mode for a mobile application, redux on server and a little bit abou...
"Offline mode for a mobile application, redux on server and a little bit abou...Viktor Turskyi
 

Similaire à Reactive Everywhere (20)

Easing offline web application development with GWT
Easing offline web application development with GWTEasing offline web application development with GWT
Easing offline web application development with GWT
 
Spring 5 Webflux - Advances in Java 2018
Spring 5 Webflux - Advances in Java 2018Spring 5 Webflux - Advances in Java 2018
Spring 5 Webflux - Advances in Java 2018
 
Microservices with Spring 5 Webflux - jProfessionals
Microservices  with Spring 5 Webflux - jProfessionalsMicroservices  with Spring 5 Webflux - jProfessionals
Microservices with Spring 5 Webflux - jProfessionals
 
IPT Reactive Java IoT Demo - BGOUG 2018
IPT Reactive Java IoT Demo - BGOUG 2018IPT Reactive Java IoT Demo - BGOUG 2018
IPT Reactive Java IoT Demo - BGOUG 2018
 
Make It Fast - Using Modern Browser Performance APIs to Monitor and Improve t...
Make It Fast - Using Modern Browser Performance APIs to Monitor and Improve t...Make It Fast - Using Modern Browser Performance APIs to Monitor and Improve t...
Make It Fast - Using Modern Browser Performance APIs to Monitor and Improve t...
 
NGRX Apps in Depth
NGRX Apps in DepthNGRX Apps in Depth
NGRX Apps in Depth
 
Vaadin 7.2
Vaadin 7.2Vaadin 7.2
Vaadin 7.2
 
Ten practical ways to improve front-end performance
Ten practical ways to improve front-end performanceTen practical ways to improve front-end performance
Ten practical ways to improve front-end performance
 
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java DevelopersWebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
 
R2DBC JEEConf 2019 by Igor Lozynskyi
R2DBC JEEConf 2019 by Igor LozynskyiR2DBC JEEConf 2019 by Igor Lozynskyi
R2DBC JEEConf 2019 by Igor Lozynskyi
 
Reactive Java Robotics and IoT 2016
Reactive Java Robotics and IoT 2016Reactive Java Robotics and IoT 2016
Reactive Java Robotics and IoT 2016
 
Introduction to R2DBC
Introduction to R2DBCIntroduction to R2DBC
Introduction to R2DBC
 
ASP.NET Core 2.1: The Future of Web Apps
ASP.NET Core 2.1: The Future of Web AppsASP.NET Core 2.1: The Future of Web Apps
ASP.NET Core 2.1: The Future of Web Apps
 
Java API for XML Web Services (JAX-WS)
Java API for XML Web Services (JAX-WS)Java API for XML Web Services (JAX-WS)
Java API for XML Web Services (JAX-WS)
 
Reactive database access with Slick3
Reactive database access with Slick3Reactive database access with Slick3
Reactive database access with Slick3
 
Wakanda: a new end-to-end JavaScript platform - JSConf Berlin 2009
Wakanda: a new end-to-end JavaScript platform - JSConf Berlin 2009Wakanda: a new end-to-end JavaScript platform - JSConf Berlin 2009
Wakanda: a new end-to-end JavaScript platform - JSConf Berlin 2009
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop Overview
 
Reactive Programming on Android - RxAndroid - RxJava
Reactive Programming on Android - RxAndroid - RxJavaReactive Programming on Android - RxAndroid - RxJava
Reactive Programming on Android - RxAndroid - RxJava
 
Exploring the continuum between Cordova and React Native
Exploring the continuum between Cordova and React NativeExploring the continuum between Cordova and React Native
Exploring the continuum between Cordova and React Native
 
"Offline mode for a mobile application, redux on server and a little bit abou...
"Offline mode for a mobile application, redux on server and a little bit abou..."Offline mode for a mobile application, redux on server and a little bit abou...
"Offline mode for a mobile application, redux on server and a little bit abou...
 

Dernier

Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 

Dernier (20)

Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 

Reactive Everywhere