Mastering Java

Video description

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

Product information

  • Title: Mastering Java
  • Author(s): O'Reilly Media, Inc.
  • Release date: August 2016
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9781491970805