Overview of Java
Objectives
History Of Java
Benefits Of Java
What Is Java?
What's This "Virtual Machine"?
Comparison to Other Languages
Java Programs
Basic Java Development Tools
Java Editions
Example - HelloWorld
Java Classes
Main Methods
Statements
Summary
Java Tools in RAD
Objectives
Intro to RAD
Eclipse Platform
Eclipse Workspace
Perspectives, Views & Editors
Basic Operations with Eclipse Views and Perspectives
The Java Perspective
The Debug Perspective
Navigator View
Package Explorer
Outline View
Problems View
Eclipse Preferences
Build and Validation
Code Completion, Templates and Snippets
Searching
Configure Compiler Class Path
JRE Switching
Basic Object Concepts
Objectives
What Is An Object?
State
Behavior
Encapsulation
Encapsulation Examples
Classes vs. Objects
Inheritance
Interfaces
Polymorphism
Benefits Of Objects
Summary
Basic Java Syntax
Objectives
Declaring And Initializing Variables
Keywords
Coding Tips Variables
Primitive Data Types
Logical - boolean
Textual - char and String
Integral - byte, short, int, long
Floating Point - float and double
Literal Values
Strings
Creating Strings
White Space
Comments
Coding Tips - Comments
Java Statements
Coding Tips - Statements
Scope of a Variable
System.out/System.in
Scanner Class
Summary
Operations and Making Decisions
Objectives
Operator Categories
Special Situations
Binary Operators
Integer Division
Numeric Promotion
Type Conversion Of Primitive Types
Unary Operators
Relational Operators
Logical Operators
Bitwise Operators
Bitwise Examples
Shift Operators
Overflow And Underflow
Assignment Operators
Ternary Operator
Calculation Errors
Operator Precedence
Precedence Examples
Combining Strings
Coding Tips - Operators
Control Flow Statements
'if' Statement
'if else' Statement
Nested Statements
"Short Circuited" Operators
Coding Tips - if & if-else
Summary
Using Classes and Objects
Objectives
Objects, Instances, And Classes
What Are Classes?
Working With Classes And Objects
Instantiation
Instance Methods
Object References
String Operations
The Math Class
Summary
Writing Classes
Objectives
Why Define Your Own Classes?
Encapsulation
Elements Of A Class
Defining Classes
Coding Tips - Class Definitions
Fields
Defining Fields
Coding Tips - Fields
Methods
Defining Methods
Passing Parameters
Overloading Methods
Coding Tips - Methods
Local Variables vs. Instance Variables
Example - Defining a Class
Example - Fields
Example - Defining a Method
Example - Calling a Method
Summary
Controlling Code Access and Code Organization
Objectives
Controlling Access
Data Hiding
Encapsulation
JavaBeans
Packages
Problems Solved With Packages
Naming Packages
Declaring Packages In Classes
Package Access
Example - Access Modifiers
Import Statement
Using Classes From Packages
Coding Tips - Import Statements
Correlation To File Structure
Class Path
Java Core Packages
Java API Documentation
Summary
Constructors and Class Members
Objectives
Constructors
Multiple Constructors
Defining Constructors
Default Constructor
Example - Calling Constructors
'this' Keyword
Using 'this' to Call a Constructor
Using 'this' to Set a Field
Class Members
Examples Of Class Members
Comparison With Instance Members
Use Of Class Variables
Static Class Methods
Use Of Class Methods
Main Method And Command Line Arguments
Declaring Constants
Coding Tips - Class Members
Useful Standard Class Members
Initialization Blocks
Static Initialization Blocks
Summary
Advanced Control Structures
Objectives
'switch' Statement
Example - switch
Switch "Fall Through"
'for' Loop
Example - for
'while' Loop
Example - while
'do while' Loop
Example - do while
Break Statement
Example - break
Labeled Statements
Example - Labeled break
Continue Statement
Example - continue
Example - Labeled continue
Coding Tips - Control Structures
Summary
Arrays
Objectives
Arrays
Declaring Arrays
Populating Arrays
Accessing Arrays
Array Length
Coding Tips - Arrays
Array References
Multidimensional Arrays
Arrays Of Arrays
Copying Arrays
For-Each loop
Variable Arguments
Variable Arguments Example
Summary
Inheritance
Objectives
Inheritance Is
Inheritance Examples
Declaring Inheritance
Inheritance Hierarchy
Access Modifiers Revisited
Inherited Members
Instances Of A Subclass
Example Of Inheritance
Role In Reuse
The super Keyword
Example - super Keyword
Problems with Constructors
Limiting Subclasses
'set' Methods in Constructors
The Object Class
Summary
Commonly Overridden Methods
Objectives
Overriding Methods
toString ()
toString () in Object
Overriding toString ()
Comparing Objects
Using == vs. equals (...)
Overriding equals (...)
Complex Comparisons
equals (...) Example
hashCode ()
Overriding hashCode ()
hashCode () Example
Refactoring
Changing Class Name
Changing Method Name
Changing Variable Name
Generalizing a Variable
Moving a Class to a Different Package
Extracting Code to a Method
Pull-up and Push-down Methods
Exceptions
Objectives
What is an Exception
Benefits
The Exception Class
How to Work With Exceptions
Example Exception Handling
The try-catch-finally Statement
Flow of Program Control
Exception Hierarchy
Checked Exceptions
Unchecked Exceptions
Coding Tips - Exception Types
Catching Multiple Exceptions
Specifying Thrown Exceptions
Rethrowing Exceptions
Chaining Exceptions
Creating your Own Exception
Summary
Interfaces and Polymorphism
Objectives
Casting Objects
The instanceof Operator
Abstract Classes
Abstract Class An Example
Interface
Interface An Example
Comparable Interface
Comparable Example
Coding Tips - Superclass or Interface?
Polymorphism
Conditions for Polymorphism
Coding Tips - Leveraging Polymorphism
Covariant Return Types
Summary
Collections and Generics
Objectives
What are Collections?
Arrays vs. Collections
Main Collections Interfaces
java.util.Collection
Main Collection Methods
Sets
java.util.List
java.util.Queue
Iteration on a Collection
Iterator vs. For-Each Loop
Maps
java.util.Map
java.util.SortedMap
Collections Implementations
Generics
Generics and Collections
Generic Collection Example
Collections and Primitive Types
"Wrapper" Classes
Autoboxing
Summary
Useful Java Classes
Objectives
Java Logging API
Control Flow of Logging
Logging Levels
Logging Handlers
Loggers
Logging Example
Logging Formatters & Log Manager
Logging Configuration File
Example Logging Configuration File
Logging Filters
java.lang.StringBuilder
java.util.StringTokenizer
java.util.Arrays & java.util.Collections
java.util.Random
java.util.Date
GregorianCalendar & Calendar
Formatting
Formatting Example
Summary
Input and Output
Objectives
Overview of Java Input/Output
Streams
Input Stream
Output Stream
"Chained" Streams
The File Class
File Example
RandomAccessFile
Reader and Writer
Buffers
Channels
Serialization
Serializing Object State
Avoiding Serialization Problems
serialVersionUID
Options to Write Files
Using Streams - Write Example
Using Streams - Read Example
Using Readers and Writers - Write Example
Using Readers and Writers - Read Example
Using Readers and Writers - Scanner Read Example
Using Buffers and Channels - Write Example
Using Buffers and Channels - Read Example
Summary
Other Java Concepts
Objectives
Annotations
Enumerated Types
Garbage Collection
JVM Storage Areas
Assertions
Assertions Example
When to use Assertions
Enabling Assertions
Appendix A. Overview of Java SE APIs
Objectives
Java GUI Programming
Image I/O
Networking
Remote Method Invocation
Security
Databases - JDBC
Naming - JNDI
Management - JMX
XML
Printing
Summary
Appendix B. Overview of Java EE
Objectives
Goals of Enterprise Applications
What is Java?
What is Java EE?
The Java EE Specifications
Versions
Role of Application Server
Java EE Components
What is a Servlet?
Servlet Execution
What is a JSP?
JSP Code Sample
What is an EJB?
EJB Types
Java Persistence API
EJB Examples
Web Browser
Applet
Application Client
Model-View-Controller Architecture
MVC An Example
Java EE Vendor Specifications
Containers
Java EE Blueprint
Java EE Application Structure
EAR File
What are Modules?
Java EE Deployment Descriptors
Web Module
EJB Module
Client Module
Summary