Modern Java Learn Java 8 Features By Coding It

Tags: Java

Learn Lambdas, Streams , new Date APIs, Optionals and Parallel programming in Java 8 by coding it.

Last updated 2022-01-10 | 4.6

- Learn Functional programming in Java
- Complete understanding of Lambdas
- Streams
- Optional via code.
- Students will be able to implement the new Java 8 concepts in real time

What you'll learn

Learn Functional programming in Java
Complete understanding of Lambdas
Streams
Optional via code.
Students will be able to implement the new Java 8 concepts in real time
Learn to build complex Streams Pipeline.
Learn the new Date/Time Libraries in Java 8
Learn to use Method Reference
Constructor reference syntax.
Learn and understand Parallel Programming with the Streams.
Student will be able to upgrade their Java knowledge with the new Functional Features.
This course will be continuously updated.

* Requirements

* Students should have a basic knowledge about Java.
* Students should have knowledge about IDE such as Eclipse
* Intellij IDEA
* At least Java 8 is needed for this course. Any Java version greater than Java 8 works too

Description

Learn the new Java 8 Features by coding it. This is a pure coding course and you will get a complete understanding of all the Java 8 features by coding it.

Why Should I take this course ?

  • This course will help the Java developers to build their knowledge on the new Java 8 features.

  • All the new features such as Lambdas, Streams , Optionals, Functional Interfaces and Parallel Programming will be explained via code.

  • This course will give you the confidence on implementing new Java 8 features in real Java projects.

  • By the end of this course you will have a complete understanding of new Java 8 functional features.

Course Overview : 

Section 1 - Getting Started:

  • This section explains about what will be covered in this course.

Section 2 - Why Java-8 ?:

  • This section covers Why Java 8 is important?.

  • This section explains about difference between Imperative Programming and Declarative Programming. 

Section 3 - WorkSpace Setup - Mac/Windows:

  • This section covers the installation of Java and IntelliJ in Mac and Windows.

Section 4: Introduction to Lambda

  • This section covers the Why Lambda is needed , Lambdas Syntax and How to implement Lambdas ?

  • Implement the Runnable interface using Lambdas.

  • Implement the Comparator interface using Lambdas.

Section 5: Lambdas and Functional Interfaces

  • This section covers the new Functional Interfaces that got introduced as part of Java 8.

    • Consumer Functional Interface

    • Predicate Functional Interface

    • Function Functional Interface

    • Supplier Functional Interface.

Section 6 : Constructor and Method References

  • This section covers the new Method Reference and the Constructor Reference.

    • How Method Reference simplifies the code.

    • How to use Method reference along with Lambdas.

    • How to use Constructor Reference to create new objects.

Section 7 : Lambdas and Local variables ( Effectively Final )

  • This section covers the local variable and how it should used in Lambdas.

  • Definition of Effectively Final scope of a variable.

Section 8 : Streams API

  • This section covers the Streams API which is one of the important feature that got introduced as part of Java8.

  • How the Stream API Works Internally ?

  • How Collections are different from Streams ?

  • How to debug a Stream ?

Section 9 : Streams API Operations

  • This section covers different Streams API operations that can be used in Streams to achieve an objective.

  • Streams Operations such as :

    • map()

    • flatMap()

    • distinct()

    • count()

    • filter()

    • reducer()

    • Map, Filter and Reduce pattern.

    • max()

    • min()

    • limit()

    • skip()

    • allMatch(), anyMatch() and noneMatch()

    • findAny() and findFirst()

  • Explanation of Stream operations that are Short Circuit operations.

Section 10 : Streams API - Factory Methods

  • This section covers different Streams API factory method that can be used to create Streams.

Section 11: Numeric Streams

  • This section covers the Introduction to Numeric Streams which can be used to perform some numeric related operations.

Section 12: Terminal Operations Streams

  • This section covers different way to collect the data from the Streams Pipeline.

  • Terminal Operations such as :

    • joining()

    • counting()

    • mapping()

    • max(), min()

    • sum()

    • average()

    • groupingBy()

    • partitioningBy()

Section 12: Streams API - Parallel Processing

  • This section covers how to perform the Parallel processing using Streams.

  • How Parallel Programming makes use of the processors in your machine to perform concurrency operations? 

  • How Parallel Programming works internally ?

  • How to check the performance between the sequential and parallel programming ?

  • Scenarios when not to use parallel programming.

Section 12: Optional

  • This section covers What is Optional and the benefits of Optional.

  • How Optional can help you avoid Null Pointer exception.

  • Exploring the different operations that are part of Optional such as :

    • empty()

    • ofNullable()

    • of()

    • orElse()

    • orElseGet()

    • orElseThrow()

    • isPresent()

    • ifPresent()

    • map()

    • flatMap()

    • filter()

Section 12: New Date/Time Libraries

  • This section covers new Date/Time Libraries such as LocalDate, LocalTime, LocalDateTime.

  • How to create/edit the LocalDate,LocalTime and LocalDateTime instances using different approaches.

  • How to find the difference between the LocalDate, LocalTime and LocalDateTime using Period, Duration.

  • How to represent the time in the Machine Readable Format using Instant.

  • How to use the TimeZone using the ZonedDateTime.

  • How to Format the Date using the DateTimeFormatter.

By the end of this course you will have a complete understanding of all the Java 8 features and implement it in real Java projects.

Who this course is for:

  • Anyone willing to learn the new Java Features like Lambdas, Streams, Parallel Programming, New Data Time Libraries and etc.,
  • Java developers who would like to take their knowledge to the next level to write more concise and readable code

Course content

20 sections • 104 lectures

About Course Preview 01:48

This video covers the course objectives, instructor profile and targeted audience.

Why Java 8 is important ? Preview 05:16

In this video I will explain about Why Java8 is necessary and how Java8 is going to help the Java developers ?

Imperative vs Declarative Programming - Example 1 Preview 06:24

In this tutorial we will code a use case to understand the benefits of declarative programming over imperative programming.

Imperative vs Declarative Programming - Example 2 Preview 05:27

In this tutorial we will code a use case to understand the benefits of declarative programming over functional programming.

Setting up Java Preview 02:49

Setting up IntelliJ Preview 02:38

In this tutorial we will download and install IntelliJ in your Mac Machine.

Setting up Java Preview 03:39

In this tutorial we will download and install Java in your windows Machine.

Setting up IntelliJ Preview 02:45

In this tutorial we will download and install IntelliJ in the windows machine.

Source Code Preview 00:01

Source code that's used in this lecture can be found here

What is Lambda ? Preview 02:29

In this tutorial, we will discuss about what is lambda, syntax of lambda and lambda expression.

Lab : Implement Runnable using Lambda Preview 14:21

In this tutorial, we will implement the Runnable interface using Lambda. Compare the Lambda implementation of Runnable with the prior Java 8 Implementation.

Lab : Implement Comparator using Lambda Preview 07:53

In this tutorial, we will implement the Comparator interface using Lambda. Compare the Lambda implementation of Comparator with the prior Java 8 Implementation.

Introduction to Functional Interfaces Preview 02:27

The topics that are covered as part of this section are Introdction to Functional Interfaces and setting up the data that will be used in this section to explore and implement different functional interfaces.

Lab : Consumer Functional Interface - Part 1 Preview 04:30

In this tutorial I will be covering the consumer functional interface via code. Lets code a simple use case as part of this tutorial.

Lab : Consumer Functional Interface - Part 2 Preview 12:43

In this tutorial I will be covering the consumer functional interface via code. Lets code a some real time use cases as part of this tutorial.

Lab : BiConsumer Functional Interface Preview 09:44

In this tutorial I will be covering the BIconsumer functional interface via code. I will explore different use cases to understand where this consumer functional interface can fit in a real world scenario.

Lab : Predicate - Functional Interface - Part 1 Preview 10:09

In this tutorial I will be covering the Predicate Function Interface and explore the default methods of functional interfaces by coding it.

Lab : Predicate - Functional Interface - Part 2 Preview 10:17

In this tutorial I will be covering the Predicate Function Interface and explore the default methods using some real time examples.

Lab : Combining Predicate + Consumer Preview 06:52

In this tutorial I will teach  how to use the predicate and consumer interface together using a real time scenario.

Lab : BiPredicate Preview 03:51

In this tutorial I will be covering the BiPredicate Function Interface and explore the default methods using some real time examples.

Lab : Function - Function Interface- Part 1 Preview 09:31

In this tutorial I will be covering the Function Functional Interface and explore the default methods using some simple examples.

Lab : Function - Function Interface- Part 2 Preview 06:03

In this tutorial I will be covering the Function Functional Interface and explore the default methods using some real time examples.

Lab : BiFunction Functional Interface Preview 05:51

In this tutorial I will be covering the BiFunction Functional Interface and explore the default methods using some real time examples.

Lab : UnaryOperaror and BinaryOperator Functional Interface Preview 08:37

In this tutorial I will be covering the Unary and BinaryOperator Functional Interface with some examples.

Lab : Supplier - Functional Interface Preview 04:21

In this tutorial I will be covering the Supplier Functional Interface with some real world examples. 

Method Reference Preview 03:08

In this tutorial I will be covering method references , syntax, advantages and its disadvantages.

Lab : Method Reference - Function Preview 03:28

In this tutorial I will be explaining the method references using some real world examples.

Lab : Method Reference - Consumer Preview 04:11

In this tutorial I will be explaining the method references and implement using Consumer Functional Interface.

Lab : Refactor Lambda Expression to Method Reference Preview 05:09

In this tutorial I will be explaining the method references and implement using Predicate Functional Interface.

Constructor Reference Preview 04:50

In this tutorial I will be covering the constructor references and uses cases to use and apply constructor reference. 

Lab : Local Variables in Lambda Expression Preview 06:10

In this tutorial we will talk about the lambdas and the restrictions of using local variables inside the lambda expression.

Effectively Final Variables in Lambda and its advantages Preview 01:28

In this tutorial I will be covering the definition of effectively final and its advantages.

Introduction to Streams Preview 10:53

In this tutorial I will be be covering the introduction to streams and implement a use case using streams api.

How Stream API works ? Preview 06:25

In this tutorial, I will walk you through the internal working of Stream API.

Comparing Streams vs Collections Preview 06:58

In this tutorial, I will be comparing the streams API with collection and highlight some of the key differences.

Lab : How to debug Stream Operations? Preview 04:55

In this tutorial I will be be how to debug a Stream operations using peek method.

Lab : Stream Operation - map() Preview 08:21

In this tutorial we will code and learn the map operation using Streams API.

Lab : Stream Operation - flatMap() Preview 06:27

In this tutorial we will code and learn the flatmap operation using Streams API.

Lab : Stream Operation - distinct() , count(), sorted() Preview 05:35

In this tutorial we will code and learn distinct , count and sort  operations using Streams API.

Lab : Stream Operation - Customized sort using Comparator Preview 07:43

In this tutorial we will code and learn how to sort using customized implementations of Sort in Streams API.

Lab : Stream Operation - filter() Preview 05:39

In this tutorial we will code and learn how to perform filter operations using Streams API.

Lab : Stream Operation - reduce() - Part 1 Preview 12:39

In this tutorial we will code and learn how to perform reduce operations using Streams API.

Lab : Stream Operation - reduce() - Part 2 Preview 05:37

In this tutorial we will code and learn how to perform reduce operations using Streams API.

Lab : Stream Operations - Map + Filter + Reduce Pattern Preview 08:52

In this tutorial we will code and implement the MapFilterReduce Pattern using Streams API.

Lab : Stream Operation : max using reduce() function Preview 10:13

In this tutorial we will code and learn about how to perform the max operation on a stream of Integers.

Lab : Stream Operation - min() using reduce function. Preview 05:01

In this tutorial we will code and learn the min operations using Streams API

Lab : Stream Operation - limit() and skip() Preview 07:07

In this tutorial we will code and learn the limit and skip operations using Streams API

Lab : Stream Operation allMatch(), anyMatch() and noneMatch() Preview 06:25

In this tutorial we will code and learn the allMatch(),anyMatch() and noneMatch() operations using Streams API.

Lab : Stream Operation - findAny() and findFirst() Preview 08:03

In this tutorial we will code and learn the findAny() and findFirst() operations using Streams API.

Streams: Short Circuiting Operations Preview 03:41

In this tutorial I will explain about the short circuit functions of the Streams API.

Lab : Streams Operation - of(), iterate(), generate() Preview 07:44

In this tutorial we will code and learn about of(), iterate() and generate() function in the Streams API.

Introduction to Numeric Streams Preview 06:00

In this tutorial I will give you a quick introduction to Numeric Streams and code a simple example.

Lab : NumericStream - range() , rangeClosed(), count(), foreach() Preview 06:20

In this tutorial we will code and explore the range(), rangeclosed(), count() and foreach() function in IntStream.

Lab : NumericStream - sum() , max(), min(), average() Preview 06:24

In this tutorial we will code and explore the sum, max, min  and average.

Lab : NumericStream - Boxing ,Unboxing, mapToInt() Preview 06:42

In this tutorial we will code and explore boxing and Unboxing the using IntStream.

Lab : NumericStream - mapToObj(), mapToDouble(), maptoLong() Preview 05:51

In this tutorial we will code and explore the maptoObj(), maptoInt() and maptoDouble() functions.

Lab : joining() Preview 06:01

In this tutorial we will code and learn about the joining operation using collect.

Lab : counting() Preview 03:07

In this tutorial we will code and learn about the counting() operation using collect().

Lab : mapping() Preview 03:49

In this tutorial we will code and learn about the mapping function using the collect().

Lab : minBy() , maxBy() using collect() Preview 04:28

In this tutorial we will code and explore the minBy() and maxBy() operations that can be used in the collect method.

Lab : sum() , avg() using collect() Preview 04:13

In this tutorial we will code and explore the sum() and average() operations that can be used in the collect method.

Lab : groupingBy() - Type 1 Preview 07:43

In this tutorial we will code and explore the groupBy() using one argument parameter.

Lab : groupingBy() - Type 2 Preview 06:48

In this tutorial we will code and explore the groupBy() using two argument parameter.

Lab : groupingBy() - Type 3 Preview 03:34

In this tutorial we will code and explore the groupBy() using three argument parameter.

Lab : groupingBy() - maxBy(), minBy(), collectingAndThen() Preview 06:04

In this tutorial we will code and explore the maxBy, minBy and collectingAndThen using groupingBy() function

Lab : partitioningBy() Preview 06:03

In this tutorial we will code and explore the partitioningBy() in the collect() operation.

Introduction to Parallel Streams Preview 03:33

In this tutorial we will explore the more interesting topic which is parallelism in Streams.

Lab : Comparing Performance of Sequential vs Parallel Streams Preview 05:43

In this tutorial we are going to compare the performance of sequential and parallel streams.

How Parallel Stream works ? Preview 02:54

In this tutorial I will explain how parallelism is achieved under the hood in Streams API.

Lab : Build a Parallel Stream Pipeline Preview 04:36

In this tutorial we will code and explore the parallelism with a real world example.

Lab : When not to use Parallel Stream - Example 1 Preview 05:38

In this tutorial we will explore when not to use parallel streams.

Lab : When not to use Parallel Stream ? - Part 2 Preview 04:48

In this tutorial we will explore when not to use parallel streams.

Introduction to Optional Preview 12:18

In this tutorial I will give you a quick introduction to Optional and explore Optional with a simple example.

Lab : Optional : empty(), ofNullable(), Of() Preview 06:47

In this tutorial we will explore the empty(), ofNullable() and of() method.

Lab : orElse(), orElseGet() ,orElseThrow() Preview 09:43

In this tutorial we will code and explore the orElse(), orElseGet() and orElseThrow() functions.

Lab : ifPresent(), isPresent() Preview 04:03

In this tutorial we will code and explore the ifPresent() and isPresent() function.

Lab : map(), flatMap(), filter() - Part1 Preview 06:23

In this tutorial we will code and explore the map , flatmap and filter function

Lab : map(), flatMap(), filter() - Part2 Preview 08:47

In this tutorial we will code and explore the flatMap() method.

Introduction to Default/static Methods Preview 02:51

In this tutorial we will code a simple example exploring the default method in the List Interface.

Lab : Default Methods Preview 07:26

In this tutorial we will cover the importance of default/static methods in Interfaces.

Lab : Exploring sort() operations using Comparator - Part 1 Preview 11:22

In this video we will code and explore the sort() operations in List interface using Comparator Interface.

Lab : Exploring sort() operations using Comparator - Part 2 Preview 04:01

In this video we will code and explore the sort() operations in List interface using Comparator Interface.

Lab : Creating an Interface with Default/Static methods Preview 13:24

In this tutorial we will code and explore the default method by coding an use case.

Abstract Classes vs Interfaces Preview 01:06

In this tutorial we will explore the differences between abstract classes and interfaces with the introduction of default methods.

Lab : Multiple Inheritance Preview 07:57

In this tutorial we will code and explore the default method by coding an use case.

Lab : Multiple Inheritance - Resolving Conflicts Preview 02:47

In this tutorial we will code and explore the issue that might occur with multiple inheritance and how to resolve them.

Introduction to the new Data/Time Libraries Preview 06:10

In this tutorial I will give you all a quick introduction to new Time related libraries that got introduced as part of Java 8.

Lab : LocalDate - Create, Get the LocalDate values Preview 07:18

In this tutorial we will code and explore the different operations that can be performed using local date.

Lab : LocalDate - Modify the LocalDate Preview 06:52

In this tutorial we will code and explore the different operations that can be performed using local date.

Lab : LocalDate - Additional LocalDate functions Preview 08:13

In this tutorial we will code and explore the different operations that can be performed using local date.

Lab : LocalTime Preview 15:35

In this tutorial we will code and explore the different operations that can be performed using local time.

Lab : LocalDateTime - Create/Modify LocalDateTime Preview 09:39

In this tutorial we will code and explore the different operations that can be performed using local date time.

Lab : Converting from LocalDate/LocalTime to LocalDateTime Preview 05:11

In this tutorial we will code and explore the approaches to convert LocalDate, LocalTime to LocalDateTime and vice versa.

Lab : Comparing Dates - Period Preview 11:00

In this tutorial we will code and explore the Period Time API.

Lab : Comparing Times - Duration Preview 07:51

In this tutorial we will code and explore the Duration Time API.

Lab : Instant Preview 06:15

In this tutorial we will code and explore the Instant Time API.

Lab : TimeZones - ZonedDateTime, ZoneId , ZoneOffset Preview 15:51

In this tutorial we will code and explore the zone specific examples using ZonedDateTime, ZoneId and ZoneOffset.

Lab : TimeZones - Converting Instant,LocalDateTime to ZonedDateTime Preview 05:55

In this tutorial we will code and explore how to convert Instant, LocalDateTime to Zoned Date Time.

Lab : Converting java.util.Date/java.sql.date to LocalDate Preview 08:21

In this tutorial we will code and explore how to convert from java.util.Date/java.sql.Date to LocalDate.

Lab : Format/parse LocalDate using DateTimeFormatter Preview 14:52

In this tutorial we will code and explore how to format and parse LocalDate.

Lab : Format/parse LocalTime using DateTimeFormatter Preview 08:42

In this tutorial we will code and explore how to format and parse LocalTime.

Lab : Format/parse LocalDateTime using DateTimeFormatter Preview 09:27

In this tutorial we will code and explore how to format and parse LocalDateTime.

What's Next? - Learn Parallel and Asynchronous Programming using Functional APIs Preview 00:20