Choose your language:

France
Germany
Hong Kong
India
Ireland
Japan
Malaysia
Netherlands
New Zealand
Singapore
Sweden
United Kingdom
United States

What's New in Java 8

Course Code

IN1525

Duration

2 Days

A good understanding of object-oriented programming using Java.
This Java 8 New Features training course covers the major changes in the Java 8 platform, one of the most significant updates to Java in some time. After Oracle bought out Sun, Java 6 was around for quite a while. Oracle decided to release the "easy stuff" in Java 7 while working on some of the more significant changes for Java 8.

Besides a long sought-after API for working better with Date and Time, one of the most significant changes in Java 8 are 'Lambda Expressions'. These allow you to treat a function implementation like an object and have far-reaching impacts on what you can do with Java. New approaches to filtering, sorting and performing calculations with Collections are now possible with Lambda Expressions. You can also use Lambda Expressions in many places where previously you needed an extraneous anonymous class so this will simply code.

This training covers all of these important changes in the Java 8 platform along with some of the more significant changes from Java 7. Any experienced Java programmer who wishes to quickly get up to speed on the recent changes in Java 8 will find this course extremely valuable.

Practical Work
The labs provide hands-on experience working with the new features of Java 8 and Java 7.
This training course is intended for programmers who are familiar with Java and want to learn about the new features and recent changes of Java SE 8 and Java SE 7.

Upon completion of this course, participants will be able to:

  • Describe the major recent changes in Java
  • Utilize the functionality of the Java 8 Date/Time API
  • Work with Java NIO and NIO.2
  • Work with the advanced Java Concurrency of the Fork/Join Framework
  • Define Lambda Expressions
  • Utilize the Collections Stream API
  • Use the Built-in Lambda Types with Lambda Expressions
  • Easily implement many advanced patterns with Lambda functional programming
CHAPTER 1. SUMMARY OF RECENT JAVA CHANGES
Java 7 – Major New Features
Java 7 – Generic Diamond Operator
Java 7 – Catching Multiple Exceptions
Java 7 – Rethrowing Exceptions
Java 7 – try-with-resources Statement
Java 7 – Suppressed Exceptions in try-with-resources
Java 7 – Strings in switch Statement
Java 7 – Changes in Numeric Literals
Java 7 – Fork & Join Parallel Processing
Java 7 – NIO.2 File Systems
Java 8 – Major New Features
Java 8 – Java Lambda Primer
Java 8 – Method Reference
Java 8 – Collections Stream API
Java 8 – JSR-310 Date and Time
Java 8 – Default Methods
Java 8 – Nashorn JavaScript Engine
Other Miscellaneous Java 8 Changes
Summary

CHAPTER 2. INTRODUCTION TO LAMBDA EXPRESSIONS
Functional Interface
Anonymous Inner Class (AIC)
Downside of AIC
Lambda Expressions
Lambda Expression Syntax
Method Reference
Benefits of Lambda Expressions – An Example
Initial Version
Refactor Criteria Into Method
Predicate Interface
Using a Predicate
Implement as Separate Class
Implement as AIC
Use Lambda Expressions
Reuse Lambda Expressions
Summary

CHAPTER 3. COLLECTIONS STREAM API
Aggregate Operations and Collections
Pipelines and Streams
Stream Properties
Stream API Examples
Examples Without Stream API
forEach
Filtering Streams
Differences From Iterators
Summary

CHAPTER 4. BUILT-IN LAMBDA TYPES
Target Types of Lambda Expressions
Functional Interfaces for Lambda Expressions
java.util.function Package
Main Functional Interfaces
Predicate
Consumer
Function
Supplier
Primitive Interfaces
Binary Types
BinaryOperator and UnaryOperator
Summary

CHAPTER 5. COLLECTION OPERATIONS WITH LAMBDA EXPRESSIONS
Stream API Review
Operation Types
Extracting Data with Map
Peek
Search Methods
Streams are “Lazy”
Optional Class
Stream Data and Calculation Methods
Sorting Streams
Comparator Interface Changes
Saving Data From a Stream
Collectors Class
Summary

CHAPTER 6. DATE AND TIME API
Working With Date and Time
Date and Time API
Date/Time API Packages
Local Date and Time
LocalDate
LocalTime
LocalDateTime
Date/Time Methods
Working With Time Zones and Daylight Saving Time
Modeling Time Zones
ZonedDateTime
Date and Time Amounts
Calculating Between Days
Fluent Notation
Summary

CHAPTER 7. JAVA CONCURRENCY
Java Concurrency
Executor Interface
Using the Executor
Callable<V> Interface
Callable Example
ExecutorService Interface
Future<T> Object
Using Executor, Future and Callable
Java 8 - CompletionStage
Java 8 - CompletableFuture
Java 8 – CompletableFuture Methods
Atomic Variables
Using Atomic Variables
Java 8 – Accumulators and Adders
Java 8 - ConcurrentHashMap
Summary

CHAPTER 8. FORK/JOIN FRAMEWORK
Fork/Join Introduction
Fork Join Tasks
RecursiveTask
RecursiveTask Example
RecursiveAction
Java 8 - CountedCompleter
ForkJoinPool
Java 8 – Common ForkJoinPool
Summary

CHAPTER 9. PARALLEL STREAMS
Streams Review
Old-Style Collection Processing
Stream Collection Processing
Styles Compared
Parallel Stream
Using Parallel Streams
Pipeline Restrictions
Avoid Statefulness
Stateless Implementation
Deterministic Streams
Nondeterministic Streams
Reduction
Illustrating Parallel Execution
Performance
Summary

CHAPTER 10. JAVA NIO AND NIO.2
NIO and NIO.2 Overview
The java.nio.file.Path Interface
Obtaining a Path Instance
Path Operations
Converting Paths
Operations With Two Paths
Working With Files
Java 8 – Files Changes
File Attributes
Working With File Attributes
FileVisitor API
Finding Files
Java 8 – Finding Files
Watching Directories
WatchService Example
Buffers
Channels
Using Buffers and Channels - Write Example
Using Buffers and Channels - Read Example
Working With Legacy java.io.File Code
Summary

CHAPTER 11. ADVANCED FUNCTIONAL PROGRAMMING
Collections Enhancements
Map 'merge'
Creating Streams With Stream.of
I/O Enhancements
Files Enhancements
Flatten Data With flatMap
Summary

LAB EXERCISES
Lab 1. Introduction to Lambda Expressions
Lab 2. Collection Stream API
Lab 3. Using Built-In Lambda Types
Lab 4. Collection Operations
Lab 5. Date and Time API
Lab 6. Java Concurrency Features
Lab 7. Java Fork & Join
Lab 8. Parallel Streams
Lab 9. Input/Output with NIO and NIO.2
Lab 10. Advanced Functional Programming
Send Us a Message
Choose one