Fundamentals
Immutability in Java: An OOP Foundation
Immutability is one of those ideas that sounds simple—an object doesn’t change after it’s created—but has surprisingly deep consequences for design quality, correctness, and long-term maintainability.