The earlier edition of this book was a well written tutorial for the beginner Java programmer but it was also in need of an update. The release of the JDK 5 edition of "Beginning Java 2" attempts to answer that need. The new edition is almost 100 pages longer and the extra pages have been used to give greater detail on object oriented programming and to cover some of the new additions to the language such as generics. Unfortunately, the new edition contains too many mistakes and is less well organized than its predecessor.
A few examples of mistakes in the book will explain my complaints. In the discussion of abstract classes, the book tells us that subclasses of an abstract class must override all the abstract methods of the parent class. This, of course, is not true if the child class is also abstract. In the discussion of threads, the book explains synchronization of methods using a method that does not need to be synchronized. The explanation makes it appear that method variables are shared by threads. The book tells us that primitives are passed by value and objects are passed by reference. Of course, Java always passes by value although the value passed may be a reference. There are also problems with the sequence in which language features are introduced. For example, int and double are introduced early, but the reader must wait forty pages to discover that there are other primitive data types.
Overall, the new release of Beginning Java 2 represents a step backward in the Murach family of books. This book could have used much more careful editing and a better sequence of topics. If you are looking for a tutorial or textbook I can not recommend this edition.
This earned 2 stars on Amazon. The book is published by Mike Murach & Associates.
Due to a bug in the way Amazon does reviews, I can't publish this review on Amazon since I wrote a review of an earlier edition. My other reviews can be seen on My Amazon Reviews page.