Overview
Explore the concept of lazy evaluation in Java through this Devoxx conference talk. Delve into how lambdas introduced in Java 8 enable lazy patterns and data structures typically found in functional languages. Discover practical applications of laziness, including processing infinite data sets and delaying expensive computations. Learn about the reader monad for managing dependencies and trampolines for handling recursive calls. Gain insights into implementing lazy lists, comparing iteration and recursion, and understanding tail call optimization. Examine the drawbacks of annotation-based dependency injection and explore alternative approaches. Through slides and live coding sessions, acquire practical knowledge to leverage laziness for improved performance and design in Java applications.
Syllabus
Intro
Java is a strict language...
Turning Java into a lazy language
A simple practical example: logging
Laziness: the ultimate performance optimization technique
Separation of Concerns
Lazy evaluation in Scala
Implementing a lazy list in Java
Iteration vs. Recursion
Tail Call Optimization
Trampolines to the rescue
What's wrong with annotation- based dependency injection?
The joys of dependency injection
Lazy injection with the reader monad
Key Takeaway
Taught by
Devoxx