4.41 out of 5
4.41
2211 reviews on Udemy

Modern Java – Learn Java 8 features by coding it

Learn Lambdas, Streams , new Date APIs, Optionals and Parallel programming in Java 8 by coding it.
Instructor:
Dilip S
11,175 students enrolled
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.

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.

Getting Started

1
About Course

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

Slides for the course

1
Slides

Why Java 8 ?

1
Why Java 8 is important ?

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

2
Imperative vs Declarative Programming - Example 1

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

3
Imperative vs Declarative Programming - Example 2

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

WorkSpace Setup - Mac

1
Setting up Java
2
Setting up IntelliJ

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

WorkSpace Setup - Windows

1
Setting up Java

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

2
Setting up IntelliJ

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

Source Code for this Course

1
Source Code

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

Introduction to Lambda

1
What is Lambda ?

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

2
Lab : Implement Runnable using Lambda

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

3
Lab : Implement Comparator using Lambda

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

Lambdas and Functional Interfaces

1
Introduction to Functional Interfaces

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.

2
Lab : Consumer Functional Interface - Part 1

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

3
Lab : Consumer Functional Interface - Part 2

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.

4
Lab : BiConsumer Functional Interface

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.

5
Lab : Predicate - Functional Interface - Part 1

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

6
Lab : Predicate - Functional Interface - Part 2

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

7
Lab : Combining Predicate + Consumer

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

8
Lab : BiPredicate

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

9
Lab : Function - Function Interface- Part 1

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

10
Lab : Function - Function Interface- Part 2

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

11
Lab : BiFunction Functional Interface

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

12
Lab : UnaryOperaror and BinaryOperator Functional Interface

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

13
Lab : Supplier - Functional Interface

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

Constructor and Method References

1
Method Reference

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

2
Lab : Method Reference - Function

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

3
Lab : Method Reference - Consumer

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

4
Lab : Refactor Lambda Expression to Method Reference

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

5
Constructor Reference

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

Lambdas and Local variables ( Effectively Final )

1
Lab : Local Variables in Lambda Expression

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

2
Effectively Final Variables in Lambda and its advantages

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

Streams API

1
Introduction to Streams

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

2
How Stream API works ?

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

3
Comparing Streams vs Collections

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

4
Lab : How to debug Stream Operations?

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

Stream API - Operations

1
Lab : Stream Operation - map()

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

2
Lab : Stream Operation - flatMap()

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

3
Lab : Stream Operation - distinct() , count(), sorted()

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

4
Lab : Stream Operation - Customized sort using Comparator

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

5
Lab : Stream Operation - filter()

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

6
Lab : Stream Operation - reduce() - Part 1

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

7
Lab : Stream Operation - reduce() - Part 2

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

8
Lab : Stream Operations - Map + Filter + Reduce Pattern

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

9
Lab : Stream Operation : max using reduce() function

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

10
Lab : Stream Operation - min() using reduce function.

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

11
Lab : Stream Operation - limit() and skip()

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

12
Lab : Stream Operation allMatch(), anyMatch() and noneMatch()

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

13
Lab : Stream Operation - findAny() and findFirst()

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

14
Streams: Short Circuiting Operations

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

Streams API - Factory Methods

1
Lab : Streams Operation - of(), iterate(), generate()

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

Streams API - Numeric Streams

1
Introduction to Numeric Streams

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

2
Lab : NumericStream - range() , rangeClosed(), count(), foreach()

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

3
Lab : NumericStream - sum() , max(), min(), average()

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

4
Lab : NumericStream - Boxing ,Unboxing, mapToInt()

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

5
Lab : NumericStream - mapToObj(), mapToDouble(), maptoLong()

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

Streams API - Terminal Operations

1
Lab : joining()

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

2
Lab : counting()

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

3
Lab : mapping()

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

4
Lab : minBy() , maxBy() using collect()

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

5
Lab : sum() , avg() using collect()

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

6
Lab : groupingBy() - Type 1

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

7
Lab : groupingBy() - Type 2

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

8
Lab : groupingBy() - Type 3

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

9
Lab : groupingBy() - maxBy(), minBy(), collectingAndThen()

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

10
Lab : partitioningBy()

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

Streams API - Parallel Processing

1
Introduction to Parallel Streams

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

2
Lab : Comparing Performance of Sequential vs Parallel Streams

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

3
How Parallel Stream works ?

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

4
Lab : Build a Parallel Stream Pipeline

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

5
Lab : When not to use Parallel Stream - Example 1

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

6
Lab : When not to use Parallel Stream ? - Part 2

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

Optional

1
Introduction to Optional

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

2
Lab : Optional : empty(), ofNullable(), Of()

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

3
Lab : orElse(), orElseGet() ,orElseThrow()

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

4
Lab : ifPresent(), isPresent()

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

5
Lab : map(), flatMap(), filter() - Part1

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

6
Lab : map(), flatMap(), filter() - Part2

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

Default/Static Methods in Interfaces

1
Introduction to Default/static Methods

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

2
Lab : Default Methods

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

3
Lab : Exploring sort() operations using Comparator - Part 1

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

You can view and review the lecture materials indefinitely, like an on-demand channel.
Definitely! If you have an internet connection, courses on Udemy are available on any device at any time. If you don't have an internet connection, some instructors also let their students download course lectures. That's up to the instructor though, so make sure you get on their good side!
4.4
4.4 out of 5
2211 Ratings

Detailed Rating

Stars 5
995
Stars 4
931
Stars 3
216
Stars 2
38
Stars 1
23
618b2896a71bb3efbf8550b8bcc0328f
30-Day Money-Back Guarantee

Includes

11 hours on-demand video
3 articles
Full lifetime access
Access on mobile and TV
Certificate of Completion