Although this book is kind of old, is still valid. All its concepts and best practices are still being used and its author is an authority in the development world > Joshua Bloch.

This was the first book I read when I got into professional development, and believe when I say that is one of the mandatory books to read if you want to write something functional in Java.

Effective Java at Amazon

PS: I would like to share the ebook version of it, but I'm not sure about the licensing/copying policies.