Effective Java
Joshua Bloch
Since this Jolt-award winning classic was last updated in 2008 (shortly after Java 6 was released), Java has changed dramatically.
java code-quality backend intermediate practical reference performance design-patterns
clean code clean-code hands-on hands on