Search our courses

This Java training course discusses Java 8’s capabilities (& limitations) and answers the question “Does the arrival of streams make Java 8 a functional language?”. We then discuss Java 8 concurrency in some detail.

Advanced Java 8 and Introduction to Java 9

Key Facts

Course Code



1 Day


Some subsidised places may be available on this course, please contact us for details.



Target Audience

This Advanced Java 8 and Introduction to Java 9 training course is suitable for experienced and advanced Java programmers. Especially suitable for architects and team leaders who want to learn the limits of Java 8 or work out whether the time is right for them to move to Java 9. Also suitable for teams trying to decide whether to stick with Java or move to e.g. Kotlin or Scala.

Attendee Requirements

Attendees must already be experienced Java 8 programmers, and comfortable working with lambdas and the Streams API. Any wider knowledge of Functional Programming concepts is very helpful but not essential. Any experience programming in Scala, Clojure, Kotlin or Haskell will be an advantage.

Expand all

Course Description

This Java training course discusses Java 8’s capabilities (& limitations) and answers the question “Does the arrival of streams make Java 8 a functional language?”. We then discuss Java 8 concurrency in some detail.

Course Outline

A. Functional Programming in Java 8

1. Motivation

  • Streams enable “slightly functional programming” – graphics
  • What is functional programming?
  • 7 features of FPL
  • How far does Java go?

2. Values and Function Objects

  • 2 types of values
  • Function objects
  • Internals / oops & tie to Runnables & SAM types

3. FP in Java from first principles (mostly IDE, no Java 8 syntax)

  • Building up FP in Java
  • A function type
  • Apply & compose
  • Making it generic
  • Lambda syntax

Lab: Building up FP in Java

4. Functional Collections and Streams

  • Problems – internal mutation
  • The need for a new abstraction – Streams
  • Streams are not first-class
  • Streams as “container types”
  • Building the pipeline
  • Problems with Stream programming

Lab: Advanced Streams

5. Default methods

  • Why we need them
  • How they work
  • IDE: Practical considerations
  • Stateless traits vs interface evolution
  • Java 8 features in context of other languages
  • Conservative language design
  • Lambdas are not inner classes (invokedynamic)

B. Java 8 Concurrency Updates

6. Parallel Streams

  • Moving beyond external iteration
  • Fork / Join
  • Implementation details
  • Shortcomings

Lab: Parallel Streams

7. CompleteableFuture

  • Review of Java 5 Futures
  • Futures and Promises
  • CompleteableFuture
  • CF as a “container type”

Lab: CompleteableFuture

8. Misc Concurrency Updates

  • ConcurrentHashMap in Java 7 and 8
  • CountdownLatch, CyclicBarrier and Phaser
  • Adders and Accumulators
  • Missing Methods on Map

C. Introduction to Java 9

9. New Version Scheme and Roadmap

  • History of OpenJDK
  • New Release Scheme and Process
  • Long-Term Support Releases
  • Non-Oracle Vendors
  • Java on Docker

10. Modules

  • Design (pros and cons)
  • Multi-Release JARs
  • Maven
  • Greenfield deployments
  • Using non-default modules
  • Writing a first module
  • Exporting and APIs

Lab: A first module

11. Collections and Streams Updates

  • Collection helpers
  • Reactive Streams
  • Flow, Publisher, Subscriber
  • Transformations and Processors

Lab: Using Flows

12. Internal Changes

  • Encapsulation
  • Unsafe
  • Compact Strings
  • Indify String Concat
  • AOT Compilation
Learning Path


Ways to Attend
  • Attend a public course, check our schedule
  • Private onsite Team training also available


Private Team Training is available for this course

We deliver this course either on or off-site in various regions around the world, and can customise your delivery to suit your exact business needs. Talk to us about how we can fine-tune a course to suit your team's current skillset and ultimate learning objectives.

Private Team Training | Contact us

Technical ICT learning & mentoring services

Private Team Training

Our instructors are specialist consultants with vast real world experience and expertise allowing them to design and deliver client-focused courses for your organisation.

Learn more about our Private Team Training

What Our Clients Say

"Absolutely fantastic training. Thoroughly enjoyed it thanks to our highly enthusiastic tutor.  It wouldn't be an understatement to say that it was the best professional training that I have ever received."


Customised Linux with Networking

Live Online -  February 2022


"The course content was very good. When needed, the Instructor was extending the content of the course with hints and tips to help us understand different topics that were covered in the course."


Kubernetes Administration Certification - GTLFK

Live Online June 2021




“The course was held at the highest possible standards, the instructor was excellent, well prepared, well informed, and clearly an SME. Top marks.”


Professional Cloud Service Manager - GTC13

Live Online December 2021


“Very engaging and practical course so hope to be able to put the learning into practice.”


Being Agile in Business - GTBAB

Live Online September 2021


“Great instructor, who encouraged active participation. The breakout groups and exercises kept the group engaged and the content relevant to our own products”.


Site Reliability Engineering Foundation - GTDSRE

Live Online January 2022




"Intelligence is the ability to avoid doing work, yet
getting the work done"

Linus Torvalds, creator of Linux and GIT

Technical ICT learning & mentoring services

About GuruTeam

GuruTeam is a high-level ICT Learning, Mentoring and Consultancy services company. We specialise in delivering instructor-led on and off-site training in Blockchain, Linux, Cloud, Big Data, DevOps, Kubernetes, Agile, Software & Web Development technologies. View our Testimonials

Download our eBrochure
Our Accreditation Partners


Upcoming Courses

Kubernetes Administration

13th June - 16th June


Live Online

This Kubernetes Administration Certification training course is suitable for anyone who wants to learn the skills necessary to build and administer a Kubernetes cluster

Learn More

LPIC-1 Part 2 Linux Administrator Certification 

6th - 9th June


 Live Online

This LPIC-1 Part 2 Linux Administrator Certification training course prepares students to take the LPI 102-500 exam of the LPIC-1 certification. 

Learn More

DevOps Foundation Certification

26th - 27th June


Live Online

DevOps Foundation is intended to provide individuals with an understanding of basic DevOps concepts and how DevOps may be used to improve communication, collaboration and integration between software developers and IT operations professionals.


Learn More


23rd - 25th May

6th - 8th June

15th - 17th August


Live Online        

A comprehensive introduction to the core syntax and functions provided by Python, including coverage of its object-oriented and functional programming features.

Learn More


Stay up to date, receive updates on scheduled dates, new courses, offers, and events.

Subscribe to our Newsletter