The Essence of Software Design

Effective Java, Important Design Patterns & Idioms

Effective Java

I - Creating and Destroying Objects

II - Methods common to all Objects

III - Classes and Interfaces

IV - Substitutes for C Constructs

V - Methods

VI - General Programming

VII - Exceptions

VIII - Threads

IX - Serialization

Important Design Patterns

Creational Patterns

Structural Patterns

Behavioral Patterns