What is New in Java 8

2 Days

Description

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.

Topics

  • Summary of Recent Java Changes
  • Date/Time API
  • Java NIO and NIO.2
  • Java Concurrency and Fork/Join Framework
  • Lambda Expressions
  • Collections Stream API
  • Built-in Lambda Types
  • Advanced Functional Programming

Practical Work

The labs provide hands-on experience working with the new features of Java 8 and Java 7.

What you will learn

After Completing this course, the student should 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

Audience

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.

No Upcoming Public Classes

There are currently no public events available for this course. However, you can submit a request for a new date and we will try our best to get you into a What is New in Java 8 class.

Private Training Available
No date scheduled, don’t see a date that works for you or looking for a private training event, please call 651-905-3729 or submit a request for further information here.
request a private session or new date

Course Overview

  • 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

No Upcoming Public Classes

There are currently no public events available for this course. However, you can submit a request for a new date and we will try our best to get you into a What is New in Java 8 class.

Private Training Available
No date scheduled, don’t see a date that works for you or looking for a private training event, please call 651-905-3729 or submit a request for further information here.
request a private session or new date

Prerequisites

A good understanding of object-oriented programming using Java.  The following course can provide this experience:

No Upcoming Public Classes

There are currently no public events available for this course. However, you can submit a request for a new date and we will try our best to get you into a What is New in Java 8 class.

Private Training Available
No date scheduled, don’t see a date that works for you or looking for a private training event, please call 651-905-3729 or submit a request for further information here.
request a private session or new date