Dysfunctional programming in Java : A functional tutorial
From dysfunctional to functional
1 min readOct 26, 2018
Dysfunctional programming in Java is a tutorial that guides you through the process of adopting functional concepts to improve the quality of your software systems. In this series we focus on analysing the challenges of an imperative Java application and refactor it to a more functional style to fix them.
The series consists of the following articles (released or planned) :-
- Part 1 : Laziness [Covering Supplier & the Eval monad)
- Part 2 : Immutability [Covering Immutable Objects with Lombok, withers]
- Part 3 : Functional Composition [Covering method chaining, Streams, ReactiveSeq, Flux from Reactor]
- Part 4 : No nulls allowed [Covering class design, Optional, eager / lazy / reactive Option types, Mono from Reactor]
- Part 5 : No exceptions [Covering making illegal states unrepresentable, eager / lazy Either type, Try]
- Part 6 : No locks or synchronized blocks [Covering Future, Sequence, FutureStreams and reactive-streams]
- Part 7 : Immutable collections [Covering Vector, NonEmptyList reactive processing]
- Part 8 : No try / finally
- Part 9 : From inheritance to Generics