Author: Cay S. Horstmann
Publisher: Prentice Hall
Audience: All Java programmers
Reviewer: Alex Armstrong
This tenth edition is a revised and updated incarnation of classic - but this is no reason not to review it.
The first important point is that this is a not a book for the non-programmer. If you program in another language or have "messed about" with Java then this book forms a good and intelligent introduction to the core of the language with some extra bits tagged on. The latest edition sees the size grow by some 40 pages.
It starts with an overview including some history which is now seeming a long way off. It then goes into getting started and using an IDE - Eclipse. The only problem with using Eclipse is that it doesn't have a visual designer for Swing, so the first example of a GUI is constructed in code. Netbeans does have a visual designer and so its use would make things easier for the beginner. The section on building applets is still in the first chapter and this is now looking well overdue for a removal to a later section - it is looking long in the tooth even as a historical reference. The difficulty of getting it to run in a modern browser is getting silly and doesn't put Java into a good light - this is not something a Java beginner needs to be exposed to..
The following chapters then deal with the core of the language in a logical order - simple data structures, objects, inheritance, Interfaces and inner classes. By the time you have finished Chapter 6 (around 300 pages) you have covered most of the main features of the language. New in Chapter 6 is the introduction of lambda expressions. Chapter 7 is about exceptions, assertions and logging and it used to be positioned later in the book. The treatment of core topics closes with generics.
From the core language the book moves on to the core user interface. Getting started with Swing, event handling and components provide an introduction to building the UI. Nothing very advanced and no alternatives to Swing are covered. Again this section of the book would arguably be better with the use of NetBeans and a graphical layout editor, but of course some prefer to do things manually.
After spending a lot of pages on the UI the book moves on the deployment - JARs and Applets again, which should now be relegated to an appendix. There is a small coverage of Web Start which should be the alternative technology to the applet.
The final chapter is on concurrency and threads.
The subject matter is fairly standard, but it is important to know that the way it is presented is very good. There is lots of intelligent discussion of the how and why and the author includes lots of comments about where the Java designers and implementers went wrong and removed a useful feature or added one that wasn't necessary. This is a simple and direct approach to telling you about Java - it has few tricks or embellishments and simply gets on with the job.
While this is a book only suitable for an existing Java programmer, it is important to keep in mind that it isn't really an advanced book. There are lots of advanced topics - program methodologies for example - that it simply ignores. It also ignores the many Java-based technologies that some advanced programmers consider to be core to their particular use of the language. Remember however that it is Volume 1 of a two-part series, with this book on the Fundamentals and a companion on Advanced Features. And as both are "Core Java", a line has to be drawn somewhere.
If you have the 9th edition about the only topic missing is lambda expressions and given a new version of Java is on the horizon there is no point in buying a new copy.
If you are looking for a well written account of core Java, simply buy a copy. It is the best of the "big book" introductions to Java.
Core Java Volume I Fundamental 9th Ed
Core Java, Volume II Advanced Features 9th Ed
To keep up with our coverage of books for programmers, follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.