Join a two day intensive training with the author of the bestselling programming book "Java 8 in Action".

Powered by

About the training

Java 8 is the largest update to Java in its history. Some of the best ideas from functional programming are migrating their way into Java 8. This means easier to read, more flexible code that scales to multicore.

At the end of this course, you will be ready to use Java 8 on your day job and be familiar with the cutting edge programming approaches which allow you to write more flexible and concise code.

The course also covers updates to the API introduced in Java 9.

Course Outline

Over the course of these two days, we will cover:

Lambda expressions

  • Why Java 8?
  • Behaviour Parameterisation
  • What is a lambda?
  • Functional interfaces: where to use lambda expressions?
  • Method references: first-class functions in Java 8
  • Advanced details


  • Collection Processing
  • Stream operations and patterns
  • Stream Optimization


  • Grouping and partitioning
  • Collection Operations
  • Arithmetic collectors
  • Advanced Queries
  • Mutable Reduction

Data Parallelism

  • What is Data Parallelism?
  • Why is this important?
  • Parallelising your streams
  • Parallel Gotchas
  • Decomposition performance

Testing and Debugging Lambdas

  • Unit testing lambda expressions
  • Debugging with laziness
  • Stack traces



Default and static methods on interfaces

  • Motivation for default methods
  • Static methods in interface
  • Useful default methods
  • Patterns for default methods
  • Resolution rules

Enhanced Design with Lambdas

  • Execute around: resource handling
  • Deferred execution: Logging
  • Design patterns

Date & Time in Java 8

  • The problem with existing date and time libraries
  • The core classes: LocalDate/LocalTime
  • Common API Patterns
  • Timezones

The Optional data type

  • The problem with null
  • How Optional improves upon null
  • How to use Optional in your code


  • Synchronous vs. Asynchronous
  • Refactoring Futures
  • Common patterns with CompletableFutures

Java 9 API updates

  • Streams
  • Collectors
  • Optional
  • CompletableFuture

The trainer

Raoul-Gabriel Urma is CEO and co-founder of Cambridge Spark, a leading learning community for data scientists and developers in UK. In addition, he is also Chairman and co-founder of Cambridge Coding Academy, a growing community of young coders and pre-university students.

Raoul is author of the bestselling programming book Java 8 in Action which sold over 20.000 copies globally. Raoul completed a PhD in Computer Science at the University of Cambridge.

You can find him on Twitter as @raoulUK .