Search our courses
Training

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

GTJ802

Duration

1 Day

Skillnet

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

Accreditation

N/A

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

 


“It was very positive. This course was 4 days but covered a semester worth of work if it was done in college. The labs were relevant and delegates were provided the lab/coursebook for further study and practice after the course finished. GuruTeam's course was excellent and provides a deeper understanding of the architecture and how it all works. The hands-on aspect was very helpful as it helped solidify the concepts as I went along."

 

Kubernetes Administration Certification - GTLFK

Live Online September 2024

 

 

 

“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


 2nd - 5th December 2024
10th - 13th December 2024
16th - 19th December 2024


Live Online
GMT +01:00  09:30 - 17:00 hrs



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

RUST PROGRAMMING



10th - 13th December 2024
16th - 19th December 2024


 

Live Online
GMT +01:00  09:30 - 17:00 hrs

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

INTRO TO PYTHON 3 

ADVANCED PYTHON 3

Dates to be added

 

Live Online
GMT +01:00  09:30 - 17:00 hrs

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



 

 

Learn More

 GO LANG TRAINING

10th - 13th December 2024
16th - 19th December 2024

Live Online
GMT +01:00  09:30 - 17:00 hrs
 

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

Newsletter

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

Subscribe to our Newsletter