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 Instructor was very knowledgeable, laid back and very approachable during the course. The environment setup was second to none.  Very easy to jump in and follow along with minimal pre-req setup."

Kubernetes Administration Certification - GTLFK

Onsite May 2024


“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 - 16th August 2024
27th - 30th August 2024
3rd - 6th September 2024
24th - 27th September 2024

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


13th - 16th August 2024
27th - 30th August 2024
3rd - 6th September 2024
24th - 27th September 202

Live Online

This course will help you understand what Rust applications look like, how to write Rust applications properly, and how to get the most out of the language and its libraries.

Learn More

Introduction to Python 3 

7th - 9th August 2024
15th - 17th October 2024
29th - 31st October 2024


Live Online

This Introduction to Python 3 training course is designed for anyone who needs to learn how to write programs in Python or support/modify existing programs.


Learn More


13th - 16th August 2024
27th - 30th August 2024
3rd - 6th September 2024
24th - 27th September 2024

Live Online        

This Go language programming training course will help you understand how Go works, and immediately be more productive. If you are building a team using Go, this will be a great opportunity to get your team on the same page and speaking the same language. Innovative lab exercises and code samples are provided to reinforce skills and quickly master the topics.

Learn More


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

Subscribe to our Newsletter