Scala Reactive Programming: Build scalable, functional reactive microservices with Akka, Play, and Lagom 9781787282872, 1787282872, 9781787288645, 1787288641

Reactive programming is a better, scalable, and faster way to build applications, and one that helps us write code that

578 176 8MB

English Pages 540 Year 2018

Report DMCA / Copyright

DOWNLOAD FILE

Scala Reactive Programming: Build scalable, functional reactive microservices with Akka, Play, and Lagom
 9781787282872, 1787282872, 9781787288645, 1787288641

Table of contents :
Cover
Title Page
Copyright and Credits
Dedication
Packt Upsell
Contributors
Table of Contents
Preface
Chapter 1: Getting Started with Reactive and Functional Programming
Introduction to Reactive
What is Reactive?
What is Reactive programming?
What is a data stream or stream?
RP versus Reactive systems versus Reactive architecture
Event-Driven versus Message-Driven
Benefits of Reactive systems with RP
Functional programming
What is functional programming?
Principles of functional programming
Benefits of functional programming
Functional Reactive programming
Types of RP. Why FP is the best fit for RPReactive Manifesto
Need of Reactive Manifesto
Principles of Reactive systems
Message-Driven
Elasticity
Resilience
Responsiveness
Why Reactive Streams specification?
Why is Play Framework the best for Reactive systems?
Reactive systems versus traditional systems
The Java 9 Flow API
Flow API â#x80
#x93
Publisher
Flow APIÂ â#x80
#x93
Subscriber
Flow APIÂ â#x80
#x93
Subscription
Flow APIÂ â#x80
#x93
Processor
Flow APIÂ â#x80
#x93
Flow
Implementations of Reactive Streams
Lightbend's Reactive Platform
Pivotal's Reactor project
Microsoft's Reactive Extensions (RX)
Netflix's RxJava. Eclipse's Vert.xRatpack
How are Reactive Streams born?
Marble diagrams
What is a Marble diagram?
Data transformation
Benefits of Marble diagrams
Rules of Marble diagrams
Important FRP operators
FRPÂ â#x80
#x93
the map() function Marble diagram
FRPÂ â#x80
#x93
the flatMap() function Marble diagram
FRPÂ â#x80
#x93
the merge() function Marble diagram
FRP â#x80
#x93
the filter() function Marble diagram
FRP â#x80
#x93
the reduce() function Marble diagram
FRP â#x80
#x93
the concat() and sorted() functions Marble diagram
Observer pattern versus Reactive pattern
Summary
Chapter 2: Functional Scala
Introduction to Scala. The Scala ecosystemUnderstanding the Scala Application
Scala REPL
Principles of Scala FP
FP Design Patterns
Scala FP features in action
Immutability
Scala functions
Scala pure functions
Pattern matching
Scala combinators
For-comprehensions
Scala implicits
Implicit parameters
Implicit conversions
Scala anonymous functions
Everything is an expression
Referential transparency
Functions are first-class citizens
Partial functions
Function currying
Higher-Order Functions
Scala tail-recursion
Types of recursions
Benefits of linear recursion
A linear-recursion example. Benefits of tail-recursionA tail-recursion example
Scala Type class
Benefits of Type classes
Scala Collections in action
Scala List
Scala List Cons operator
Right associative rule
Scala Map
Scala Range
Scala Functional Design Patterns
Scala map() function
Scala flatMap() function
Advantages of flatMap
Scala Monads in action
Scala Option
Scala Either
Scala Case class and object
Benefits of Scala Case class
Scala Traits in action
Trait as an interface
Traits linearizationÂ
Linearization rules
Summary
Chapter 3: Asynchronous Programming with Scala.

Polecaj historie