This document provides an overview of functional programming patterns and abstractions in Java 8. It introduces common functional concepts like functors, applicative functors, monads, and type classes. It then describes implementations of these concepts for option, either, stream, future, and completable future in Java. The document explains how functional patterns allow for simpler composition and avoidance of null checks compared to imperative programming with conditionals.