Repository files navigation
Chapter 1 - Java 8, 9, 10, and 11: what's happening?
Chapter 2 - Passing code with behavior parameterization
Chapter 3 - Lambda expressions
Part 2: FUNCIONAL-STYLE DATA PROCESSING WITH STREAMS
Chapter 4 - Introducing streams
Chapter 5 - Working with streams
Chapter 6 - Collecting data with streams
Chapter 7 - Parallel data processing and performance
Part 3: EFFECTIVE PROGRAMMING WITH STREAMS AND LAMBDAS
Chapter 8 - Collection API enhancements
Chapter 9 - Refactoring, testing, and debugging
Chapter 10 - Domain-specific languages using lambdas
Chapter 11 - Using Optional as a better alternative to null
Chapter 12 - New Data and Time API
Chapter 13 - Default methods
Chapter 14 - The Java Modules System
Part 5: ENHANCED JAVA CONCURRENCY
Chapter 15 - Concepts behind CompletableFuture and reactive programming
Chapter 16 - CompletableFuture: composable asynchronous programming
Chapter 17 - Reactive programming
Part 6: FUNCTIONAL PROGRAMMING AND FUTURE JAVA EVOLUTION
Chapter 18 - Thinking functionally
Chapter 19 - Funcional programming techniques
Chapter 20 - Blending OOP and FP: Comparing Java and Scala
Chapter 21 - Conclusions and where next for Java
You can’t perform that action at this time.