Java Advanced Developer (JAVAADVDEV) - Outline

Detailed Course Outline

Course Introduction

  • Administration and Course Materials
  • Course Structure and Agenda
  • Delegate and Trainer Introductions

Session 1: BUILD TOOLS

  • What is a build tool
  • Maven
  • Archetypes
  • Directory structure
  • The POM
  • Dependencies
  • RepositoriesLifecycles, phases, and goals
  • Profiles
  • Plugins

Session 2: LOGGING

  • The Logger
  • Logger hierarchy
  • Log levels
  • Formatters
  • Filters
  • Appenders
  • Log4j2
  • Logbac

k SLF4J Session 3: GENERICS

  • Generic types
  • Generic methods
  • Bounded type parameters
  • Generics and inheritance
  • Type inference
  • Wildcards
  • Type erasure
  • Restrictions

Session 4: COLLECTIONS

  • The Collection interface hierarchy
  • Iterable and Iterator
  • Collection operations and traversal
  • The Collections class
  • Collection types (characteristics and implementations) incl. List, Set, and Queue
  • The Map interface hierarchy
  • Map operations and traversal
  • Map types (characteristics and implementations)

Session 5: hashCode & equals AND compareTo/compare

  • The Object class
  • Overriding toString
  • Equality and membership testing
  • Hashing collections
  • Overriding hashCode and equals
  • The Comparable and Comparator interfaces
  • Searching and sorting
  • Overriding compareTo and compare

Session 6: NESTED CLASSES

  • Static nested classes
  • Inner classes
  • Shadowing
  • Local classes
  • Anonymous classes
  • Variable capture and effectively final

Session 7: LAMBDA EXPRESSIONS & METHOD REFERENCES

  • What is a lambda expression
  • Lambda use case: collection filter
  • Lambda syntax
  • What is a method reference
  • Method reference use case: collection sort
  • Method reference types x 4

Session 8: FUNCTIONAL PROGRAMMING

  • What is functional programming
  • Functions as first class objects
  • Pure functions
  • Higher order functions
  • Immutable objects
  • Java's functional interfaces
  • Functional composition

Session 9: STREAMS

  • What is a stream
  • Obtaining/creating a stream
  • Intermediate (non-terminal) operations
  • Terminal operations
  • The Optional class
  • The Collectors class
  • Stream concatenation
  • Primitive streams

Session 10: CONCURRENCY

  • Low-level threading incl. Runnable, sleep, join
  • The Java memory model
  • Threading problems incl. race conditions, deadlock, and starvation
  • Immutable objects and ThreadLocal
  • Thread synchronization incl. volatile, synchronized, atomic data types, and locks
  • ExecutorService, thread pools, Callable, and Future
  • The fork join framework
  • Concurrent and immutable collections
  • Parallel streams

Session 11: ASYNCHRONOUS & REACTIVE PROGRAMMING

  • Asynchronous vs. concurrent programming
  • CompletableFuture
  • Executing tasks asynchronously
  • Chaining tasks (synchronously or asynchronously)
  • Specifying callbacks
  • Combining futures
  • Exception handling
  • What is reactive programming?
  • A note about the Flow API
  • RxJavai>
  • Creating and subscribing to an observable
  • Transformaing, filtering, and combining observables
  • Applying back pressure
  • Other observable operators
  • Singles
  • Subjects
  • Schedulers

Session 12: NON-BLOCKING IO

  • What is non-blocking IO?
  • Channels and buffers
  • Scatter/gather
  • Channel-to-channel transfer
  • Selectors
  • FileChannel
  • Pipes

Session 13: NETWORKING

  • Reading from and writing to a URL
  • Reading from and writing to a socket
  • Multithreaded ServerSocket
  • Non-blocking ServerSocket

Session 14: ANNOTATIONS

  • What is an annotation?
  • Form and application
  • Standard annotations
  • Declaring an annotation

Session 15: REFLECTION

  • What is reflection?
  • Modules, classes, constructors, fields, and methods
  • Private members
  • Annotations
  • Generics and arrays
  • Dynamic proxies
  • Dynamic class loading