Functional Programming for Java LiveLessons

Functional Programming for Java LiveLessons

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 7h 36m | 4.02 GB

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.
Table of Contents

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