Video description
16+ Hours of Video Instruction
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.
Skill Level
- Intermediate
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
Course Requirements
Students need to know how to
- Download and install the Java JDK and JRE
- Download and install an IDE, such as IntelliJ, NetBeans, Eclipse, or Android Studio
Course Set-up
- An installed copy of the Java JDK and JRE
- An installed copy of IntelliJ, NetBeans, Eclipse, or Android Studio
About Pearson Video Training
Pearson publishes expert-led video tutorials covering a wide selection of technology topics designed to teach you the skills you need to succeed. These professional and personal technology videos feature world-leading author instructors published by your trusted technology brands: Addison-Wesley, Cisco Press, Pearson IT Certification, Sams, and Que. Topics include: IT Certification, Network Security, Cisco Technology, Programming, Web Development, Mobile Development, and more. Learn more about Pearson Video training at http://www.informit.com/video.
Table of contents
- Introduction
- Part 1: Introduction to Java Concurrency and Parallelism
-
Lesson 1: Introduction to Java Concurrency and Parallelism
- Learning objectives
- 1.1 Understand Concurrent Programming Concepts
- 1.2 Recognize How Concurrent Programs are Developed in Java
- 1.3 Understand Parallel Programming Concepts
- 1.4 Recognize How Parallel Programs are Developed in Java
- 1.5 Learn the History of Parallelism and Concurrency in Java
- 1.6 Evaluate the Concurrency and Parallelism Mechanisms in Java
- 1.7 Apply Java Parallelism to Case Study Apps
- Part 2: Java Sequential Functional Programming Foundations
-
Lesson 2: Java Functional Programming
- Learning objectives
- 2.1 Recognizing Java’s Supported Programming Paradigms
- 2.2 Understand Java’s Key Functional Programming Concepts and Features
- 2.3 Recognize How Java Combines Object-Oriented and Functional Programming
- 2.4 Understand Java Lambda Expressions
- 2.5 Understand Java Method References
- 2.6 Understand Java Functional Interfaces: Overview
- 2.7 Understand the Java Predicate Functional Interface
- 2.8 Understand the Java Function Functional Interface
- 2.9 Understand the Java BiFunction Functional Interface
- 2.10 Understand the Java Supplier Functional Interface
- 2.11 Understand the Consumer Java Functional Interface
- 2.12 Understand Other Properties of Java Functional Interfaces
- 2.13 Apply Java Functional Programming Features to ThreadJoinTest Case Study
- 2.14 Apply Java Functional Programming Features to Start and Join Threads
- 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
- Learning objectives
- 3.1 Understand Java Streams: Overview
- 3.2 Understand Java Streams Common Operations
- 3.3 Visualizing Java Streams in Action
- 3.4 Compare Java Sequential vs. Parallel Streams
- 3.5 Recognize Java Streams Benefits
- 3.6 Contrasting Java Streams with Java I/O Streams and Java Collections
- 3.7 Contrasting Java Streams with Other Technologies
- 3.8 Understand the SimpleSearchStream Program
- 3.9 Visualize the WordSearcher.findWords() Method
- 3.10. Recognize Common Java Streams Factory Methods
- 3.11 Recognize Other Java Streams Factory Methods
- 3.12 Understand Java Streams Aggregate Operations
- 3.13 Understand Java Streams Short-Circuit Operations
- 3.14 Understand Java Streams Intermediate Operations map() and mapToInt()
- 3.15 Understand Java Streams Intermediate Operations filter() and flatMap()
- 3.16 Understand Java Streams Intermediate Operations dropWhile() and takeWhile()
- 3.17 Understand Java Streams Terminal Operations
- 3.18 Understand the Java Streams forEach() Terminal Operation
- 3.19 Understand the Java Streams collect() Terminal Operation
- 3.20. Understand the Java Streams reduce() Terminal Operation
- 3.21 Contrast the Java Streams reduce() and collect() Terminal Operations
- 3.22 Visualize WordSearcher.printResults()
- 3.23 Learn How to Implement WordSearcher.printResults()
- 3.24 Visualize WordSearcher.printSuffixSlice()
- 3.25 Learn How to Implement WordSearcher.printSuffixSlice()
- 3.26 Recognize External vs. Internal Iterators in Java
- 3.27 Evaluate External vs. Internal Iterators in Java
-
Lesson 3.b: The Java Sequential Streams Framework: Internals and Advanced Features
- Learning objectives
- 3.28 Understand Java Streams Internals: Splitting and Combining
- 3.29 Understand Java Stream Internals: Construction
- 3.30. Understand Java Stream Internals: Execution
- 3.31 Understand Java Streams Spliterators
- 3.32 Apply Java Streams Spliterators
- 3.33 Understand Java Streams Non-Concurrent Collectors
- 3.34 Understand the Java Streams Non-Concurrent Collector API
- 3.35 Learn How Pre-defined Non-Concurrent Collectors are Implemented
- 3.36 Learn How to Implement Custom Non-Concurrent Collectors
-
Lesson 3.c: The Java Sequential Streams Framework: Case Study and Evaluation
- Learning objectives
- 3.37 Understand the Java Sequential SearchStreamGang Case Study
- 3.38 Understand the Java Sequential SearchStreamGang Object-Oriented Implementation
- 3.39 Visualize Java Sequential SearchStreamGang Hook Methods
- 3.40. Learn How to Implement Java Sequential SearchStreamGang Hook Methods
- 3.41 Visualize the Java Sequential SearchStreamGang printPhrases() Method
- 3.42 Learn How to Implement the Java Sequential SearchStreamGang printPhrases() Method
- 3.43 Learn How to Implement the Java Sequential SearchStreamGang File Input Helper Methods
- 3.44 Apply Spliterator to the Java Sequential SearchStreamGang Case Study (Part 1)
- 3.45 Apply Spliterator to the Java Sequential SearchStreamGang Case Study (Part 2)
- 3.46 Evaluate the Java Sequential SearchStreamGang Case Study
- 3.47 Learn How to Avoid Common Java Streams Programming Mistakes
- Part 3: Java Parallel Functional Programming Frameworks
-
Lesson 4.a: The Java Parallel Streams Framework: Transitioning from Sequential to Parallel Processing
- Learning objectives
- 4.1 Transition to Parallelism and Parallel Streams
- 4.2 Learn How Java Parallel Streams Work “Under the Hood"
- 4.3 Avoid Programming Hazards with Java Parallel Streams
- 4.4 Understand the Java SearchWithParallelStreams Case Study
- 4.5 Visualize Java SearchWithParallelStreams Hook Methods
- 4.6 Learn How to Implement Java SearchWithParallelStreams Hook Methods
- 4.7 Evaluate the Java SearchWithParallelStreams Case Study
-
Lesson 4.b: The Java Parallel Streams Framework: Internals and Advanced Features
- Learning objectives
- 4.8 Understand Java Parallel Stream Internals: Introduction
- 4.9 Understand Java Parallel Stream Internals: Splitting, Combining, and Pooling
- 4.10. Understand Java Parallel Streams Internals: Order of Processing Overview
- 4.11 Understand Java Parallel Stream Internals: Order of Results Overview
- 4.12 Understand Java Parallel Streams Internals: Order of Results for Collections
- 4.13 Understand Java Parallel Streams Internals: Order of Results for Operations
- 4.14 Understand Java Parallel Streams Internals: Partitioning
- 4.15 Understand Java Parallel Streams Internals: Demo’ing Spliterator Performance
- 4.16 Understand Java Parallel Streams Internals: Parallel Processing via Common Fork-Join Pool
- 4.17 Understand Java Parallel Streams Internals: Mapping Onto Common Fork-Join Pool
- 4.18 Understand Java Parallel Streams Internals: Configuring Common Fork-Join Pool
- 4.19 Understand Java Parallel Streams Internals: Demo’ing How to Configure Common Fork-Join Pool
- 4.20. Understand Java Parallel Streams Internals: Combining Results (Part 1)
- 4.21 Understand Java Parallel Streams Internals: Combining Results (Part 2)
- 4.22 Understand Java Parallel Streams Internals: Non-Concurrent and Concurrent Collectors (Part 1)
- 4.23 Understand Java Parallel Streams Internals: Non-Concurrent and Concurrent Collectors (Part 2)
- 4.24 Understand Java Parallel Streams Internals: Demo’ing Collector Performance
-
Lesson 4.c: The Java Parallel Streams Framework: Case Studies and Evaluation
- Learning objectives
- 4.25 Understand the Java SearchWithParallelSpliterator Case Study
- 4.26 Understand the Java SearchWithParallelSpliterator PhraseMatchSpliterator and Fields
- 4.27 Understand the Java SearchWithParallelSpliterator PhraseMatchSpliterator Ctor and tryAdvance() Method
- 4.28 Understand the Java SearchWithParallelSpliterator PhraseMatchSpliterator trySplit() Method
- 4.29 Evaluate the Java SearchWithParallelSpliterator Case Study
- 4.30. Learn When to Use Java Parallel Streams
- 4.31 Learn When Not to Use Java Parallel Streams
- 4.32 Understand the Java Parallel ImageStreamGang Case Study
- 4.33 Understand the Java Parallel ImageStreamGangStructure and Functionality
- 4.34 Visualize the Behaviors of the Java Parallel ImageStreamGang Case Study
- 4.35 Learn How to Implement Behaviors in the Java Parallel ImageStreamGang Case Study
- 4.36 Evaluate the Java Parallel ImageStreamGang Case Study
- 4.37 Evaluate the Benefits of Java Parallel Streams
- 4.38 Evaluate the Limitations of Java Parallel Streams
-
Lesson 5: The Java Fork Join Framework
- Learning objectives
- 5.1 Understandthe Fork-Join Framework
- 5.2 Understand the ForkJoinPool Class in the Java Fork-Join Framework
- 5.3 Understand the ForkJoinTask Class in theJava Fork-Join Framework
- 5.4 Understand subclasses of ForkJoinTaskin the Java Fork-Join Framework
- 5.5 Understand Key Methods in the ForkJoinPool Class
- 5.6 Understand Key Methods in the ForkJoinTask Class
- 5.7 Understand Key Methods in the RecursiveAction andRecursiveTask Classes
- 5.8 Understand Java Fork-Join Framework Internals: Worker Threads
- 5.9 Understand Java Fork-Join Framework Internals: Work Stealing
- 5.10. Understand How the Java Fork-Join Framework Maximizes Utilization with Common Fork-Join Pool
- 5.11 Understand the Java Fork-Join Framework’s Managed Blocker Interface
- 5.12 Understand How to Apply the Java Fork-Join Framework’s Managed Blocker Interface
- 5.13 Understand How to Encapsulate the Java Fork-Join Framework’s Managed Blocker Interface
- 5.14 Evaluate Different Java Fork-Join Framework Programming Models
- 5.15 Evaluate the applyAllIter() Java Fork-Join Framework Programming Model
- 5.16 Evaluate the applyAllSplit() Java Fork-Join Framework Programming Model
- 5.17 Evaluate the applyAllSplitIndex() Java Fork-Join Framework Programming Model
- 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
- Learning objectives
- 6.1 Understand Reactive Programming Principles
- 6.2 Recognize the Structure and Functionality of the Java Completable Futures Framework
- 6.3 Learn How Java Completable Futures Map Onto Reactive Programming Principles
- 6.4 Know the Relationship Between Reactive Programming and Java Reactive Streams
- 6.5 Understand the Pros and Cons of Synchrony
- 6.6 Understand the Pros and Cons of Asynchrony
- 6.7 Understand Java Futures
- 6.8 Visualize Java Futures in Action
- 6.9 Apply Java Futures in Practice
- 6.10. Evaluate the Pros and Cons of Java Futures
- 6.11 Recognize How Java Completable Futures Overcome Limitations of Java Futures
- 6.12 Understand Method Groupings in the Java Completable Futures API
- 6.13 Understand Basic Java CompletableFuture Features
- 6.14 Apply Basic Java CompletableFuture Features
-
Lesson 6.b: The Java Completable Futures Framework: Internals and Advanced Features
- Learning objectives
- 6.15 Understand Advanced Java CompletableFuture Features: Introducing Factory Methods
- 6.16 Understand Advanced Java CompletableFuture Features: Applying Factory Methods
- 6.17 Understand Advanced Java CompletableFuture Features: Factory Method Internals
- 6.18 Understand Advanced Java CompletableFuture Features: Introducing Completion Stage Methods
- 6.19 Understand Advanced Java CompletableFuture Features: Grouping Completion Stage Methods
- 6.20. Understand Advanced Java CompletableFuture Features: Single Stage Completion Methods
- 6.21 Understand Advanced Java CompletableFuture Features: Two Stage Completion Methods (Part 1)
- 6.22 Understand Advanced Java CompletableFuture Features: Two Stage Completion Methods (Part 2)
- 6.23 Understand Advanced Java CompletableFuture Features: Applying Completion Stage Methods
- 6.24 Understand Advanced Java CompletableFuture Features: Handling Runtime Exceptions (Part 1)
- 6.25 Understand Advanced Java CompletableFuture Features: Handling Runtime Exceptions (Part 2)
- 6.26 Understand Advanced Java CompletableFuture Features: Arbitrary-Arity Methods
- 6.27 Understand Advanced Java Completable Future Features: Implementing FuturesCollector
-
Lesson 6.c: The Java Completable Futures Framework: Case Studies and Evaluation
- Learning objectives
- 6.28 Understand the Java Completable Future Image Crawler Case Study (Part 1)
- 6.29 Understand the Java Completable Future Image Crawler Case Study (Part 2)
- 6.30. Understand the Java Completable Future Image Crawler Case Study (Part 3)
- 6.31 Understand the Java Completable Future Image Crawler Case Study (Part 4)
- 6.32 Understand the Java Completable Future ImageStreamGang Case Study
- 6.33 Understand the Java Completable Future ImageStreamGang Case Study: Applying Completable Futures
- 6.34 Understand the Java Completable Future ImageStreamGang Case Study: Applying Factory Methods
- 6.35 Understand the Java Completable Future ImageStreamGang Case Study: Applying Completion Stage Methods (Part 1)
- 6.36 Understand the Java Completable Future ImageStreamGang Case Study: Applying Completion Stage Methods (Part 2)
- 6.37 Understand the Java Completable Future ImageStreamGang Case Study: Applying Arbitrary-Arity Methods
- 6.38 Understand the Java Completable Future ImageStreamGang Case Study: StreamOfFuturesCollector
- 6.39 Evaluate the Pros of the Java Completable Futures Framework
- 6.40. Evaluate the Cons of the Java Completable Futures Framework
- 6.41 Understand Enhancements to the Java Completable Futures Framework
- Summary
Product information
- Title: Parallel Functional Programming with Java LiveLessons
- Author(s):
- Release date: May 2020
- Publisher(s): Pearson
- ISBN: 0136808552
You might also like
video
Functional Programming For Java LiveLessons
7+ Hours of Video Instruction Almost 8 hours teaching Java programmers how to design and create …
book
Functional Programming in Java
Functional Programming in Java teaches Java developers how to incorporate the most powerful benefits of functional …
book
Functional Programming in Java
Get ready to program in a whole new way. Functional Programming in Java will help you …
video
Functional Programming in Java 8
In this Java 8 course for experienced programmers, Martin Kalin introduces constructs such as lambda expressions, …