In the book "Effective Java", Josh Bloch says that
StringBuffer is largely obsolete and should be replaced by the non-synchronized implementation 'StringBuilder'
.
But in my experience, I've still seen widespread use of the StringBuffer class. Why is the StringBuffer class now obsolete and why should StringBuilder be preferred over StringBuffer except for the increased performance due to non-synchronization?