If you are looking for your first book on Java and have no prior hands-on experience with it, then this is the best choice out there. It is perfect for absolute novices going to beginners and it should also appeal to beginners going to intermediates or programmer’s switching from a variant of C to Java.

This Java book by Head First is one of those rare books that are NOT a compilation of the authors’ knowledge on the subject. All of the book is written with the purpose of having the reader learn how to program Java. Therefore it is not set up as a reference book and it doesn’t follow the common programming language book setup where the reader is introduced to operators and code constructs and then increasingly difficult tutorials.

Instead, like all Head First books, this one is geared towards having the reader learn and memorize how to do the most basic actions first, and then slowly build their knowledge out from that starting point.

The book is applies many learning techniques such as smart repetition, humor and images which will all help you learn and remember. It does NOT have a lot of code samples and snippets, so if you have a good grasp of Java and need a code cookbook, then this is not the best choice for you.

A nice addition is that Head Start has a whole series of books that ties into this one, such as Object Oriented Application Design. With the whole series you will have a good starting basis on learning everything you need to know about Java development.

One advice for readers without prior programming experience is to – at some point – look into getting a code editor that is not notepad. In this book you will learn how to set up the correct directory structure and compile your code by command line. This is very useful to do, but once you are familiar with the concept it will save you lot’s of time to use code editors that automize these things for you. One very widely used ( and free ) editor is eclipse. Look up a “Hello world” Java tutorial in Eclipse. It will get you nice code highlighting, error reporting ( this will save you hours, if not days of time ), automatic good default document structure and easy compiling.