There are many books devoted to Java programming, you name these. And most of them are good enough to teach you how to write in Java. You may consider that it is enough to learn the syntax and some advanced tricks. Wrong! There is more... Read this book, and you will find what it is - THINKING! Just excellent!