O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Functional Programming For Java LiveLessons

Video Description

Rough Cuts / Sneak Peek:

The Rough Cuts/Sneak Peek program provides early access to Pearson video products and is exclusively available to Safari subscribers. Content for titles in this program is made available throughout the development cycle, so products may not be complete, edited, or finalized, including video post-production editing. In Functional Programming for Java LiveLessons you will get a thorough introduction to functional concepts for Java, so you can leverage the power of lambdas and other features introduced in Java 8 & 9. You will get a practical understanding of the deep power of functional programming. Full of real-world examples, this course is heavy on understandability and practicality, and light on academic formality.

Many object-oriented programmers are largely unfamiliar with the potential value of Functional Programming (or “FP” to its friends), of what problems it solves, and how it can help in everyday Java code. This course aims to get you thoroughly comfortable with the “why,” the “what,” and the “how” of FP. We'll introduce problems in small chunks and consider how traditional programming would solve them. Then, we'll consider what remaining problems there might be with the traditional solution, and look at how that solution could be improved. Finally, we'll drive through design to implementation of that new solution–a solution that's rooted in FP.


As we work our way through the course, we'll look at the syntax elements of Java 8 that implement the design in modern Java. Because these ideas are largely new to many programmers, we'll work on several variations of the problems, and several examples of solutions for these, to build a strong familiarity with all the new ideas. Importantly, we'll also mix in discussions about the benefits, how to use these design elements in wider situations, and drive towards a really deep understanding of what's going on.

The course assumes that you're a Java programmer who is comfortable using the essential features of the language.


Topics include:

  • From an OO design pattern to a functional foundation
  • Building more functional concepts
  • Working with Pure Functions
  • Streams API

Skill Level

  • Beginner to Intermediate

Who Should Take This Course


This course addresses several target audiences fitting into the general description of competent mid-level Java programmers who want to improve their skill level, not only with the Java language syntax and libraries, but also with design idioms that work well with modern Java. Candidates for the Oracle Certified Java SE8 Professional exam are also particularly, though not exclusively, appropriate.


Course Requirements


The intended audience has Java programming language competence at least equivalent to someone who has passed the Oracle Certified Java SE8 Associate exam.


Table of Contents


Lesson 1: From an OO design pattern to a functional foundation
Lesson 2: Building more functional concepts
Lesson 3: The power of combinations and modifications
Lesson 4: Working with Pure Functions
Lesson 5: Streams API


About LiveLessons Videos


The LiveLessons Video Training series publishes hundreds of hands-on, expert-led video tutorials covering a wide selection of technology topics designed to teach you the skills you need to succeed. This professional and personal technology video series features world-leading author instructors published by your trusted technology brands: Addison-Wesley, Cisco Press, IBM Press, Pearson IT Certification, Prentice Hall, Sams, and Que. Topics include: IT Certification, Programming, Web Development, Mobile Development, Home & Office Technologies, Business & Management, and more. View All LiveLessons http://www.informit.com/livelessons.

Table of Contents

  1. Introduction
    1. Functional Programming For Java LiveLessons: Introduction 00:03:19
  2. Lesson 1: From an OO design pattern to a functional foundation
    1. Learning objectives 00:00:32
    2. 1.1 Introducing the problem 00:14:03
    3. 1.2 Deeper into the problem 00:05:45
    4. 1.3 Looking at sorting 00:08:27
    5. 1.4 Generalizing the selection mechanism 00:03:33
    6. 1.5 Coding the improved selection 00:11:14
  3. Lesson 2: Building more functional concepts
    1. Learning objectives 00:01:02
    2. 2.1 A question of ownership 00:11:02
    3. 2.2 A question of quantity 00:09:05
    4. 2.3 A question of visibility 00:08:40
    5. 2.4 Simplifying the syntax 00:06:51
    6. 2.5 Reviewing lambda syntax and rules 00:04:20
    7. 2.6 Lambda syntax variations - part 1 00:06:45
    8. 2.7 Lambda syntax variations - part 2 00:05:27
    9. 2.8 The @FunctionalInterface annotation 00:05:03
    10. 2.9 Giving type to a lambda 00:10:58
    11. 2.10 Further generalization 00:10:49
    12. 2.11 Demonstrating generalization 00:04:10
  4. Lesson 3: The power of combinations and modifications
    1. Learning objectives 00:01:16
    2. 3.1 Improving the behavior factories 00:06:37
    3. 3.2 Requirements for closure 00:07:33
    4. 3.3 Another example 00:06:17
    5. 3.4 Combining behaviors - part 1 00:03:55
    6. 3.5 Combining behaviors - part 2 00:12:29
    7. 3.6 Cleaning up the design 00:09:02
    8. 3.7 Interfaces for lambdas 00:11:13
    9. 3.8 Using Predicate in the example 00:04:21
    10. 3.9 Functions adapting functions 00:05:08
    11. 3.10 Coding adapters 00:11:16
  5. Lesson 4: Working with pure functions
    1. Learning objectives 00:01:18
    2. 4.1 Concepts of pure functions 00:09:13
    3. 4.2 Pure functions in practice 00:03:04
    4. 4.3 Planning a pipeline framework 00:02:51
    5. 4.4 Implementing a pipeline framework 00:08:13
    6. 4.5 Internal iteration 00:06:04
    7. 4.6 Making changes - part 1 00:03:27
    8. 4.7 Making changes - part 2 00:07:38
    9. 4.8 Coding immutable data types 00:09:38
    10. 4.9 One-to-many changes 00:11:28
    11. 4.10 Keeping track of boundaries 00:04:42
    12. 4.11 The formal origins of the wrapper 00:02:32
    13. 4.12 Another wrapper 00:10:53
    14. 4.13 Using Optional in the car API 00:05:32
  6. Lesson 5: Streams API
    1. Learning objectives 00:00:51
    2. 5.1 Introducing Streams 00:10:27
    3. 5.2 Streams coding principles 00:16:20
    4. 5.3 Getting a result 00:11:10
    5. 5.4 More flexible ways to a result 00:16:45
    6. 5.5 Looking at concurrency 00:04:30
    7. 5.6 More about concurrency 00:05:31
    8. 5.7 More complex results 00:05:14
    9. 5.8 Collecting to a table 00:06:34
    10. 5.9 Cleaning the results 00:05:56
    11. 5.10 More results processing 00:06:14
    12. 5.11 Designing a bigger example 00:08:08
    13. 5.12 Building a bigger example 00:10:33
    14. 5.13 More Java 8 syntax 00:05:01
    15. 5.14 Coding with method references 00:06:53
    16. Coding with method references Summary 00:01:45
  7. Lesson 6: Advanced patters and exception handling
    1. Learning objectives 00:00:32
    2. 6.1 A hidden problem 00:04:56
    3. 6.2 Two basic solutions 00:03:53
    4. 6.3 Another improvement 00:05:43
    5. 6.4 Generalizing the wrapper 00:08:51
    6. 6.5 Keeping track of the problem 00:10:29
    7. 6.6 Reviewing either 00:01:45
  8. Summary
    1. Functional Programming For Java LiveLessons: Summary 00:01:23