Java Functional Programming – Detailed Course Outline

Copyright © 2014 - 2024, Anderson Software Group, Inc.

Section 1 - Lambda Expressions

  • Interface Static Methods
  • Default Methods
  • Functional Interfaces
  • Lambda Syntax
  • Using Lambdas
  • Function Descriptors
  • Method References
  • Choosing Functional Interfaces
  • Constructor References
  • Closures
  • Lambda Compositions

Section 2 - Streams API

  • What are Streams?
  • Stream Advantages
  • Stream Operations
  • Streams vs. Collections
  • Filtering and Mapping
  • Finding and Matching
  • Reductions
  • Numeric Streams
  • Infinite Streams
  • Building Streams
  • Collectors
  • Grouping and Partitioning
  • Parallel Streams

Section 3 - Refactoring and Testing

  • Refactoring to Lambdas
  • Refactoring to Method References
  • Refactoring to Streams
  • Refactoring Code Patterns
  • Unit Testing Lambdas
  • Visible Lambdas
  • Lambda Behaviors
  • Lambda Stack Traces
  • Stream Debugging

Section 4 - Concurrency Enhancements

  • Parallel Array Methods
  • Thread Locals
  • Atomics and Lambdas
  • Concurrent HashMaps
  • Completable Futures
  • Pipelining
  • Applying Futures
  • Composing Futures
  • Combining Futures
  • Reactive Completions

Section 5 - Functional Programming

  • Functional Style Java
  • Shared Mutable Data
  • Imperative vs. Declarative
  • Guidelines
  • Referential Transparency
  • Replacing Iteration
  • Pure Functions
  • Currying
  • Combinators

Appendix - Java 8 APIs

  • Date and Time APIs
  • Optional Class