Table of Contents
-
Course Summary
-
Course Topics
-
Course Objectives
-
Recommended Background
-
Java Source Code
-
Facebook Group
-
Additional Resources
-
About the Instructor
Course Summary
My Parallel
Functional Programming in Java LiveLessons video series 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, you'll 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.
To help you program high-quality quality and scalable parallel
functional programs in Java, this
course provides over 16 hours of videos that focus on the
pattern-oriented techniques, tools, and methods covered in the
following parts:
- Part 1: Introduction to Java Concurrency and Parallelism
- Part 2: Java Sequential Functional Programming Foundations
- Part 3: Java Parallel Functional Programming Frameworks
Course Topics
The Table of Contents for this course is available at the bottom of
the page here.
The following is a summary of the key topics covered in this course:
- Part 1: Introduction to Java Concurrency and Parallelism
This part of the course gives an introduction to Java concurrency and
parallelism concepts and mechanisms.
- Part 2: Java Sequential Functional Programming Foundations
This part of the course covers Java functional programming features
(such as lambda expressions, method references, and functional
interfaces) and the Java sequential streams framework features (such
as intermediate and terminal operations). The source code of Java
sequential streams internals, examples, and case studies are analyzed
in detail.
- Part 3: Java Parallel Functional Programming Frameworks
This part of the course covers Java parallel functional programming
features (such as the Java parallel streams and fork-join frameworks)
and Java's support for asynchronous programming (such as the Java
completable futures framework). Again, the source code of Java
sequential streams internals, examples, and case studies are analyzed
in detail.
Course Objectives
Upon completing this course, students will be able 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
Recommended Background
This course 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
More coverage of these background topics is available in my numerous
digital
learning offerings.
Java Source Code
The Java source code for all the examples is available here.
These examples been tested in Eclipse, Intellij, and/or Android Studio
and should be straightforward to port it to other Java environments,
as well. Suggestions for improvement are welcome (especially if they
are accompanied with updates to the source code).
Facebook Group
There's a Facebook
group on Concurrent and Parallel Programming in Java. Feel free
to post questions and comments on that group.
Additional Resources
The following are other online sources of material on concurrent and
parallel programming in Java:
About the Instructor
Back to Douglas
C. Schmidt's LiveLessons page.