Books & Videos

Table of Contents

Chapter: Introduction

Learning Modern Java: Introduction

04m 16s

Chapter: Lesson 1: Java with Eclipse: Setup and Getting Started


00m 23s

1.1 Installing Java

11m 34s

1.2 Installing and Using Eclipse

09m 37s


01m 35s

Chapter: Lesson 2: Basic Java Syntax


00m 19s

2.1 Setup, Execution, and Most Basic Syntax

04m 18s

2.2 The + Operator, Array Basics, and Command Line Args

07m 0s

2.3 Loops

05m 21s

2.4 Class Structure and Formatting

06m 16s

2.5 Conditionals

04m 8s

2.6 Strings

01m 54s

2.7 More on Arrays

09m 22s

2.8 Math Routines

06m 59s

2.9 Reading Input

05m 21s


02m 44s

Chapter: Lesson 3: Basic Object-Oriented Programming in Java


00m 38s

3.1 Overview

02m 32s

3.2 Basics

04m 41s

3.3 Instance Variables

07m 49s

3.4 Methods

12m 40s

3.5 Constructors

13m 17s

3.6 Interactive Example: Person Class

14m 1s


01m 40s

Chapter: Lesson 4: Object-Oriented Programming in Java: More Capabilities


00m 32s

4.1 Overloading

04m 50s

4.2 OOP Best Practices: Encapsulation and JavaDoc

32m 29s

4.3 Inheritance

08m 19s

4.4 Inheritance Example: Person Class

08m 7s

4.5 The toString Method

01m 40s


02m 2s

Chapter: Lesson 5: Object-Oriented Programming in Java: Advanced Capabilities


00m 28s

5.1 Sample Problem

01m 5s

5.2 Attempted Problem Solutions

09m 23s

5.3 Abstract Classes

05m 56s

5.4 Interfaces

07m 48s

5.5 @Override

05m 27s

5.6 Visibility Modifiers

05m 47s

5.7 Enums

07m 23s

5.8 JavaDoc Options

05m 24s

5.9 The Classpath

02m 0s


02m 9s

Chapter: Lesson 6: Applets and Basic Graphics


00m 29s

6.1 Motivation

02m 1s

6.2 Security Restrictions

02m 53s

6.3 Basic Applet Structure

08m 33s

6.4 Drawing in Applets: Basics

06m 26s

6.5 The Value of @Override

02m 15s

6.6 Applet Life Cycle Methods

02m 18s

6.7 Other Applet Methods

02m 54s

6.8 Attributes of the HTML Applet Tag

02m 11s

6.9 Applet Parameters: Letting the HTML Author Supply Data

06m 6s

6.10 Drawing in Applets: More Details

03m 53s

6.11 Loading and Drawing Images

07m 13s

6.12 Basic Try/Catch Blocks

04m 31s


01m 45s

Chapter: Lesson 7: More Syntax and Utilities


00m 28s

7.1 Lists

14m 7s

7.2 List Operation Performance

09m 36s

7.3 Using Generic Types

04m 59s

7.4 Autoboxing

03m 52s

7.5 Maps

06m 28s

7.6 Building Genericized Methods and Classes

07m 35s

7.7 The Arrays Utility Class

04m 1s

7.8 printf

10m 29s

7.9 Varargs

02m 57s

7.10 StringBuilder

08m 51s


02m 12s

Chapter: Lesson 8: Unit Testing with JUnit: A Very Brief Introduction


00m 15s

8.1 Static Imports

01m 39s

8.2 JUnit Overview

06m 16s

8.3 Modern Approach

10m 16s

8.4 Traditional Approach

03m 0s


01m 29s

Chapter: Lesson 9: Asynchronous Event Handling


00m 37s

9.1 Overview

02m 53s

9.2 Using Seperate Listener Classes: Basics

02m 38s

9.3 Using Seperate Listener Classes: Drawing

05m 45s

9.4 Implementing a Listener Interface

04m 58s

9.5 Using Named Inner Classes

04m 13s

9.6 Using Anonymous Inner Classes

04m 42s

9.7 Preview: Using Java 8 Lambdas

03m 8s


04m 56s

Chapter: Lesson 10: Multithreaded Programming in Java


00m 28s

10.1 Overview

11m 15s

10.2 Basic Steps for Concurrent Programming

05m 7s

10.3 Approach One: Separate Class that Implements Runnable

09m 41s

10.4 Approach Two: Main App Implements Runnable

06m 32s

10.5 Approach Three: Inner Class that Implements Runnable

05m 6s

10.6 Preview of Approach Four: Lambda Expressions

00m 39s

10.7 Summary of Approaches with Pros and Cons

02m 3s

10.8 Making a Reusable Multithreaded Server: Template

02m 29s

10.9 Race Conditions: Problem

05m 21s

10.10 Race Conditions: Solution

06m 46s

10.11 Helpful Thread-Related Methods

05m 16s

10.12 Brief Summary of Advanced Topics

06m 59s

10.13 Tricky Synchronization Problem

05m 35s


01m 29s

Chapter: Lesson 11: Parallel Programming with the Fork/Join Framework


00m 32s

11.1 Overview

02m 31s

11.2 General Fork/Join Approach

07m 22s

11.3 Aside: Reusable Timing Code

04m 22s

11.4 Summing Large Array of Doubles: Version 1

04m 37s

11.5 Summing Large Array of Doubles Version 1: Verification Step

08m 49s

11.6 Making Reusable Parallel Array Processor

07m 14s

11.7 Summing Large Array of Doubles: Version 2

03m 39s

11.8 Computing Minimum of Expensive Operation

05m 45s

11.9 Generating Large Prime Numbers

07m 16s


03m 7s

Chapter: Lesson 12: Lambda Expressions—Part 1: Basics


00m 37s

12.1 Motivation and Overview

10m 58s

12.2 Lambdas: Most Basic Form

10m 54s

12.3 Type Inferencing

04m 43s

12.4 Expression for Body: Implied Return Values

08m 24s

12.5 Omitting Parens

03m 42s

12.6 Summary: Making Lambdas More Succinct

03m 58s

12.7 Example: Numerical Integration

05m 14s

12.8 Making a Reusable Timing Utility

04m 38s

12.9 A Few More Samples

01m 47s


03m 53s

Chapter: Lesson 13: Lambda Expressions in Java 8—Part 2


00m 40s

13.1 The @FunctionalInterface Annotation

05m 19s

13.2 Method References

24m 7s

13.3 Lambda Variable Scoping in Lambdas

04m 39s

13.4 Effectively Final Local Variables

05m 20s


02m 13s

Chapter: Lesson 14: Lambda Expressions in Java 8—Part 3: Lambda Building Blocks in java.util.function


00m 46s

14.1 Overview: Lambda Building Blocks

08m 46s

14.2 Simply-Typed Building Blocks

04m 58s

14.3 Generic Building Blocks: Predicate

04m 13s

14.4 Generic Building Blocks: Function

08m 47s

14.5 Other Generic Building Blocks

08m 13s


01m 54s

Chapter: Lesson 15: Lambda Expressions in Java 8—Part 4


00m 38s

15.1 Java 8 Interfaces: Static Methods

05m 26s

15.2 Java 8 Interfaces: Default Methods

05m 39s

15.3 Resolving Conflicts with Default Methods

04m 3s

15.4 Higher Order Functions: Methods that Return Functions

02m 18s

15.5 Higher Order Functions in Predicate

04m 46s

15.6 Higher Order Functions in Function

07m 29s

15.7 Higher Order Functions in Consumer

03m 18s

15.8 Higher Order Functions in Your Own Code

04m 17s


04m 40s

Chapter: Lesson 16: Streams in Java 8—Part 1


00m 38s

16.1 Overview of Streams

11m 27s

16.2 Getting Standard Data Structures into and out of Streams

11m 38s

16.3 Core Stream Methods: Overview

06m 22s

16.4 forEach: Calling a Lambda on Each Element of a Stream

09m 13s

16.5 map: Transforming a Stream by Passing Each Element through a Function

07m 34s

16.6 filter: Keeping Only the Elements that Pass a Predicate

04m 5s

16.7 findFirst: Returning the First Element of a Stream while Short-Circuiting Earlier Operations

10m 44s

16.8 Lazy Evaluation

09m 7s


02m 32s

Chapter: Lesson 17: Streams in Java 8—Part 2


00m 40s

17.1 Operations that Limit the Stream Size: limit, skip

02m 16s

17.2 Operations that Use Comparisons: sorted, min, max, distinct

05m 39s

17.3 Operations that Check Matches: allMatch, anyMatch, noneMatch, count

02m 38s

17.4 Number-Specialized Streams

08m 0s

17.5 The reduce Method and Related Reduction Operations

08m 59s


02m 20s

Chapter: Lesson 18: Streams in Java 8—Part 3


00m 47s

18.1 Grouping Stream Elements: Fancy Uses of collect

10m 8s

18.2 Parallel Streams

14m 30s

18.3 Infinite (Unbounded On-the-Fly) Streams

16m 24s


02m 1s

Chapter: Lesson 19: Simplified File I/O: Applying the Power of Streams


00m 31s

19.1 More on try/catch Blocks

06m 54s

19.2 Paths

02m 44s

19.3 Simple File Reading

09m 0s

19.4 File Reading Examples

12m 17s

19.5 Simple File Writing

04m 28s

19.6 Exploring Folders

04m 9s

19.7 Faster and More Flexible File Writing

02m 3s


02m 49s

Chapter: Lesson 20: Network Programming: Clients


00m 23s

20.1 Overview

08m 54s

20.2 Basic Steps for a Client to Connect to a Server

10m 7s

20.3 A Reusable Network Client Base Class

07m 10s

20.4 Aside: String Formatting and Parsing

14m 21s

20.5 Problems with Blocking IO

07m 44s

20.6 Talking to Web Servers: General

03m 30s

20.7 Talking to Web Servers: A Java Client

10m 37s


02m 35s

Chapter: Lesson 21: Network Programming: Servers


00m 26s

21.1 Basics

07m 21s

21.2 Simple Warmup: A Single-Threaded Server

06m 53s

21.3 A Base Class for a Multithreaded Server

02m 32s

21.4 A Simple Multithreaded HTTP Server

08m 51s


02m 33s

Chapter: Lesson 22: Serialization: Sending Complex Java Data Structures to Files or over the Network


00m 25s

22.1 Overview

12m 23s

22.2 Sending Data

03m 16s

22.3 Receiving Data

03m 22s

22.4 Example: Sending Entire Window to File or Socket

09m 39s


02m 24s

Chapter: Summary

Learning Modern Java: Summary

00m 51s