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

“I particularly liked the heavy hands on sessions that went on with the training. Other than that, really liked Mark's training style. His experience in the field really shines through.”


Docker - GTDK1

Feb ‘19

“Instructor's ability to demonstrate new features that are not part of the course help show his mastery as well as prepare us for changes in the technology. Great work.


Using Docker & Kubernetes in Production - GTK8SG

Oct ‘18

“This course was an excellent insight into the Cloud Service Management world and equips me with the tools to go back to my company and build upon it.”


Cloud Service Manager - GTC13

Jan ‘19


''Fantastic course, looking forward to applying this in my work and home life. Excellent, practical approach, very motivational. I think the entire company should attend training.''


Being Agile in Business - GTBAB

Sept '19

“Excellent instructor. You can tell he really understands the concepts he's presenting and is very passionate about his work. He answered every question we asked and presented the course in an interesting and involving manner.”


Spring Boot Development - GTIT40

Nov ‘18

"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

12th - 15th October - Live Online

16th - 19th November - 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

CompTIA Network+ FastTrack

Coming Soon

This fast-paced course teaches the essentials of networking and helps to prepare the student for the CompTIA Network+ certification.

Learn More

Applied Data Science and Big Data Analytics

Coming Soon

Learn about the theoretical and practical aspects of using Python in the realm of Data Science, Business Analytics, and Data Logistics

Learn More

Introduction to Python 3

29th September - 1st October-  Live Online

20th - 22nd October  -  Live Online

10th - 12th November -  Live Online

24th - 26th November -  Live Online          

                                                                                      15th - 17th December -  Live Online

Python is a powerful and popular object-oriented programming/scripting language with many high quality libraries.

Learn More


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

Subscribe to our Newsletter