This advanced Java course focuses on building skill sets frequently used by mature Java developers. After participating, students will be able to better use strategic libraries in order to understand how the core language and various frameworks leverage key concepts like reflection, Aspect Oriented Programming (AOP), generics and concurrency.

Course Duration: 3 days
Prerequisites:

To succeed in this course, participants need a solid understanding of object-oriented concepts and familiarity with Java and the core libraries.

Course Objectives:
  • Gain an overview of the collections framework and its recent updates
  • Understand the exception hierarchy, and know how and when to use custom exceptions
  • Examine the new abilities of Java concurrency
  • Understand what generics are, how to write your own generic class and how to use them properly
  • Use reflection to examine objects at runtime
  • Use reflection to parse variables in external files and create objects “on the fly”
  • Learn basic annotations and how to create your own annotations when needed
Course Outline:
  • Collections
    • Dynamic Collections
    • Collections versus Arrays
    • The Collections API
    • Abstraction: The Collection Interface
    • Vector, LinkedList, ArrayList
    • Reading Elements and Downcasting
    • Collecting Primitive Values
    • Iterators
    • Maps
    • Sorted Collections

 

  • Exception Handling
    • Overview of Exceptions
    • Following the Control Flow of an Exception Handler
    • Writing Exception Handlers
    • Checked versus Unchecked Exceptions versus Errors
    • Defining Custom Exceptions
    • Nesting Exceptions

 

  • Threading and Concurrency
    • Overview of java.util.concurrent
    • Locks
    • Executors and Executor Service
    • Latch
    • Cyclic Barrier
    • Queues
    • Synchronizers
    • Callable vs Runnable
    • Future
    • Atomics, Locks, Latches
    • Exchangers

 

  • Generics
    • Motivation for Generics
    • Defining a Simple Generic Class
    • Generic Methods
    • Bounds for Types
    • Limitations on Generics
    • Inheritance Rules for Generics
    • Wildcard Types

 

  • Reflection
    • lang.reflect and Overview
    • Fields
    • Methods
    • Modifier
    • AccessibleObject
    • Reflection and Java Beans
    • A Word About Performance

 

  • Using Annotations
    • Meta-data and Its Usage
    • Aspect Oriented Programming (AOP) Basics
    • Built-In Annotations