- Be familiar with the additions to Java interfaces
- Understand and use functional interfaces
- Understand lambda expressions and method references, and use them to pass behavior (methods)
- Learn about the pre-defined functional interfaces, and use them with lambda expressions
- Understand and use the Stream API
- Process collections using streams, including chaining operations and using collectors
- Understand and use parallel streams
- Understand and deal with the issues of parallel processing
- Learn and use the new Data/Time API
- Be familiar with other new capabilities
Hands-On
Minimum 50% hands-on
Supported Platforms
Eclipse IDE, Java 8, other IDEs upon request
Java Training Course Duration
2 Days
Java Training Course outline
Session 1: What's new in Interfaces
- Static Methods
- Default Methods
- Functional Interfaces
Session 2: Introducing Lambda Expressions
- Motivation for Lambdas
- Lambda Expression Overview
- Lambda Expressions and Functional Interfaces
- Using Lambda Expressions
- Working with Method References
Session 3: The Stream API
- Overview
- Shortcomings of Collections
- What are Streams?
- Chaining - Intermediate and Terminal Operations
- Understanding the Stream API
- Overview - java.util.stream types (Stream, Collector, ...)
- Keys to Understanding the API
- Important Functional Interfaces: Predicate, Comparator, Function
- Stream Processing
- Using filter()
- Sorting / Comparator.comparing()
- Using map()
- Other operations: peek(), distinct(), limit(), skip()
- Result producing terminal operations - collect, min/max ...
- void Terminal Operations - forEach()
- Existence (e.g. anyMatch) and Finder (e.g. findAny) Operations
- Collectors
- Roles and Capabilities
- Collectors.toList(), Collectors.toSet()
- Supplier and Collectors.toCollection()
- Partitioning and Grouping Collectors
Session 4: Parallel Processing and Concurrency
- Overview
- Java 8 Parallel Processing using Streams
- Ground Rules / Requirements for Using Parallel Stream Processing
- Multithreading / Concurrency Issues
- Race Conditions, Data Synchronization, Locks
- Performance Issues and Considerations
Session 5: Date/Time API
- Overview and Limitations of Previous API
- The Date/Time API (JSR 310)
- Creating and Working with LocalData/LocalTime/LocalDateTime Instances
- Formatting Date/Time
- Localization / Time Zones
- Periods and Durations
- Performing Calculations on Data/Time types
Session 6: Other Capabilities
- Compact Profiles
- Using Optional Instead of null
- Repeatable and Type Annotations
- Nashorn JavaScript Engine
- Minor New Features