Transitioning to Java 8

Course Code: 1260



The Transitioning to Java course is designed for developers currently working on the Java 6 or Java 7 platform, who need to migrate their skills or applications to Java 8. The course helps participants master the skills necessary to implement the latest features and benefits of Java 8 and enable them to be effective Java 8 developers. The course covers Java 8 features such as functional programming, anonymous functions, lambda expressions and default methods, streams and collectors, new date/time API, StringJoiner and repeating annotations.

Schedule Classes

Looking for more sessions of this class?

Course Delivery

This course is available in the following formats:

Live Classroom
Duration: 5 days

Live Virtual Classroom
Duration: 5 days

What You'll learn

  • What functional programming means and what it brings to the table
  • How Lambda expressions and functional interfaces can greatly enhance other aspects of Java
  • Explore the new ‘features’ of the Collection API
  • To use the new Stream constructs to work with Collections and Collectors
  • How to work with default methods and pass methods as arguments
  • How to use the new features to support concurrency in multi-code systems
  • To work with the new Date/Time API and other new features


  • Overview of Java 8 features and enhancements
  • Anonymous functions, Streams
  • Interfaces in Java 8
  • Default methods
  • Static methods
  • Multiple Inheritance?
  • Exercise: Interfaces
  • Functional vs OO Programming
  • Anonymous Inner-classes
  • Utility Methods
  • Lambda Expressions
  • Lambda Expression Syntax
  • Functional Interfaces
  • Type Inference in Java 8
  • Method references
  • Exercise: Using Lambda
  • Introduce the ConcurrentHashMap
  • Lambda expressions and Collections
  • Exercise: Functional Collections
  • Processing Collections of data
  • The Stream interface
  • Reduction and Parallelism
  • Filtering collection data
  • Sorting Collection data
  • Map collection data
  • Find elements in Stream
  • Numeric Streams
  • Create infinite Streams
  • Sources for using Streams
  • Exercise: Working with Streams
  • Creating Collections from a Stream
  • Group elements in the Stream
  • Multi-level grouping of elements
  • Partitioning Streams
  • Exercise: Collecting
  • Introduce the new Date/Time API
  • LocalDate, LocalDateTime, etc.
  • Formatting Dates
  • Working with time zones
  • Manipulate date/time values
  • Exercise: Agenda
  • Introduce Optional
  • Implement Optional attributes
  • Lambda expressions and Optional
  • Exercise: Optional
  • StringJoiner
  • Repeating and Type Annotations
  • Parallel Array Sorting
  • Improved type inference
  • Method parameter reflection
  • Updated command line tooling
  • Exercise: Reflection
  • Exercise: Annotation Processing
  • The common thread pool
  • Atomic variables
  • LongAdder and LongAccumulator
  • CompletableFuture
  • Non-blocking asynchronous tasks
  • Exercise: CompletableFuture
  • Working with JavaScript and Java
  • Accessing Nashorn
  • Executing JavaScript from Java
  • Executing Java from JavaScript
  • Implementing a Java Interface
  • Alternatives to Nashorn
  • Exercise: Using JavaScript
View More


Participants need to have a working knowledge of developing Java applications.

Who Should Attend

This is an intermediate-level Java developer course, and is highly recommended for experienced Java programmers.

Interested in this course? Let’s connect!