You've been using the Java 8 features for quite a while and you became fluent with Lambdas and Stream API. Bravo! But you feel there's a lot more to Functional Programming than just transforming items or grouping them. You think you could do much more with passing functions in and out of your own code.

In this 2 hours hands-on course, you’ll be introduced to the advanced best practices and the functional design patterns available to us starting with Java 8. We will discuss the tradeoffs of each while we brainstorm a series of more advanced exercises.


  • Clean Code Rules in Functional Programming
  • The Loan Functional Design Pattern
  • Using Optional in API design
  • Replace switch on enums with the Lightweight Strategy Pattern
  • Working around checked exceptions with Lombok, jOOL and the Try Monad from Vavr
  • Advanced Techniques: currying and partial functions
  • Debugging Streams
  • Streaming from files or database, AutoCloseable Streams, best practices and pitfalls
  • Parallel Streams: mechanics, performance, best practices, pitfalls

What to expect?

The course is hands-on: most of the time is spent coding through a series of exercises, exploring alternative solutions discussing coding style and tradeoffs. Expect an intense brainstorming experience, extremely time-efficient.

This Training is for you because:

  • You are a Java developer with solid hands-on experience in Java 8 or later
  • You want to design code making full use of the functional capabilities of Java
  • You want to understand how to think in Functional Programming style


  • Practical experience with Java Streams and Lambdas is recommended.

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 or Ultimate), 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 following the Functional Programming Essentials module.

Course Curriculum

  Advanced Functional Programming
Available in days
days after you enroll

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.