Chapter 1. Java 8, 9, 10, and 11: what’s happening?
2. Functional-style data processing with streams
Chapter 4. Introducing streams
Chapter 5. Working with streams
3. Effective programming with streams and lambdas
Chapter 8. Collection API enhancements
Chapter 11. Using Optional as a better alternative to null
Chapter 15. Concepts behind CompletableFuture and reactive programming
Chapter 16. CompletableFuture: composable asynchronous programming
6. Functional programming and future Java evolution
Chapter 18. Thinking functionally
Chapter 19. Functional programming techniques
A. Miscellaneous language updates
B. Miscellaneous library updates