Session Details

Practical Functional Java

Full-Day Workshop

Functional programming is touted as the solution to concurrency issues and the challenges or parallelism - and this certainly can be true.  But many of us don't really have those problems.  What I've found is that embracing functional programming makes code smaller, easier to understand, and easier to maintain.  In other words, functional programming can lead us towards cleaner code - and that is mainly why it is interesting to me.

This workshop is structured in two parts.  In the first part we will do a quick review of the changes in Java 8 that are moving Java into the modern functional world including:

  • Lambdas
  • Streams, Map, Filter, Reduce
  • Optionals
  • We will also be doing a deep dive into immutability and will learn some interesting patterns for building a hierarchy of immutable objects

In the second part, we will embark on two multi-step exercises:

  • A new development exercise where we cover the basics of thinking in functions from the very start of a project
  • A refactoring exercise where we untangle a horrible deeply nested looping monstrosity into something more elegant

The code exercises for this session will be in Java. If time permits, we will also learn about the Kotlin language and how these concepts can be applied in that world.


It would be helpful if attendees had a basic exposure to Java8 - although it is not required as I will cover all important concepts during the workshop.

Attendees should also have Java8+ installed and a suitable IDE.  Instructions for Eclipse, IntelliJ, and Visual Studio Code can be found here:


Jeff Butler

Enterprise Architect


A software development conference in the Louisville, KY area on designed to cover all aspects of software development regardless of development stack.

Contact Us
Keep in Touch