Parallel Functional Programming with Java LiveLessons

Parallel Functional Programming with Java LiveLessons

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 183 Lessons (14h 48m) | 3.78 GB

Parallel Functional Programming in Java LiveLessons describes by example how to apply Java functional programming features and frameworks to alleviate the complexity of developing software that can run efficiently and scalably on multi-core and distributed-core processors.

In this course, learn how to develop programs using powerful object-oriented and functional programming language features and frameworks supported by Java. This course first provides an introduction to Javas foundational functional programming features, including lambda expressions, method references, and functional interfaces. These core features provide the foundation for the next topic in this course: the Javas Streams framework, which supports functional-style sequential and parallel operations on streams of elements, such as map-reduce transformations on Java collections.

This course also shows by example how to develop efficient reactive programs that run scalably on multi-core processors using powerful object-oriented and functional programming language features and parallelism frameworks supported by Java. This portion of the course describes how Java leverages its functional programming features to create the completable futures framework. This framework defines a powerful reactive programming model that allows programmers to run multiple asynchronous operations concurrently in one or more pools of threads and process their results asynchronously with respect to other operations in a program.

Learn How To

  • Develop efficient parallel and reactive programs using powerful modern Java object-oriented and functional programming language features and frameworks
  • Recognize the inherent and accidental complexities involved with developing parallel and reactive software for modern Java clients and servers
  • Understand how common software patterns and modern Java parallel and reactive programming mechanisms can and cannot help to alleviate this complexity
  • Know where to find additional sources of information on how to successfully develop robust parallel and reactive programs in modern Java

Who Should Take This Course

This training is intended for software developers who are familiar with

  • General object-oriented and functional design/programming concepts, such as encapsulation, abstraction, polymorphism, extensibility, and the Unified Modeling Language (UML)
  • Core object-oriented programming language features, such as classes, inheritance, dynamic binding, and generics that are available in Java
Table of Contents

Introduction
1 Parallel Functional Programming with Java LiveLessons (Video Training): Introduction

Part 1: Introduction to Java Concurrency and Parallelism
2 Part 1: Introduction

Lesson 1: Introduction to Java Concurrency and Parallelism
3 Learning objectives
4 1.1 Understand Concurrent Programming Concepts
5 1.2 Recognize How Concurrent Programs are Developed in Java
6 1.3 Understand Parallel Programming Concepts
7 1.4 Recognize How Parallel Programs are Developed in Java
8 1.5 Learn the History of Parallelism and Concurrency in Java
9 1.6 Evaluate the Concurrency and Parallelism Mechanisms in Java
10 1.7 Apply Java Parallelism to Case Study Apps

Part 2: Java Sequential Functional Programming Foundations
11 Part 2: Introduction

Lesson 2: Java Functional Programming
12 Learning objectives
13 2.1 Recognizing Java’s Supported Programming Paradigms
14 2.2 Understand Java’s Key Functional Programming Concepts and Features
15 2.3 Recognize How Java Combines Object-Oriented and Functional Programming
16 2.4 Understand Java Lambda Expressions
17 2.5 Understand Java Method References
18 2.6 Understand Java Functional Interfaces: Overview
19 2.7 Understand the Java Predicate Functional Interface
20 2.8 Understand the Java Function Functional Interface
21 2.9 Understand the Java BiFunction Functional Interface
22 2.10 Understand the Java Supplier Functional Interface
23 2.11 Understand the Consumer Java Functional Interface
24 2.12 Understand Other Properties of Java Functional Interfaces
25 2.13 Apply Java Functional Programming Features to ThreadJoinTest Case Study
26 2.14 Apply Java Functional Programming Features to Start and Join Threads
27 2.15 Evaluate the Pros and Cons of Applying Java Functional Programming Features

Lesson 3.a: The Java Sequential Streams Framework: Overview and Core Features
28 Learning objectives
29 3.1 Understand Java Streams: Overview
30 3.2 Understand Java Streams Common Operations
31 3.3 Visualizing Java Streams in Action
32 3.4 Compare Java Sequential vs. Parallel Streams
33 3.5 Recognize Java Streams Benefits
34 3.6 Contrasting Java Streams with Java I/O Streams and Java Collections
35 3.7 Contrasting Java Streams with Other Technologies
36 3.8 Understand the SimpleSearchStream Program
37 3.9 Visualize the WordSearcher.findWords() Method
38 3.10. Recognize Common Java Streams Factory Methods
39 3.11 Recognize Other Java Streams Factory Methods
40 3.12 Understand Java Streams Aggregate Operations
41 3.13 Understand Java Streams Short-Circuit Operations
42 3.14 Understand Java Streams Intermediate Operations map() and mapToInt()
43 3.15 Understand Java Streams Intermediate Operations filter() and flatMap()
44 3.16 Understand Java Streams Intermediate Operations dropWhile() and takeWhile()
45 3.17 Understand Java Streams Terminal Operations
46 3.18 Understand the Java Streams forEach() Terminal Operation
47 3.19 Understand the Java Streams collect() Terminal Operation
48 3.20. Understand the Java Streams reduce() Terminal Operation
49 3.21 Contrast the Java Streams reduce() and collect() Terminal Operations
50 3.22 Visualize WordSearcher.printResults()
51 3.23 Learn How to Implement WordSearcher.printResults()
52 3.24 Visualize WordSearcher.printSuffixSlice()
53 3.25 Learn How to Implement WordSearcher.printSuffixSlice()
54 3.26 Recognize External vs. Internal Iterators in Java
55 3.27 Evaluate External vs. Internal Iterators in Java

Lesson 3.b: The Java Sequential Streams Framework: Internals and Advanced Features
56 Learning objectives
57 3.28 Understand Java Streams Internals: Splitting and Combining
58 3.29 Understand Java Stream Internals: Construction
59 3.30. Understand Java Stream Internals: Execution
60 3.31 Understand Java Streams Spliterators
61 3.32 Apply Java Streams Spliterators
62 3.33 Understand Java Streams Non-Concurrent Collectors
63 3.34 Understand the Java Streams Non-Concurrent Collector API
64 3.35 Learn How Pre-defined Non-Concurrent Collectors are Implemented
65 3.36 Learn How to Implement Custom Non-Concurrent Collectors

Lesson 3.c: The Java Sequential Streams Framework: Case Study and Evaluation
66 Learning objectives
67 3.37 Understand the Java Sequential SearchStreamGang Case Study
68 3.38 Understand the Java Sequential SearchStreamGang Object-Oriented Implementation
69 3.39 Visualize Java Sequential SearchStreamGang Hook Methods
70 3.40. Learn How to Implement Java Sequential SearchStreamGang Hook Methods
71 3.41 Visualize the Java Sequential SearchStreamGang printPhrases() Method
72 3.42 Learn How to Implement the Java Sequential SearchStreamGang printPhrases() Method
73 3.43 Learn How to Implement the Java Sequential SearchStreamGang File Input Helper Methods
74 3.44 Apply Spliterator to the Java Sequential SearchStreamGang Case Study (Part 1)
75 3.45 Apply Spliterator to the Java Sequential SearchStreamGang Case Study (Part 2)
76 3.46 Evaluate the Java Sequential SearchStreamGang Case Study
77 3.47 Learn How to Avoid Common Java Streams Programming Mistakes

Part 3: Java Parallel Functional Programming Frameworks
78 Part 3: Introduction

Lesson 4.a: The Java Parallel Streams Framework: Transitioning from Sequential to Parallel Processing
79 Learning objectives
80 4.1 Transition to Parallelism and Parallel Streams
81 4.2 Learn How Java Parallel Streams Work “Under the Hood”
82 4.3 Avoid Programming Hazards with Java Parallel Streams
83 4.4 Understand the Java SearchWithParallelStreams Case Study
84 4.5 Visualize Java SearchWithParallelStreams Hook Methods
85 4.6 Learn How to Implement Java SearchWithParallelStreams Hook Methods
86 4.7 Evaluate the Java SearchWithParallelStreams Case Study

Lesson 4.b: The Java Parallel Streams Framework: Internals and Advanced Features
87 Learning objectives
88 4.8 Understand Java Parallel Stream Internals: Introduction
89 4.9 Understand Java Parallel Stream Internals: Splitting, Combining, and Pooling
90 4.10. Understand Java Parallel Streams Internals: Order of Processing Overview
91 4.11 Understand Java Parallel Stream Internals: Order of Results Overview
92 4.12 Understand Java Parallel Streams Internals: Order of Results for Collections
93 4.13 Understand Java Parallel Streams Internals: Order of Results for Operations
94 4.14 Understand Java Parallel Streams Internals: Partitioning
95 4.15 Understand Java Parallel Streams Internals: Demo’ing Spliterator Performanc
96 4.16 Understand Java Parallel Streams Internals: Parallel Processing via Common Fork-Join Pool
97 4.17 Understand Java Parallel Streams Internals: Mapping Onto Common Fork-Join Pool
98 4.18 Understand Java Parallel Streams Internals: Configuring Common Fork-Join Pool
99 4.19 Understand Java Parallel Streams Internals: Demo’ing How to Configure Common Fork-Join Pool
100 4.20. Understand Java Parallel Streams Internals: Combining Results (Part 1)
101 4.21 Understand Java Parallel Streams Internals: Combining Results (Part 2)
102 4.22 Understand Java Parallel Streams Internals: Non-Concurrent and Concurrent Collectors (Part 1)
103 4.23 Understand Java Parallel Streams Internals: Non-Concurrent and Concurrent Collectors (Part 2)
104 4.24 Understand Java Parallel Streams Internals: Demo’ing Collector Performance

Lesson 4.c: The Java Parallel Streams Framework: Case Studies and Evaluation
105 Learning objectives
106 4.25 Understand the Java SearchWithParallelSpliterator Case Study
107 4.26 Understand the Java SearchWithParallelSpliterator PhraseMatchSpliterator and Fields
108 4.27 Understand the Java SearchWithParallelSpliterator PhraseMatchSpliterator Ctor and tryAdvance() Method
109 4.28 Understand the Java SearchWithParallelSpliterator PhraseMatchSpliterator trySplit() Method
110 4.29 Evaluate the Java SearchWithParallelSpliterator Case Study
111 4.30. Learn When to Use Java Parallel Streams
112 4.31 Learn When Not to Use Java Parallel Streams
113 4.32 Understand the Java Parallel ImageStreamGang Case Study
114 4.33 Understand the Java Parallel ImageStreamGangStructure and Functionality
115 4.34 Visualize the Behaviors of the Java Parallel ImageStreamGang Case Study
116 4.35 Learn How to Implement Behaviors in the Java Parallel ImageStreamGang Case Study
117 4.36 Evaluate the Java Parallel ImageStreamGang Case Study
118 4.37 Evaluate the Benefits of Java Parallel Streams
119 4.38 Evaluate the Limitations of Java Parallel Streams

Lesson 5: The Java Fork Join Framework
120 Learning objectives
121 5.1 Understandthe Fork-Join Framework
122 5.2 Understand the ForkJoinPool Class in the Java Fork-Join Framework
123 5.3 Understand the ForkJoinTask Class in theJava Fork-Join Framework
124 5.4 Understand subclasses of ForkJoinTaskin the Java Fork-Join Framework
125 5.5 Understand Key Methods in the ForkJoinPool Clas
126 5.6 Understand Key Methods in the ForkJoinTask Class
127 5.7 Understand Key Methods in the RecursiveAction andRecursiveTask Classes
128 5.8 Understand Java Fork-Join Framework Internals: Worker Threads
129 5.9 Understand Java Fork-Join Framework Internals: Work Stealing
130 5.10. Understand How the Java Fork-Join Framework Maximizes Utilization with Common Fork-Join Pool
131 5.11 Understand the Java Fork-Join Framework’s Managed Blocker Interface
132 5.12 Understand How to Apply the Java Fork-Join Framework’s Managed Blocker Interface
133 5.13 Understand How to Encapsulate the Java Fork-Join Framework’s Managed Blocker Interface
134 5.14 Evaluate Different Java Fork-Join Framework Programming Models
135 5.15 Evaluate the applyAllIter() Java Fork-Join Framework Programming Model
136 5.16 Evaluate the applyAllSplit() Java Fork-Join Framework Programming Model
137 5.17 Evaluate the applyAllSplitIndex() Java Fork-Join Framework Programming Model
138 5.18 Compare and Contrast All the Java Fork-Join Framework Programming Models

Lesson 6.a: The Java Completable Futures Framework: Overview and Core Features
139 Learning objectives
140 6.1 Understand Reactive Programming Principles
141 6.2 Recognize the Structure and Functionality of the Java Completable Futures Framework
142 6.3 Learn How Java Completable Futures Map Onto Reactive Programming Principles
143 6.4 Know the Relationship Between Reactive Programming and Java Reactive Streams
144 6.5 Understand the Pros and Cons of Synchrony
145 6.6 Understand the Pros and Cons of Asynchrony
146 6.7 Understand Java Futures
147 6.8 Visualize Java Futures in Action
148 6.9 Apply Java Futures in Practice
149 6.10. Evaluate the Pros and Cons of Java Futures
150 6.11 Recognize How Java Completable Futures Overcome Limitations of Java Futures
151 6.12 Understand Method Groupings in the Java Completable Futures API
152 6.13 Understand Basic Java CompletableFuture Features
153 6.14 Apply Basic Java CompletableFuture Features

Lesson 6.b: The Java Completable Futures Framework: Internals and Advanced Features
154 Learning objectives
155 6.15 Understand Advanced Java CompletableFuture Features: Introducing Factory Methods
156 6.16 Understand Advanced Java CompletableFuture Features: Applying Factory Methods
157 6.17 Understand Advanced Java CompletableFuture Features: Factory Method Internals
158 6.18 Understand Advanced Java CompletableFuture Features: Introducing Completion Stage Methods
159 6.19 Understand Advanced Java CompletableFuture Features: Grouping Completion Stage Methods
160 6.20. Understand Advanced Java CompletableFuture Features: Single Stage Completion Methods
161 6.21 Understand Advanced Java CompletableFuture Features: Two Stage Completion Methods (Part 1)
162 6.22 Understand Advanced Java CompletableFuture Features: Two Stage Completion Methods (Part 2)
163 6.23 Understand Advanced Java CompletableFuture Features: Applying Completion Stage Methods
164 6.24 Understand Advanced Java CompletableFuture Features: Handling Runtime Exceptions (Part 1)
165 6.25 Understand Advanced Java CompletableFuture Features: Handling Runtime Exceptions (Part 2)
166 6.26 Understand Advanced Java CompletableFuture Features: Arbitrary-Arity Methods
167 6.27 Understand Advanced Java Completable Future Features: Implementing FuturesCollector

Lesson 6.c: The Java Completable Futures Framework: Case Studies and Evaluation
168 Learning objectives
169 6.28 Understand the Java Completable Future Image Crawler Case Study (Part 1)
170 6.29 Understand the Java Completable Future Image Crawler Case Study (Part 2)
171 6.30. Understand the Java Completable Future Image Crawler Case Study (Part 3)
172 6.31 Understand the Java Completable Future Image Crawler Case Study (Part 4)
173 6.32 Understand the Java Completable Future ImageStreamGang Case Study
174 6.33 Understand the Java Completable Future ImageStreamGang Case Study: Applying Completable Futures
175 6.34 Understand the Java Completable Future ImageStreamGang Case Study: Applying Factory Methods
176 6.35 Understand the Java Completable Future ImageStreamGang Case Study: Applying Completion Stage Methods (Part 1)
177 6.36 Understand the Java Completable Future ImageStreamGang Case Study: Applying Completion Stage Methods (Part 2)
178 6.37 Understand the Java Completable Future ImageStreamGang Case Study: Applying Arbitrary-Arity Methods
179 6.38 Understand the Java Completable Future ImageStreamGang Case Study: StreamOfFuturesCollector
180 6.39 Evaluate the Pros of the Java Completable Futures Framework
181 6.40. Evaluate the Cons of the Java Completable Futures Framework
182 6.41 Understand Enhancements to the Java Completable Futures Framework

Summary
183 Parallel Functional Programming with Java LiveLessons (Video Training): Summary

Homepage