Brian Goetz

Advanced Java

Audience This seminar is for programmers who know the basics of the Java language, but want to learn the idioms, best practices, and advanced platform features in greater depth. 
Duration 4-5 days
Structure Lecture, demonstrations, and hands-on labs
Students will
  • Learn common idioms, patterns, and best practices in Java development
  • Learn techniques for improving the maintainability of Java classes
  • Explore the principles of good API design in Java
  • Gain experience with advanced language features such as reflection, serialization, and concurrency
Overview Students will learn commonly used patterns in Java class design and implementation, and gain an introduction to how current development tools can accelerate the development cycle.  
COURSE OUTLINE
  • Objects in Java
    • The root Object class
    • Semantics and correct implementation of equals(), hashCode(), clone(), toString(), etc
    • Dynamic class loading
  • Object lifecycle
    • Construction patterns – constructors, factories, singletons
    • Garbage collection
    • Initialization and final variables
    • Destruction vs finalization
  • Naming and coding standards
  • Classes and interfaces
    • Extension and composition
    • Interfaces
    • Abstract classes
    • Inner classes
    • Anonymous classes
    • Mutability and immutability
  • Class design and implementation
    • Variable scoping
    • Naming conventions
    • Exceptions
    • Defensive coding techniques
    • Documentation
  • Multithreading
    • Threads and thread-safety
    • Race conditions
    • Synchronization
    • Deadlock
  • Serialization
  • Reflection
  • Dynamic class loading
  • RMI
  • Tools
    • JDK tools
    • JavaDoc
    • IDEs
    • ANT
    • JUnit
  • New features in JDK 5.0
    • Generics
    • Enumerations
    • Autoboxing
    • Variable-length argument lists
    • Concurrency improvements
    • Metadata