
Start your mastery of the Java platform with a comprehensive introduction from an experienced software engineer. Explore the fantastic new features Java has to offer and get started.
Explore what Java 8 is and what it brings, including language changes and new API, and provide an overview of the main building blocks and their relationships for mastery.
Compare object-oriented and functional programming as Java 8 blends imperative and declarative styles. Learn to compose functions, use objects, and explore pipelines and streams.
Explore how Java 8 introduces lambda expressions, functional interfaces, streams, optional API, and default methods to enable functional programming and declarative, concise code.
Java 8 introduces functional programming by making functions first class and enabling lambda expressions to pass behavior to methods such as event listeners, comparators, and filters.
Explore lambda expressions by examining syntax: parameters, the arrow operator, and bodies that are single expressions or multiple statements, with optional parameter types inferred by usage.
Explore how Java 8's functional interfaces provide reference types for lambda expressions, define compatible target types, and enable running code with no inputs or returns.
Explore how function descriptors describe lambda types in Java 8, and how compatible functional interfaces, such as binary operator and supplier, determine valid target types for lambdas.
Explore the Java 8 streams API to process collections with a functional, declarative style by chaining intermediate and terminal operations in a lazy, efficient pipeline.
Explore how to build and execute pipelines using the Java streams interface, including map, filter, sort, and terminal operations, with practical examples from collections and maps.
Explore the java 8 optional feature, a type safe way to handle possibly null values without boilerplate checks. Enforce explicit handling of possible values, reducing null pointer errors.
Master the java.util Optional API in Java 8 by creating options with Optional.of, Optional.ofNullable, and Optional.empty; and using isPresent, get, orElse, orElseGet, orElseThrow, map, and pipelines and streams.
Map optional values to new results, filter by ranges, and flatten optionals with flatMap to keep chains clean, functional, and safe from optional nesting in Java 8.
Explore how Java 8 introduces default and static methods in interfaces, enabling utility and instance behaviors without breaking existing code, and how default methods support streaming collections and backward compatibility.
Explore how Java 8 method references replace lambdas in functional contexts, covering static, instance (bound and unbound), and constructor references with practical examples.
Explore how Java 8 concepts come to life through hands-on coding demos in an IDE, using Eclipse and other IDEs to apply the main features in context.
Explore the java.util.function family by examining core interfaces—consumer, supplier, predicate, function, and operator—with emphasis on generics, type-specific variants, and function composition like apply and chaining in streams.
Explore the basics of lambda expressions and functional interfaces, showing how to assign a no-parameter lambda to a void run method and invoke it to print hello.
Mastering Java 8 fundamentals helps you refactor a lambda expression by adapting an existing functional interface to accept an input parameter, ensuring matching function descriptors and parameters.
Explore how a lambda expression can target multiple functional interfaces by sharing the same function descriptor, enabling you to pass a single code block to different interfaces in Java 8.
Explore how to replace a lambda expression with a method reference for a consumer, enabling cleaner code through refactoring.
Explore the consumer functional interface in Java, implementing a lambda that accepts a string input and prints a message like my favorite fruit is pear.
Learn how to use the supplier functional interface with lambda expressions to return values, including empty parentheses and choosing between braces and expression bodies. Contrast supplier with consumer interfaces.
Explore the function functional interface, mapping an input to an output with the apply method. See input type first and output type second, illustrated by an age-to-driving example.
Apply the predicate functional interface in Java 8 using lambdas to evaluate boolean expressions on domain types. Create predicates like retirement age and name initials for a phone directory.
Create simple domain classes for a student and exam, store them in a collection, implement equals and hashCode, and prepare them for processing with the Java 8 stream API.
Process a collection using the streams API to filter students with 70 percent or more, map to names, and collect results into a list with optional sorting and deduplication.
Explore bound and unbound instance method references in Java 8, distinguishing them from static references and constructors, and learn how to apply them using print line examples and functional interfaces.
Learn how to create static method references in Java, using Thread.currentThread as a supplier of a thread, and compare with bound and unbound instance references while previewing constructor references.
Explore constructor method references as a factory to create objects, using the double colon and new keyword to supply instances like Gregorian Calendar via a calendar supplier.
Celebrate finishing the Mastering Java 8 fundamentals course, acknowledge your perseverance, and have fun applying the knowledge as you take it further and delve deeper, and reach out with questions.
Do you want to learn the fundamentals of the Java 8 programming platform? Would you like to be able to understand how to make use of the latest Java 8 functional programming features? Maybe you're on a new project which is based on Java 8 and you'd like a gentle introduction to how the Java 8 platform hangs together?
Then this course is for you!
I take you from knowing nothing about Java 8, assuming just an intermediate level knowledge of Java, and take you through each concept in the Java 8 platform, step by step, from first principles.
In this course you'll be introduced to and come to understand:
What's new in Java 8 (and why you should take notice!)
Lambda Expressions (what they are and how to use them)
Functional Interfaces (why they're important and what role they play)
Function Descriptors (a handy tool for understanding lambdas and functional interfaces)
Method References (the different types and how to use and apply them)
Default Methods (what they are, why they were introduced and where to use them)
Pipelines and Streams (understanding through example)
Optionals and the Optionals API (what they're for and how to use them)
This course is a concise, no-nonsense guide to Java 8 which explains just enough detail so that you can absorb and understand the core concepts and get you up and running, quickly and effectively with coding in Java 8.
I can't wait to teach you all about the exciting features of Java 8 inside! ;)