|New Reviews| |Software Methodologies| |Popular Science| |AI/Machine Learning| |Programming| |Java| |Linux/Open Source| |XML| |Software Tools| |Other| |Web| |Tutorials| |All By Date| |All By Title| |Resources| |About| |
Keywords: Java, object oriented programming Title: Thinking In Java (4e) Author: Bruce Eckel Publisher: Prentice Hall PTR ISBN: 0131872486 Media: Book Level: All Verdict: An excellent choice for experienced developers to pick up Java, less so for new programmers |
The trophy cabinet full of awards and prizes that Bruce Eckel has won for his 'Thinking In Java' attests to it's classic status. And, despite it having been available as a free download, it's also been a perennial best seller. Now, with the release of a new, fourth, edition, does the book still warrant the accolades? And does it remain one of the key titles to recommend to new Java programmers?
Whatever else you can say about the book, a quick read it is not. It now weighs in at a massive 1400-odd pages. However, this isn't bulk for the sake of it, Eckel provides fairly comprehensive coverage of the language, the core libraries, databases (JDBC), all manner of graphics (AWT/Swing is de rigeur for a Java book, SWT something of a rarity), interfaces to the native platform with JNI and more. And let's not forget an introduction to object orientation, with a smattering of design patterns along the way.
One thing to note - this is the first edition that won't be available for free download. Previous versions, however, can still be downloaded from the author's website. Gone also is the CD containing a HTML version of the text that used to accompany previous editions of the book.
This edition catches up with Java 5 and bills itself as ready for Java 6. This means more than a quick addition of a chapter on generics, (which does exist, of course), it also means that much of the rest of the book has been suitably generified. Coverage of enums, auto-boxing, for each loops, varags and the rest of the new stuff is also integrated into the text.
In addition to the scope, Eckel makes sure that there's depth to his explanations. His primary tool for this is code. The book is littered with snippets of code, usually very short but complete programs that illustrate a point but often don't actually do anything useful. Where others attempt to create code that is generally useful, Eckel prefers code that makes a specific point. There's no big project running through this book, no shiny bit of software built up over the course of those 1400 pages.
Eckel tends not to be especially verbose, the writing is direct and to the point, a bit like his succinct bits of code. This is matched by the design of the book: huge blocks of text with little variation in type-face, a lack of colour and a dearth of pictures (ok, there's an occasional screen-shot, but even those are of the monochrome variety). It's a pretty forbidding package, in all.
All of this is significant. 'Thinking In Java' is indeed a great book for learning Java and object oriented development, but it's not a book for programming beginners. This is a book that's best suited to existing programmers who want to make the switch to Java. If you're a C or C++ programmer, for example, then making the switch to the Java - or C# come to that - mindset is more than a simple matter of learning a new syntax. Eckel's book is about helping the reader make that change.