Almost 8 hours teaching Java programmers how to design and create Java code using functional programming style and the new language features added with Java 8 that support that style.

Functional Programming for Java LiveLessons provides a solid foundation for designing and creating Java code using the functional programming style. Simon Roberts, best-selling author of Java Certification and programming books and video titles, has created a unique video course using live-action lectures, code demos, and whiteboard instructions to take learners on a learning journey by telling a story.

Functional Programming for Java LiveLessons is a complete resource where each new concept is introduced gradually, based on examples that start in the familiar object-oriented style. A solid foundation is created before adding on more complicated concepts. The discussion then examines how this example might be improved and introduces functional concepts in small steps, building in relevant code as you go and in a way that emphasizes understanding. Exercises are suggested throughout, allowing the viewer to stop and try solving the examples on their own before continuing. The code for this course is available as a GIT repository and viewers are encouraged to work with it to further their understanding.

Topics include:
From an OO design pattern to a functional foundation
Building more functional concepts
The power of combinations and modifications
Working with pure functions
Streams API
Advanced patterns and exception handling
Learn How To
Approach Java in a more functional way rather than an object-oriented approach
Use advanced Java syntax features: nested and inner classes, anonymous inner classes, and lambda expressions
Define simple generic methods, increasing the generality of your code
Compose and adapt functions, allowing fine-grained reuse of code and avoid duplication
Create software with dynamically variable rather than fixed behavior
Understand the benefits of, and write software using pure functions
Understand and use the Java 8 Streams API, including the monad concept, reduce and collect operations, and the parallel execution of Streams
Handle exceptions, both checked and unchecked, in Stream processing, and other situations where exceptions would break the system either compile or runtime.