A great book to read, probably one of the bests on Java. True, the author wants you to purchase the solutions but there are user posted solutions on the internet you can find with a click of a button! I don't understand how such an author can justify making a fabulous book but having the user pay for the exercises, I really hope no one falls for this. 5/10
Was this review helpful to you?
Most Helpful Customer Reviews on Amazon.com (beta)
21 of 23 people found the following review helpful
If you are serious about learning Object Orientated Programming, then this is the book for you.Jan. 9 2007
- Published on Amazon.com
This is not a beginner's book to programming, but if you have a little bit of programming experience and the desire to learn, this is the book for you. Thinking in Java helps you understand the thought process and concepts that the developers of Java had in mind when they developed the language. Bruce Eckel is a very experienced teacher and excellent communicator who is able to present the concepts in an understandable way. This is not for bedtime reading, you should have Java installed on your machine and interact with the book. Of course, nothing is better than attending a seminar by Mr. Eckel but this book comes pretty darn close. Don't bother with the "free" versions of this book's earlier editions, the Java Language has evolved and moved beyond them (Java added "generics" which is a major and painful language after-thought). It is clear that Mr. Eckel is not a fan of the way that Sun implemented Java (and I agree with him). But if you limit the use of Generics you can get by. If you are relatively new to programming and have the desire to learn, you should expect to spend at least three months crawling through this treasure book. It will be worth the effort. If you are an experienced programmer, this book will reveal the underlying concepts in a meaningful way to help you understand the differences between Java and C# and you can get through it in about a month. In addition, this book tries to show you how to organize your code for human readability (when properly done, your code almost reads like a human language - and please remember, I said "almost"). As a final comment, Java is a complex and verbose language (especially since Sun added generics) so this book will always be a good reference.
27 of 31 people found the following review helpful
Complete coverage, sheer drudgery, not a suitable first tutorialMarch 15 2006
Moore Paul Patrick
- Published on Amazon.com
[Note: this review refers to the 3rd edition. I haven't had access to the 4th edition to see what has changed.]
The summary says it all. This 1,000+ page monster probably has the best coverage of all the Java books purporting to be considered as introductory texts. In terms of completeness, it is better than the Sierra/Bates and Deitel books. However, these two books are much more approachable, with better layout and presentation, whereas working through this book is sheer drudgery.
The book uses extensive use of long examples to demonstrate the various language concepts and features. This approach IMO is very long-winded, and bumps up the size of the book to its present doorstop size. The coverage of inner and anonymous classes gets bogged down with the excessive use of example listings, while the treatment of the Java I/O System runs to 110 pages, and Collections to 120 pages, more than double that used by Deitel! A better approach IMO, as successfully used by Lippman in his popular C++ Primer, would have been to use small code fragments to demonstrate each point, and then present a more complete, compilable example at the end of each section or chapter. With free time a precious commodity, I want to learn new topics as quickly as possible, and learn the more esoteric details from more specialised sources later.
The presentation of the book could also be improved. As has already been mentioned by other reviewers, there is a dearth of diagrams to break up the monotony of the presentation. For example, Eckel makes occasional reference to design patterns in the text. Why not add UML diagrams to emphasise the point? Also, the coverage of the Java I/O Syetem, with its large collection of interrelated classes, simply cries out for a class diagram.
The book can be used as a very readable language reference. I should mention that Eckel's writing style itself is quite readable; a pity about the dour presentation. The on-line availability of the book is also a boon for searching particular topics.
49 of 59 people found the following review helpful
Seems specifically designed to confuse beginners.Sept. 17 2008
Grant S. Robertson
- Published on Amazon.com
Although this book purports to be written for anyone with even a little bit of prior programming experience, I am finding it very difficult to follow. This, even though I have been dabbling in programming since 1976 and I have gotten 'A's in several programming classes.
The author makes three major mistakes all throughout the book:
First, he uses compressed code formating that makes it difficult to see where one part of the code ends and another starts. I know it is common for advanced programmers and authors trying to save paper to use this format, but it should not be used in a book for beginning Java programmers. I spend more time just trying to sort out which curly bracket matches to which curly bracket than anything else in trying to read his code.
Second, he continuously uses advanced techniques and Java features in sample code meant to illustrate beginning concepts. This leaves the reader confused about what the code is doing at all and forces them to simply take on faith that what the author says about the code is true. For instance, in the section titled "Your first Java Program" (page 78) the author instantiates an anonymous object and passes it to a method. There was no reason to include this line of code. But the author stuck it in there and then waved his hands at it saying merely, "The argument is a Date object that is being created just to send its va1ue (which is automatically converted to a String) to println(). As soon as this statement is finished, that Date is unnecessary, and the garbage collector can come along and get it anytime. We don't need to worry about cleaning it up." In those few sentences the author has made reference to several more advanced features without even explaining them. So, in trying to understand that one unnecessary line of the reader is spun off on at least three different tangents. The next sample program is even worse. The very first line that actually does anything is " System.getProperties().list(System.out); " Holy cow! The System.getProperties() method returns a Properties object which is an extension of the Hashtable class. Then the second dot operator calls the list method for Properties object that has "replaced" the System.getProperties() part of the code as far as the second dot operator is concerned. The list() method then accepts as an argument a static PrintStream object which the list() method then sends its output to. And the author says merely, "The first line in main( ) displays all of the "properties" from the system where you are running the program, so it gives you environment information. The list() method sends the results to its argument, System.out." But to someone who is only just now reading this page in the book, "System.out" is how you print something, NOT something that can be passed as an argument. And have you ever tried to Google a period (.)? How is a beginner supposed to figure out that the list() method is a member of the Properties object that was returned by the System.getProperties() method. Sure, you can dig it out of the JavaDocs but a beginner won't be able to do this easily. Besides, if you are going to force the reader to dig everything out of the JavaDocs then what the heck is the book good for? This same pattern is repeated throughout the book. Every single example has something in it that is more advanced than a person who has gotten to that part of the book could reasonably be expected to be able to figure out.
Finally, the biggest problem with this book is that the author has created his own set of libraries and uses them heavily in his code but doesn't indicate where. So, if you don't have the entire JDK memorized you have no clue when he is using something from the standard libraries or something from his own libraries. If you are trying to learn the basics of Java, you don't want to have some other stuff mixed in at random. Sure, the author's libraries may solve some interesting problems and it may make some things easier to code. But it DOES NOT teach the reader about how Java works other than it is possible to completely obfuscate everything you do.
So, my conclusion is that this book is really good for nothing. It is too confusing for the beginner and is way too wordy for an expert. Intermediate users will spend more time digging through the JavaDocs than they do reading the book.
14 of 16 people found the following review helpful
The best.Aug. 14 2006
- Published on Amazon.com
I'll make this short. I depend a LOT on buyer reviews on Amazon to help me decide what to get. This book is the best book on Java, taking the reader from the basics right up to the sexy stuff in J2SE5 like queues and generics.
This is the book that my 20+ other Java books are judged against.
10 of 11 people found the following review helpful
For Beginners - BAD ! 2-nd time around - GREATMarch 18 2006
Joseph B. Cohen
- Published on Amazon.com
This is NOT a beginner's book. The sheer size of this weighty tome is overwhelming, and it does not come with rollers. It is a great book for your second pass thru Java, certainly more so than any other book that I've looked at. I have extensive teaching experience and I do spend lots of time examing books. Eckel is a very readable and much more than competent writer as attested to by the great sucess with his previous C and C++ books. They are still great reading and studying books. For Java starters, you can't do much better than the Sierra and Bates book, 'HeadFirst Java' from O'Reilly. (By the way, at good price from Amazon). Check out their newest, Design Patterns in Java. Everything in the 4th edition of this now classic Eckel book looks more polished. In agreement with other reviewers, this book lacks a polished publishing job. Where are the pictures ? A little UML might be nice. Can we get a nicer font and less huge margins.
This review is dedicated to the memory of the Sahara Forest.