O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Learning Path: Mastering Java

Video Description

This Learning Path doesn't merely introduce you to advanced Java concepts, it makes sure that you've got the concepts nailed down. After tackling concurrency and network programming, you'll explore functional programming in Java 8 using lambdas, streams, collectors, and more. Next you'll practice testing and static code analysis with JUnit, Spock, and other tools as you complete your journey to advanced Java proficiency.

Table of Contents

  1. Introduction
    1. Welcome to the Course 00:05:07
  2. Part 1: Interfaces, Inheritance, and Objects
    1. Abstract Classes and Methods 00:11:48
    2. Using Abstract Classes 00:14:07
    3. Implementing Interfaces 00:11:58
    4. Static and Default Methods in Interfaces 00:11:16
    5. Overriding toString, equals, and hashCode 00:18:40
    6. Using Exceptions Effectively 00:22:38
  3. Part 2: Generics and Collections
    1. Generic Types 00:11:44
    2. Type Bounds and Wildcards 00:10:49
  4. Part 3: The New I/O Packages
    1. Path and Paths 00:07:53
    2. File Manipulation 00:06:44
  5. Part 4: Concurrency in Java
    1. Threads, Runnables, and the ExecutorService 00:10:51
    2. Callables and Futures 00:17:17
    3. Locks and Latches 00:19:17
    4. The Producer/Consumer Problem 00:08:02
  6. Part 5: Working with Relational Databases
    1. Traditional JDBC Classes 00:21:42
    2. The Java Persistence API 00:19:57
  7. Part 6: Networking
    1. The Java.Net Package 00:05:22
    2. Working with URLs and Streams 00:10:13
    3. Parsing JSON Data 00:13:45
    4. The Socket and ServerSocket Classes 00:08:22
  8. Part 7: Testing with JUnit
    1. The JUnit Annotations 00:16:29
    2. Writing Test Cases 00:10:35
    3. Testing for Exceptions 00:13:11
  9. Part 8: Inner Classes
    1. Static and Anonymous Inner Classes 00:14:28
    2. Single Abstract Method Interfaces and Lambdas 00:13:29
  10. Part 9: New Features in Java 8
    1. Lambdas 00:11:21
    2. Method References 00:07:05
    3. Streams 00:23:16
    4. Concurrent Collections 00:15:04
    5. The java.time Package 00:10:34
  11. Conclusion
    1. Summary 00:02:54
  12. Introduction
    1. What You Should Expect From This Course 00:03:53
    2. About The Author 00:02:02
  13. Basics
    1. Why Java 8? 00:05:16
    2. Brief Introduction To Java 8 New Features 00:09:43
    3. What Are Lambdas? 00:04:40
    4. Creating A Lambda 00:06:46
    5. Example Lambda Expressions 00:05:50
  14. Lambdas
    1. Lambda Syntax 00:04:55
    2. Target Typing 00:04:56
    3. Capturing Lambda 00:05:57
    4. Lambda Scoping 00:04:54
    5. Method References 00:04:42
    6. Constructor References 00:03:30
    7. Type Inference 00:04:26
  15. Interfaces
    1. Interface Makeover 00:03:22
    2. Functional Interfaces 00:03:56
    3. @FunctionalInterface Annotation 00:04:34
    4. Default And Static Methods 00:04:50
    5. Inheriting Behaviour 00:03:25
    6. Multiple Inheritance 00:06:18
    7. Abstract Versus Interfaces 00:03:06
  16. Functions
    1. What Are Functions? 00:04:00
    2. Predicate Function 00:03:50
    3. Composing Predicates 00:06:19
    4. Consumer Function 00:06:03
    5. Supplier Function 00:02:43
    6. Function Function 00:06:38
  17. Additional Functions
    1. Composing Functions 00:05:09
    2. Primitive Functions - Part 1 00:03:37
    3. Primitive Functions - Part 2 00:03:37
    4. Two Argument BiPredicates 00:05:19
    5. Two Argument BiConsumers 00:03:52
    6. Two Argument BiFunctions 00:04:26
  18. Streams
    1. Introducing Streams - Part 1 00:04:05
    2. Introducing Streams - Part 2 00:02:44
    3. Working With Streams 00:06:06
    4. Creating Streams 00:05:39
    5. Iteration Strategies 00:05:11
    6. Lazy And Eager Operations 00:04:26
    7. Streams Versus Collections 00:02:54
    8. Primitive Streams 00:03:55
  19. Stream Common Operations
    1. Filtering 00:03:52
    2. Mapping 00:03:09
    3. Collecting 00:04:26
    4. Distinct, Limit And Skip 00:03:23
    5. Short Circuit Operations 00:04:32
    6. Reducing 00:03:33
    7. Optional - Part 1 00:03:05
    8. Optional - Part 2 00:05:40
  20. Advanced Streams
    1. Grouping 00:05:15
    2. Partitioning 00:04:12
    3. Collectors 00:07:41
    4. Flat Map 00:02:53
    5. Range And Stats 00:03:16
  21. Parallell Streams
    1. Serial Execution 00:03:37
    2. Parallel Execution 00:02:29
    3. Behind The Scenes 00:04:39
    4. Sequential Or Parallel 00:06:00
  22. Conclusion
    1. Wrap Up 00:01:48
  23. Testing Java Programs With Open Source Tools
    1. Introduction And Course Overview 00:02:57
    2. About The Author 00:03:15
    3. Why You Cannot Prove Your Code Correct 00:07:11
    4. Covered Tools 00:02:13
    5. Running The Examples 00:01:17
    6. How To Access Your Working Files 00:01:15
  24. Dynamic Testing Tools
    1. Dynamic Testing 00:01:27
    2. Unit Testing With JUnit 00:09:45
    3. Writing And Running JUnit 00:11:31
    4. TFD And TDD With JUnit 00:07:20
    5. Hamcrest Matchers And JUnit 00:08:05
    6. Mock Objects And JUnit 00:07:53
    7. Testing Persistence With JUnit 00:10:01
    8. On Top Of JUnit: Arquillian 00:10:39
    9. On Top Of JUnit: BDD And Cucumber 00:12:09
    10. Legacy JUnit - Legacy Code 00:05:15
    11. Workflow Example 00:04:12
    12. Debugging And Logging 00:10:39
    13. Add-Ons 00:06:37
    14. The Future Of JUnit 00:06:27
  25. Spock
    1. Is Another Tool Logical, Captain? 00:10:14
    2. A Nicer JUnit 00:05:30
    3. A Nicer Cucumber Too 00:02:55
  26. Test Coverage
    1. What And When Is Enough Testing? 00:07:15
    2. Finding Gaps With Cobertura 00:07:59
  27. Testing Web Apps With JUnit-Based Tools
    1. Selenium Driver 00:10:49
    2. Arquillian With WebDriver - Part 1 00:10:08
    3. Arquillian With WebDriver - Part 2 00:06:51
    4. HtmlUnit 00:04:46
    5. Web Testing Miscellany 00:09:40
    6. PageUnit 00:06:30
  28. Static Code Analysis
    1. Code Analysis Tools: Static Testing 00:05:07
    2. Cranking Up Eclipse Settings 00:07:47
  29. PMD
    1. What Is PMD? 00:07:01
    2. Running Standalone With Maven 00:04:26
    3. Running With Eclipse 00:04:08
    4. Dealing With Outputs 00:08:54
    5. Analyzing Reports 00:02:02
    6. Destroying Duplication With CPD 00:02:56
  30. FindBugs
    1. What Is FindBugs? 00:09:30
    2. Running Standalone With Maven 00:02:29
    3. Running With Eclipse 00:03:46
    4. Dealing With Warnings 00:08:41
    5. Analyzing Reports 00:09:14
  31. Wrap-Up
    1. Summary 00:03:44