Functional thinking: Immutability

See the original posting on IBM developerWorks – Java

Immutability is one of the building blocks of functional programming.
This Functional thinking installment discusses the many aspects of
immutability in the Java language and shows how to create immutable Java
classes in both traditional and newer styles. It also shows two ways to create
immutable classes in Groovy, removing much of the pain of the Java
implementation. Finally, you'll learn when this abstraction is