Modern Java – Learn Java 8 features by coding it

Modern Java – Learn Java 8 features by coding it

English | MP4 | AVC 1280×720 | AAC 48KHz 2ch | 11 Hours | 6.39 GB

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

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.

What you’ll learn

  • 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.
Table of Contents

Getting Started
1 About Course

Why Java 8
2 Why Java 8 is important
3 Imperative vs Declarative Programming – Example 1
4 Imperative vs Declarative Programming – Example 2

WorkSpace Setup – Mac
5 Setting up Java
6 Setting up IntelliJ

WorkSpace Setup – Windows
7 Setting up Java
8 Setting up IntelliJ

Introduction to Lambda
9 What is Lambda
10 Lab Implement Runnable using Lambda
11 Lab Implement Comparator using Lambda

Lambdas and Functional Interfaces
12 Introduction to Functional Interfaces
13 Lab Function – Function Interface- Part 2
14 Lab BiFunction Functional Interface
15 Lab UnaryOperaror and BinaryOperator Functional Interface
16 Lab Supplier – Functional Interface
17 Lab Consumer Functional Interface – Part 1
18 Lab Consumer Functional Interface – Part 2
19 Lab BiConsumer Functional Interface
20 Lab Predicate – Functional Interface – Part 1
21 Lab Predicate – Functional Interface – Part 2
22 Lab Combining Predicate + Consumer
23 Lab BiPredicate
24 Lab Function – Function Interface- Part 1

Constructor and Method References
25 Method Reference
26 Lab Method Reference – Function
27 Lab Method Reference – Consumer
28 Lab Refactor Lambda Expression to Method Reference
29 Constructor Reference

Lambdas and Local variables ( Effectively Final )
30 Lab Local Variables in Lambda Expression
31 Effectively Final Variables in Lambda and its advantages

Streams API
32 Introduction to Streams
33 How Stream API works
34 Comparing Streams vs Collections
35 Lab How to debug Stream Operations

Stream API – Operations
36 Lab Stream Operation – map()
37 Lab Stream Operation – min() using reduce function.
38 Lab Stream Operation – limit() and skip()
39 Lab Stream Operation allMatch(), anyMatch() and noneMatch()
40 Lab Stream Operation – findAny() and findFirst()
41 Streams Short Circuiting Operations
42 Lab Stream Operation – flatMap()
43 Lab Stream Operation – distinct() , count(), sorted()
44 Lab Stream Operation – Customized sort using Comparator
45 Lab Stream Operation – filter()
46 Lab Stream Operation – reduce() – Part 1
47 Lab Stream Operation – reduce() – Part 2
48 Lab Stream Operations – Map + Filter + Reduce Pattern
49 Lab Stream Operation max using reduce() function

Streams API – Factory Methods
50 Lab Streams Operation – of(), iterate(), generate()

Streams API – Numeric Streams
51 Introduction to Numeric Streams
52 Lab NumericStream – range() , rangeClosed(), count(), foreach()
53 Lab NumericStream – sum() , max(), min(), average()
54 Lab NumericStream – Boxing ,Unboxing, mapToInt()
55 Lab NumericStream – mapToObj(), mapToDouble(), maptoLong()

Streams API – Terminal Operations
56 Lab joining()
57 Lab partitioningBy()
58 Lab counting()
59 Lab mapping()
60 Lab minBy() , maxBy() using collect()
61 Lab sum() , avg() using collect()
62 Lab groupingBy() – Type 1
63 Lab groupingBy() – Type 2
64 Lab groupingBy() – Type 3
65 Lab groupingBy() – maxBy(), minBy(), collectingAndThen()

Streams API – Parallel Processing
66 Introduction to Parallel Streams
67 Lab Comparing Performance of Sequential vs Parallel Streams
68 How Parallel Stream works
69 Lab Build a Parallel Stream Pipeline
70 Lab When not to use Parallel Stream – Example 1
71 Lab When not to use Parallel Stream – Part 2

Optional
72 Introduction to Optional
73 Lab Optional empty(), ofNullable(), Of()
74 Lab orElse(), orElseGet() ,orElseThrow()
75 Lab ifPresent(), isPresent()
76 Lab map(), flatMap(), filter() – Part1
77 Lab map(), flatMap(), filter() – Part2

DefaultStatic Methods in Interfaces
78 Introduction to Defaultstatic Methods
79 Lab Default Methods
80 Lab Exploring sort() operations using Comparator – Part 1
81 Lab Exploring sort() operations using Comparator – Part 2
82 Lab Creating an Interface with DefaultStatic methods
83 Abstract Classes vs Interfaces
84 Lab Multiple Inheritance
85 Lab Multiple Inheritance – Resolving Conflicts

New DateTime APIs
86 Introduction to the new DataTime Libraries
87 Lab Instant
88 Lab TimeZones – ZonedDateTime, ZoneId , ZoneOffset
89 Lab TimeZones – Converting Instant,LocalDateTime to ZonedDateTime
90 Lab Converting java.util.Datejava.sql.date to LocalDate
91 Lab Formatparse LocalDate using DateTimeFormatter
92 Lab Formatparse LocalTime using DateTimeFormatter
93 Lab Formatparse LocalDateTime using DateTimeFormatter
94 Lab LocalDate – Create, Get the LocalDate values
95 Lab LocalDate – Modify the LocalDate
96 Lab LocalDate – Additional LocalDate functions
97 Lab LocalTime
98 Lab LocalDateTime – CreateModify LocalDateTime
99 Lab Converting from LocalDateLocalTime to LocalDateTime
100 Lab Comparing Dates – Period
101 Lab Comparing Times – Duration

Bonus Section
102 Bonus Lecture