Parallel Functional Programming with Java LiveLessons

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

  1. Introduction
    1. Parallel Functional Programming with Java LiveLessons (Video Training): Introduction
  2. Part 1: Introduction to Java Concurrency and Parallelism
    1. Part 1: Introduction
  3. Lesson 1: Introduction to Java Concurrency and Parallelism
    1. Learning objectives
    2. 1.1 Understand Concurrent Programming Concepts
    3. 1.2 Recognize How Concurrent Programs are Developed in Java
    4. 1.3 Understand Parallel Programming Concepts
    5. 1.4 Recognize How Parallel Programs are Developed in Java
    6. 1.5 Learn the History of Parallelism and Concurrency in Java
    7. 1.6 Evaluate the Concurrency and Parallelism Mechanisms in Java
    8. 1.7 Apply Java Parallelism to Case Study Apps
  4. Part 2: Java Sequential Functional Programming Foundations
    1. Part 2: Introduction
  5. Lesson 2: Java Functional Programming
    1. Learning objectives
    2. 2.1 Recognizing Java’s Supported Programming Paradigms
    3. 2.2 Understand Java’s Key Functional Programming Concepts and Features
    4. 2.3 Recognize How Java Combines Object-Oriented and Functional Programming
    5. 2.4 Understand Java Lambda Expressions
    6. 2.5 Understand Java Method References
    7. 2.6 Understand Java Functional Interfaces: Overview
    8. 2.7 Understand the Java Predicate Functional Interface
    9. 2.8 Understand the Java Function Functional Interface
    10. 2.9 Understand the Java BiFunction Functional Interface
    11. 2.10 Understand the Java Supplier Functional Interface
    12. 2.11 Understand the Consumer Java Functional Interface
    13. 2.12 Understand Other Properties of Java Functional Interfaces
    14. 2.13 Apply Java Functional Programming Features to ThreadJoinTest Case Study
    15. 2.14 Apply Java Functional Programming Features to Start and Join Threads
    16. 2.15 Evaluate the Pros and Cons of Applying Java Functional Programming Features
  6. Lesson 3.a: The Java Sequential Streams Framework: Overview and Core Features
    1. Learning objectives
    2. 3.1 Understand Java Streams: Overview
    3. 3.2 Understand Java Streams Common Operations
    4. 3.3 Visualizing Java Streams in Action
    5. 3.4 Compare Java Sequential vs. Parallel Streams
    6. 3.5 Recognize Java Streams Benefits
    7. 3.6 Contrasting Java Streams with Java I/O Streams and Java Collections
    8. 3.7 Contrasting Java Streams with Other Technologies
    9. 3.8 Understand the SimpleSearchStream Program
    10. 3.9 Visualize the WordSearcher.findWords() Method
    11. 3.10. Recognize Common Java Streams Factory Methods
    12. 3.11 Recognize Other Java Streams Factory Methods
    13. 3.12 Understand Java Streams Aggregate Operations
    14. 3.13 Understand Java Streams Short-Circuit Operations
    15. 3.14 Understand Java Streams Intermediate Operations map() and mapToInt()
    16. 3.15 Understand Java Streams Intermediate Operations filter() and flatMap()
    17. 3.16 Understand Java Streams Intermediate Operations dropWhile() and takeWhile()
    18. 3.17 Understand Java Streams Terminal Operations
    19. 3.18 Understand the Java Streams forEach() Terminal Operation
    20. 3.19 Understand the Java Streams collect() Terminal Operation
    21. 3.20. Understand the Java Streams reduce() Terminal Operation
    22. 3.21 Contrast the Java Streams reduce() and collect() Terminal Operations
    23. 3.22 Visualize WordSearcher.printResults()
    24. 3.23 Learn How to Implement WordSearcher.printResults()
    25. 3.24 Visualize WordSearcher.printSuffixSlice()
    26. 3.25 Learn How to Implement WordSearcher.printSuffixSlice()
    27. 3.26 Recognize External vs. Internal Iterators in Java
    28. 3.27 Evaluate External vs. Internal Iterators in Java
  7. Lesson 3.b: The Java Sequential Streams Framework: Internals and Advanced Features
    1. Learning objectives
    2. 3.28 Understand Java Streams Internals: Splitting and Combining
    3. 3.29 Understand Java Stream Internals: Construction
    4. 3.30. Understand Java Stream Internals: Execution
    5. 3.31 Understand Java Streams Spliterators
    6. 3.32 Apply Java Streams Spliterators
    7. 3.33 Understand Java Streams Non-Concurrent Collectors
    8. 3.34 Understand the Java Streams Non-Concurrent Collector API
    9. 3.35 Learn How Pre-defined Non-Concurrent Collectors are Implemented
    10. 3.36 Learn How to Implement Custom Non-Concurrent Collectors
  8. Lesson 3.c: The Java Sequential Streams Framework: Case Study and Evaluation
    1. Learning objectives
    2. 3.37 Understand the Java Sequential SearchStreamGang Case Study
    3. 3.38 Understand the Java Sequential SearchStreamGang Object-Oriented Implementation
    4. 3.39 Visualize Java Sequential SearchStreamGang Hook Methods
    5. 3.40. Learn How to Implement Java Sequential SearchStreamGang Hook Methods
    6. 3.41 Visualize the Java Sequential SearchStreamGang printPhrases() Method
    7. 3.42 Learn How to Implement the Java Sequential SearchStreamGang printPhrases() Method
    8. 3.43 Learn How to Implement the Java Sequential SearchStreamGang File Input Helper Methods
    9. 3.44 Apply Spliterator to the Java Sequential SearchStreamGang Case Study (Part 1)
    10. 3.45 Apply Spliterator to the Java Sequential SearchStreamGang Case Study (Part 2)
    11. 3.46 Evaluate the Java Sequential SearchStreamGang Case Study
    12. 3.47 Learn How to Avoid Common Java Streams Programming Mistakes
  9. Part 3: Java Parallel Functional Programming Frameworks
    1. Part 3: Introduction
  10. Lesson 4.a: The Java Parallel Streams Framework: Transitioning from Sequential to Parallel Processing
    1. Learning objectives
    2. 4.1 Transition to Parallelism and Parallel Streams
    3. 4.2 Learn How Java Parallel Streams Work “Under the Hood"
    4. 4.3 Avoid Programming Hazards with Java Parallel Streams
    5. 4.4 Understand the Java SearchWithParallelStreams Case Study
    6. 4.5 Visualize Java SearchWithParallelStreams Hook Methods
    7. 4.6 Learn How to Implement Java SearchWithParallelStreams Hook Methods
    8. 4.7 Evaluate the Java SearchWithParallelStreams Case Study
  11. Lesson 4.b: The Java Parallel Streams Framework: Internals and Advanced Features
    1. Learning objectives
    2. 4.8 Understand Java Parallel Stream Internals: Introduction
    3. 4.9 Understand Java Parallel Stream Internals: Splitting, Combining, and Pooling
    4. 4.10. Understand Java Parallel Streams Internals: Order of Processing Overview
    5. 4.11 Understand Java Parallel Stream Internals: Order of Results Overview
    6. 4.12 Understand Java Parallel Streams Internals: Order of Results for Collections
    7. 4.13 Understand Java Parallel Streams Internals: Order of Results for Operations
    8. 4.14 Understand Java Parallel Streams Internals: Partitioning
    9. 4.15 Understand Java Parallel Streams Internals: Demo’ing Spliterator Performance
    10. 4.16 Understand Java Parallel Streams Internals: Parallel Processing via Common Fork-Join Pool
    11. 4.17 Understand Java Parallel Streams Internals: Mapping Onto Common Fork-Join Pool
    12. 4.18 Understand Java Parallel Streams Internals: Configuring Common Fork-Join Pool
    13. 4.19 Understand Java Parallel Streams Internals: Demo’ing How to Configure Common Fork-Join Pool
    14. 4.20. Understand Java Parallel Streams Internals: Combining Results (Part 1)
    15. 4.21 Understand Java Parallel Streams Internals: Combining Results (Part 2)
    16. 4.22 Understand Java Parallel Streams Internals: Non-Concurrent and Concurrent Collectors (Part 1)
    17. 4.23 Understand Java Parallel Streams Internals: Non-Concurrent and Concurrent Collectors (Part 2)
    18. 4.24 Understand Java Parallel Streams Internals: Demo’ing Collector Performance
  12. Lesson 4.c: The Java Parallel Streams Framework: Case Studies and Evaluation
    1. Learning objectives
    2. 4.25 Understand the Java SearchWithParallelSpliterator Case Study
    3. 4.26 Understand the Java SearchWithParallelSpliterator PhraseMatchSpliterator and Fields
    4. 4.27 Understand the Java SearchWithParallelSpliterator PhraseMatchSpliterator Ctor and tryAdvance() Method
    5. 4.28 Understand the Java SearchWithParallelSpliterator PhraseMatchSpliterator trySplit() Method
    6. 4.29 Evaluate the Java SearchWithParallelSpliterator Case Study
    7. 4.30. Learn When to Use Java Parallel Streams
    8. 4.31 Learn When Not to Use Java Parallel Streams
    9. 4.32 Understand the Java Parallel ImageStreamGang Case Study
    10. 4.33 Understand the Java Parallel ImageStreamGangStructure and Functionality
    11. 4.34 Visualize the Behaviors of the Java Parallel ImageStreamGang Case Study
    12. 4.35 Learn How to Implement Behaviors in the Java Parallel ImageStreamGang Case Study
    13. 4.36 Evaluate the Java Parallel ImageStreamGang Case Study
    14. 4.37 Evaluate the Benefits of Java Parallel Streams
    15. 4.38 Evaluate the Limitations of Java Parallel Streams
  13. Lesson 5: The Java Fork Join Framework
    1. Learning objectives
    2. 5.1 Understandthe Fork-Join Framework
    3. 5.2 Understand the ForkJoinPool Class in the Java Fork-Join Framework
    4. 5.3 Understand the ForkJoinTask Class in theJava Fork-Join Framework
    5. 5.4 Understand subclasses of ForkJoinTaskin the Java Fork-Join Framework
    6. 5.5 Understand Key Methods in the ForkJoinPool Class
    7. 5.6 Understand Key Methods in the ForkJoinTask Class
    8. 5.7 Understand Key Methods in the RecursiveAction andRecursiveTask Classes
    9. 5.8 Understand Java Fork-Join Framework Internals: Worker Threads
    10. 5.9 Understand Java Fork-Join Framework Internals: Work Stealing
    11. 5.10. Understand How the Java Fork-Join Framework Maximizes Utilization with Common Fork-Join Pool
    12. 5.11 Understand the Java Fork-Join Framework’s Managed Blocker Interface
    13. 5.12 Understand How to Apply the Java Fork-Join Framework’s Managed Blocker Interface
    14. 5.13 Understand How to Encapsulate the Java Fork-Join Framework’s Managed Blocker Interface
    15. 5.14 Evaluate Different Java Fork-Join Framework Programming Models
    16. 5.15 Evaluate the applyAllIter() Java Fork-Join Framework Programming Model
    17. 5.16 Evaluate the applyAllSplit() Java Fork-Join Framework Programming Model
    18. 5.17 Evaluate the applyAllSplitIndex() Java Fork-Join Framework Programming Model
    19. 5.18 Compare and Contrast All the Java Fork-Join Framework Programming Models
  14. Lesson 6.a: The Java Completable Futures Framework: Overview and Core Features
    1. Learning objectives
    2. 6.1 Understand Reactive Programming Principles
    3. 6.2 Recognize the Structure and Functionality of the Java Completable Futures Framework
    4. 6.3 Learn How Java Completable Futures Map Onto Reactive Programming Principles
    5. 6.4 Know the Relationship Between Reactive Programming and Java Reactive Streams
    6. 6.5 Understand the Pros and Cons of Synchrony
    7. 6.6 Understand the Pros and Cons of Asynchrony
    8. 6.7 Understand Java Futures
    9. 6.8 Visualize Java Futures in Action
    10. 6.9 Apply Java Futures in Practice
    11. 6.10. Evaluate the Pros and Cons of Java Futures
    12. 6.11 Recognize How Java Completable Futures Overcome Limitations of Java Futures
    13. 6.12 Understand Method Groupings in the Java Completable Futures API
    14. 6.13 Understand Basic Java CompletableFuture Features
    15. 6.14 Apply Basic Java CompletableFuture Features
  15. Lesson 6.b: The Java Completable Futures Framework: Internals and Advanced Features
    1. Learning objectives
    2. 6.15 Understand Advanced Java CompletableFuture Features: Introducing Factory Methods
    3. 6.16 Understand Advanced Java CompletableFuture Features: Applying Factory Methods
    4. 6.17 Understand Advanced Java CompletableFuture Features: Factory Method Internals
    5. 6.18 Understand Advanced Java CompletableFuture Features: Introducing Completion Stage Methods
    6. 6.19 Understand Advanced Java CompletableFuture Features: Grouping Completion Stage Methods
    7. 6.20. Understand Advanced Java CompletableFuture Features: Single Stage Completion Methods
    8. 6.21 Understand Advanced Java CompletableFuture Features: Two Stage Completion Methods (Part 1)
    9. 6.22 Understand Advanced Java CompletableFuture Features: Two Stage Completion Methods (Part 2)
    10. 6.23 Understand Advanced Java CompletableFuture Features: Applying Completion Stage Methods
    11. 6.24 Understand Advanced Java CompletableFuture Features: Handling Runtime Exceptions (Part 1)
    12. 6.25 Understand Advanced Java CompletableFuture Features: Handling Runtime Exceptions (Part 2)
    13. 6.26 Understand Advanced Java CompletableFuture Features: Arbitrary-Arity Methods
    14. 6.27 Understand Advanced Java Completable Future Features: Implementing FuturesCollector
  16. Lesson 6.c: The Java Completable Futures Framework: Case Studies and Evaluation
    1. Learning objectives
    2. 6.28 Understand the Java Completable Future Image Crawler Case Study (Part 1)
    3. 6.29 Understand the Java Completable Future Image Crawler Case Study (Part 2)
    4. 6.30. Understand the Java Completable Future Image Crawler Case Study (Part 3)
    5. 6.31 Understand the Java Completable Future Image Crawler Case Study (Part 4)
    6. 6.32 Understand the Java Completable Future ImageStreamGang Case Study
    7. 6.33 Understand the Java Completable Future ImageStreamGang Case Study: Applying Completable Futures
    8. 6.34 Understand the Java Completable Future ImageStreamGang Case Study: Applying Factory Methods
    9. 6.35 Understand the Java Completable Future ImageStreamGang Case Study: Applying Completion Stage Methods (Part 1)
    10. 6.36 Understand the Java Completable Future ImageStreamGang Case Study: Applying Completion Stage Methods (Part 2)
    11. 6.37 Understand the Java Completable Future ImageStreamGang Case Study: Applying Arbitrary-Arity Methods
    12. 6.38 Understand the Java Completable Future ImageStreamGang Case Study: StreamOfFuturesCollector
    13. 6.39 Evaluate the Pros of the Java Completable Futures Framework
    14. 6.40. Evaluate the Cons of the Java Completable Futures Framework
    15. 6.41 Understand Enhancements to the Java Completable Futures Framework
  17. Summary
    1. Parallel Functional Programming with Java LiveLessons (Video Training): Summary

Product information

  • Title: Parallel Functional Programming with Java LiveLessons
  • Author(s): Douglas Schmidt
  • Release date: May 2020
  • Publisher(s): Addison-Wesley Professional
  • ISBN: 0136808552