ust a few short months ago, if you wanted to learn Java you had very few choices. If you were a hard-core language junkie, you could wade through the technicalities of the Java Language Specification available from Sun, and then figure out the rest on your own. If that didn't appeal to you, your only other choice was to suffer through the inconsistencies and limitations of a handful of books that were out of date almost by the time they reached the bookshelf.
Now the opposite holds true. There are more than 100 books on Java, many seemingly motivated simply by the desire to hitch a ride on the Java bandwagon. After digging myself out from under this avalanche, it is a pleasure to see such a carefully crafted and thorough book as Core Java.
Core Java's opening chapters contain the most complete and well-organized introduction to Java that I have read. They cover basics of the language and of the object-oriented model, and include overviews of the environment and the tools for working with Java. This book targets advanced programmers, but Java newcomers or novice programmers will find everything they need to get started with Java in these chapters. The material is presented in a detailed, step-by-step manner that provides a continuous path from ignorance to Java bliss.
The chapters on the more advanced features of Java are equally well organized and written. The chapter on exceptions provides an introduction to when and why exceptions are used, coverage of the specifics of the exception mechanism in Java, and a number of useful tips on exception handling such as "Exception handling is not supposed to replace a simple test" (p. 434). It also provides some useful debugging techniques, such as the "MessageCracker" class (p. 437), which lets you spy on Abstract Windowing Toolkit (AWT) events.
The chapter on streams (the java.io package) takes the reader from the basic principles to a detailed implementation of file-based persistence using Java streams. Networking also provides a gentle introduction and then ramps up to full-powered applications, including how to interface Java applets to CGI scripts.
The multithreading chapter is, again, one of the best I have seen. It provides an excellent overview of the basics, and then goes on to provide detailed examples of the issues that must be dealt with when programming in a multithreaded environment. I especially liked the example that illustrates race conditions and the need for synchronization among threads (p. 524). Even if you have never programmed with threads before, this chapter makes their use eminently clear.
The book also contains three chapters that cover the AWT and how to write applets. These chapters contain numerous useful examples, but they are not as well organized as the other material. They don't directly supply an understanding of the overall organization and specifics of the AWT; rather, they seem somewhat scattered, and require you to dig for the core information. Still, they present a lot of useful information and techniques.
One welcome feature is the inclusion of notes scattered throughout the book. These notes compare and contrast features of Java to Visual Basic and C/C++, and are useful in relating the new Java concepts to already familiar ones. The book also includes a CD-ROM, which holds a wealth of information and tools, including the Sun Java Development Kit (JDK), shareware versions of WinEdit and WinZip, Cafe Lite (a "lite" version of Symantec's Cafe Java development environment), and all the source code for the book.
This book is suitable for a wide range of readers; the Java newcomer will find everything necessary to get up to speed, and the experienced programmer will find useful information and advanced programming examples. One caveat: At over 600 pages, the book is a bargain by the pound, but it can get heavy if you're carrying it around, and experienced programmers may get a little tired of skipping over basic information they already know.
All in all, Core Java is an excellent book that I highly recommend.
By Gary Cornell and Cay S. Horstmann
Prentice Hall, ISBN 0-13-565755-5
This page formated for crawlers and browsers that don't support scripts and tables.