|
Purchase Thinking in Java from Amazon.com
|
Thinking in Java
by Bruce Eckel
Search Amazon for other books by or about Bruce Eckel.
Rating:
Reviewed by: Dotan Dvir
|
Java and the Internet are the current buzz words du-jour. Everyone who wishes to remain updated must learn the new languages at the speed of their appearance. Learning a new programming dialect can be a grudge but it does not have to be a complete pain if the proper books are provided. Bruce Eckel's book fills a unique niche in the technical literature: a book that's good enough to get you started yet enjoyable enough to read you won't want it to end. A few vagaries must be pointed out: the book I covered deals only with Java 1.1 (vs. the new Java 2), the book is IDE neutral and relies only on the base classes included with Java plus some extra code downloadable from the author's site (also for free). Last but not least, the author is a well known and respected expert in object oriented analysis. Mr. Eckel's experience shows through on every page of this polished manuscript, his gentle guidance makes sure the user is always in his element and never far away from a reassuring explanation. This book is meant for beginning to intermediate programmers. What do I mean by that? Coming to Java from non-object oriented programming languages or taking up Java as first programming language requires a major re-thinking effort for most people. The reason is that Java is an object oriented programming language in the strictest sense of the word - everything is an object (save for primitive datatypes). This concept is so radical that the author gives it a whole chapter. Even programmers coming with experience in programming object oriented programming languages will require some adjustment because several stalwarts of other programming languages are either missing or implemented differently in Java. Because the Java language is updated frequently by the introduction of new libraries and the updating of existing ones it's hard to imagine a book could stay current permanently. It comes as no surprise therefore that there have advances in several areas of class libraries since the book's release. This should not detract from it's lure however - all books are suspect to this fate and besides the changes are almost always insubstantial to beginning programmers. When you graduate to the more advanced and bleeding edge technologies then Sun's terse documentation shall have to do. Beginner's should let themselves be pampered by this manuscript's obsessive care for their comfort The basics are covered very well. Any user seriously pursuing this text shall be up to the task of writing a moderately complex application/applet on graduating. To assist in assimilating the material a lot of exercises are given at the end of each chapter. These exercises help hone your skills by pointing out the real difficulties involved in the material covered, by following them you will have your bases covered pretty well. I consider the questions to be the acid test of knowledge acquisition and encourage each reader to attempt them. The syllabus picks up some advanced topics as well, such as network programming and multi-threading an application. These are more glimpses than full course offerings, still, there's plenty to chew on in this book. Chapter 16 takes up the issue of design patterns, a methodology for software design whose importance cannot be stated strongly enough. Chapter 17 concludes by offering a look at more advanced programs composed of multiple classes as well as the niceties of method/variable naming. The appendices take up some more advanced issues briefly and may seem a bit out of place. Realizing the diversity of his audience the author takes up things slowly. Before he can move on to discuss object oriented programming he first discusses the concept of objects. This methodical approach allows user to study at their own pace. Users familiar with concepts presented in the earlier chapters can jump straight ahead into deeper waters and leaf back foran occasional reminder. Always accompanying the discussion is a piece of code (reinforcing the "learning by doing" concept). All code is downloadable from the author's site and is included with the book (on a CD-Rom) so the reader is spared the task of re-typing it. All the code is well commented and indented in a manner making pursuing it a pleasure. In the unlikely event of a "bug" being discovered you can rest assured a correction shall appear soon on the site with the finder's name credited. The tying up of code and discussion helps clear up matters greatly. I fail to understand many programming books that style themselves like theory discussion and limit the code presented to a few short snippets. On the other hand no code block feels purposefully inflated - meaning that you never get the feeling Mr. Eckel is using the code to bloat page count. To make matters more interesting still Mr. Eckel often takes up code presented previously and updates it with the introduction of new features/techniques. In the few cases when the author has to use more advanced techniques for making a point he clearly outlines the "offending" segments and asks us to make the leap of faith - the reader is then referred to the proper place in the book to look for the complete explanation. You may have already grasped my enthusiasm for the book. It really is excellent in my opinion. It walks the fine line between being too formal and being not formal enough and still succeeded in teaching me a great deal. New programmers or programmers new to Java will have an invaluable resource on their hands. Older hands may also find themselves making use of this book. The only "competition" I could think of is the two volume "Core Java" books but the programming community can probably stand two great offerings. For all of it's virtues I highly recommend Thinking in Java.
Purchase Thinking in Java from Amazon.com
|