Brian Goetz

Introduction to Java

Audience This course is aimed at developers who are new to the Java language and platform, but who have had some background in programming and object-oriented concepts.  It assumes no direct experience with Java.  
Duration 5 days
Structure Lecture, demonstrations, and hands-on labs
Students will
  • Learn how to write simple Java programs
  • Understand the Java object model
  • Learn to use common Java development tools
  • Learn Java programming idioms
Overview This course focuses on giving students experience with the basic elements of the Java language, platform, and development tools and practices.  The course will cover the language (syntax, concepts, and object model), the platform runtime model (classes and class loading, memory management, and exception handling), the class libraries, and common programming idioms.  In addition, 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
  • Introduction to the Java language
    • Syntax
    • History and language development
    • Data types
    • Access modifiers, data hiding, and encapsulation
    • Classes, interfaces, and packages
    • Dynamic memory management
  • Tools
    • JDK tools
    • JavaDoc
    • IDEs
    • ANT
    • JUnit
  • Objects in Java
    • The root Object class
    • Inheritance
    • Dynamic class loading
  • Object lifecycle
    • Construction patterns – constructors, factories, singletons
    • Garbage collection
    • Initialization and final variables
    • Destruction vs finalization
  • Naming and coding standards
  • The Java class library
    • Collections
    • Swing and AWT
    • IO Streams
    • JDBC database access
  • Exception handling
    • Exceptions
    • try, catch, finally
    • Checked and unchecked exceptions
  • Classes and interfaces
    • Extension and composition
    • Interfaces
    • Abstract classes
    • Inner classes
    • Anonymous classes
  • 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
  • New features in JDK 5.0
    • Generics
    • Enumerations
    • Autoboxing
    • Variable-length argument lists
    • Concurrency improvements
    • Metadata