Java 8 brought us one of the most dramatic improvements in terms of coding alternatives for the Java developers: the Streams and Lambdas. Since then, most projects started being deployed on Java version 8 or later, but many developers got stuck in the imperative programming style they were so comfortable with. The truth is that mastering the Functional Programming (FP) style requires determined efforts over quite a while, and it's typically one of the highest leaps a developer has to take while working on production code.

In this 2 hours course, you’ll be introduced to lambda expressions, method references, and the essential parts of Java Streams API. This is a code-driven course for the Java programmer who wants real hands-on experience working with FP. By the end of this course, you’ll have a good understanding of why the new functional capabilities were introduced in Java 8, how FP works within data pipelines, and how this FP style promotes concise, clean, and easier to change code .


  • Single Abstract Method (SAM) Functional Interfaces
  • Lambda Expressions and Method References
  • java.util.function interfaces: Consumers, Suppliers, Functions, Predicates, Operators
  • Stream: filter, map, peek, distinct, sorted, *match
  • Lazy evaluation and short-circuiting
  • Effectively Immutable and the Java Memory Model 
  • Numeric Streams
  • Collectors: toList, toSet, toMap, groupingBy, cascading collectors, reduce; pitfalls

What you'll learn

By the end of this hands-on training, you will:

  • Have a clear picture of the new functional features available since Java 8 and beyond
  • Be able to replace iterations with transformations with filter and map
  • Master the lambda expressions and method reference syntax
  • Know how to work with the Optional data type
  • Understand how the Stream model works under the hood
  • Know how to use collectors and comparators

What to expect?

During the training we solve together a series of exercises using the Java 8+ FP features, discussing coding style and tradeoffs while looking for the best implementation alternative.

This Training is for you because:

  • You are a Java developer or student with experience in Java 7 or earlier
  • Your team started using Java 8 or later for a while but you aren't yet comfortable with Streams and Lambdas
  • You want to simplify your code using the functional techniques in Java


  • Some practical experience with Java.
  • Contact with Java 8 features is a plus, but not required.

Technical Requirements

To solve the exercises yourself, you will need a Java 8+ SDK installed (latest Oracle JDK will do), a decent IDE (preferably IntelliJ Community), and access to GitHub and Maven Central.

Optional Prep

If you want to get the best value out of this workshop, you can prepare by walking through this brief intro or through the official documentation, but the best way is to try to solve in advance the assignment included in the course resources.

Trainer: Victor Rentea

Victor Rentea is a Java Champion, Associate Professor and Technical Trainer writing code for over two decades in many languages.

He is training developers since 2012, having developed an extensive curriculum that covers most of the software engineering best practices and typical Java-stack development. By now he trained over 2000 developers in 40+ companies, and you can read dozens of their recommendations on LinkedInFacebook, and on

Victor is best known for the energy of his talks, many ranked among the best 3 at their conference. You can expect a similar style for any training he gives while explaining complex concepts in simple, easy to remember terms. If you want to keep close, you can join the Software Craftsmanship Community he founded in Romania or follow him on LinkedIN, Twitter, or Facebook.

Choose a Pricing Option

Frequently Asked Questions

Can I get an invoice for my company (VAT-free)?

To add the VAT code of your company to the checkout page and remove the VAT taxes, follow these simple steps.

Can I ask questions after I watch the recording?

PLEASE DO! Email me your questions, no matter how silly or complex you may think they are. I'd be glad to help, so don't hesitate to contact me.

How long do I have access to the course?

How does lifetime access sound? After enrolling, you have unlimited access to this course for as long as you like - across any and all devices you own.

What if I am unhappy with the course?

We would never want you to be unhappy! If you are unsatisfied with your purchase, contact us in the first 30 days and we will give you a full refund.

Can I have this training for more of my colleagues?

There are two ways I can help you:

  • For 5+ developers, contact me for a discount and a company invoice
  • For 10+ developers or for a longer in-depth session, contact me for a dedicated webinar for your company.