Amazon.com Customer Reviews
Simply Put, This is the best of the best. - Review written on September 09, 2007
Rating: 5 out of 5
1 customer found this review not to be helpful.
Only thing you have to keep in mind: don't try to read this book like a novel, never try to read it fast, it's a HARD and LONG commitment. you have to put aside at least 3 months to digest fully, read several pages together with several examples, read the comment for those examples, try it out yourself....
compared to other so-called 'good java' books, which all put fancy graphics and stuff, this one is plain but 'THE BEST', you will gain a lot from reading it.
I have been a java progammer for several years, this books still give me so many surprise ....
trust me, you won't regret buying it if you are really want to learn...
Java done right - Review written on August 29, 2007
Rating: 5 out of 5
2 customers found this review helpful.
This book - nor the author - needs any introduction for those who have read any of the previous editions of this book, or read other books written by Eckel (Thinking in C++ series). If you are new to Java - this is the book to get you going and get you started with the latest version of Java SE5 and 6. It covers everything, literally. The book is over 1400 pages, and it covers the JAVA programming language from the beginning to advanced topics such as parallel programming with threads and even GUI and user interface design. The topics are comprehensive and field with examples demonstrating the topic which is being discussed. The examples are relatively short in length, and get to the point. There is no one example that the author builds upon, making each chapter a discourse that can easily be read separately.
There have been many important improvement and new features added to Java SE5 such as Generics and such things as Enums and better String manipulation (StringBuilder class being a prime example). Generics - or programming with Templates if you are a C++ programmer - are the most important and complicated addition to this version of Java and the author spends plenty of time explaining it. As you may very well know, programming with templates is a very challenging and somewhat daunting task in C++, and it does not get much easier in Java. The challenge with the Java programming language is that the language must be backwards compatible with the older versions of Java. This has caused the language designers to make some rather difficult choices of how generics are used in Java. Bruce covers the topic very well, and takes about a quarter of the text to talk about generics and containers in Java.
Let's not forget the other things that make Java great; things such as its Object Oriented design and its ease of programming. The good-old topics such as polymorphism, interfaces, exception handling and I/O are covered in detail as one would expect. Improvements and additions are made to the topics are needed to cover advancements made to the language. Much of the semantics of C++ are slowly making it to Java; things such as Enums, formatting of the output as one does in printf(...). One of my favorites must be the concept of annotations, similar to pre-compile directives in C, and almost exactly the same as C#. Annotations are metadata that is added to your code which tags your code with information that you can use later. You can such things are suppressing warning messages, and denote deprecated methods and other user defined tags when needed.
Threading and parallel programming, graphical user interface design and libraries, runtime type information and design patterns and their implementations mark some of the other topics that are covered throughout the book. As with his other books, you can download an electronic version of this book from Bruce Eckel's web site. All the source code is also provided, and tested with JSE5.
This book marks another great achievement for Bruce - right next to his other books. Thinking in Java is easy to read, concise, complete and filled with examples and howto's. The author covers the latest advancements to the Java programming language, and does so with ease and clarity for the beginner to advanced readers.
Barely adequate - Review written on April 22, 2007
Rating: 3 out of 5
7 customers found this review helpful, 4 did not.
I know many people think this book is excellent, but for me it was tedious, dull and impractical. And heavy! What's it weigh? 10 pounds? The pages are padded with -- I'm sorry, I just don't know a more tactful word for it -- drivel. Whatever marketing value a big thick programming book may have, it correlates negatively with usefulness, as in the present case.
Each of the examples and exercises seemed devised to illustrate some theoretical abstract aspect of OOPS (Object Oriented Programming Systems). I would have been more pleased with learning something that I might readily put to use. Compare this more abstract approach with the exposition of Perl in Wall's "Learning Perl". Wall dives right in to a loginid/password authentication application. Too simple for an e-commerce site, for sure, but sufficiently practical that you can imagine some use for it, to help cooperative coworkers avoid inadvertent interference, for example. Or consider Kernighan & Ritchie's "The C Programming Language", in which the first lesson following the "hello world" program is a Fahrenheit - Celsius conversion. Eckel is content that we print a few debugging lines indicating that a function -- er -- method (in OOPS-speak) -- executed. While showing that the method main() should accommodate some string arguments, Eckel doesn't mention using the arguments in the first dozen chapters (I didn't finish the book), although this is the sole input technique introduced.
Eckel should have started early with some kind of little project, like a craps game, or a shopping cart for a sporting goods merchant website, or even Fahrenheit - Celsius redux.
From time to time, Eckel mentions that there are situations in which the theory he presents has good use, but he leaves the reader to guess what those might be.
In short, the problem with this book is motivation. Should the reader ask "Why is this important?", there's no answer.
If you are serious about learning Object Orientated Programming, then this is the book for you. - Review written on January 09, 2007
Rating: 5 out of 5
6 customers found this review helpful.
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.
You WILL learn, but its very hard to read at times. - Review written on May 19, 2006
Rating: 4 out of 5
7 customers found this review helpful, 3 did not.
I actually got the html version of this book for free online. I got this after I wasn't at all satisfied with my first crack of learning JAVA with Wiley's "JAVA in 60 minutes a Day". After finishing that book, I suspected that A LOT of stuff was not covered this was also due to the fact the author just got plan lazy at the end.
After reading the first few chapters of TIJ 3rd edition, I thought I may have a winner. I was also and still considering getting Head first JAVA patterns, but since this book was free, I decided to go throught this one first.
As I already said reading few the first few chapters kept me interested and more importantly, I finally felt that I was learning something. The author uses pretty good examples and also more importantly, all of his code compiles and runs properly, which is more than I can say for other JAVA and other programming books in general that are rushed to the market. This book has clearly gone through serious proof reading before publishing which makes reading and studying the code much less frustrating. I can't tell you how frustrating it is to see a code snippet in a book only to compile it and it have snytax and Runtime errors all over the place. I have not run into this problem with this book so far. The only thing you have to do to some of the code is change the packages to match your own directory structure or better yet just use his verbatim.
Now for my dislikes. While this book seems to be very throrough, it can lead to VERY LOOOOONG chapters. I am still on Chapter 11: Collections of Objects, and this is my 5th day on the same chapter. Working anywhere from 8 - 10 hours / day, I don't have the time do a chapter a day. When I first started this book I usually did a chapter with the excersises in a couple of days, now its more like a week. One good thing about viewing this in a web browser is that there are no page numbers. If I actually saw how many pages some of these chapters were in the book version I would be overwhelmed. Even still the length of some of the chapters cause them to become boring and you may find yourself just wanting to rush through the last parts just so you can be done. Whenever I feel myself getting like this, I take a break and come back to it later. This forces me to to not "rush" through. I have to do this becuase I am not trying to "zoom" through the book, I am taking my time and asorbing what the author is trying to teach. I even started compiling and running his examples and actually going through each line of code to see what he's doing. This is a must in some of the later chapters because there is some subtle code that you may miss if you just read it in the book. This is not one of those "Learn x in 1 day" books. This will take time but in the end I think I will be satisfied. I think this book would also make a good reference book if you forget how to do something due to the abundance of information.
Another complaint is that his code is very hard to read at times due to his odd placement of curly braces ("{" and "}") and also he takes some shortcuts in his code occasionally. I am coming from VB6 and C++ and in C++ I am accustomed to having my curly braces on different lines especialy with a class and function definition. However he frequently uses this format: (note: the tabbing is not captured below)
class A {
private int i;
public void f(){
//do something.
}
}
I would write the exact same class this way: (again, tabbing is not captured.)
class A
{
private int i;
public void f()
{
//do something
}
}
Of course both versions are perfectly fine, but it just comes down to a readability issue and what you are used to. It may not seem like a big deal to begin with, but once the programs get more complicated, if you are used to my or one of your own styles his code will become very hard to read. I ended up copying his code into Notepad and placing the braces as I am used to so I can more easily read the code.
His writting is also very hard to read at times. He frequently uses parenthesis to explain something else while he's still trying to explain what he was originally talking about. His overuse of parenthesis can throw you off your original thought if you are not careful.
Examples:
"As expected, arrays are faster than any container for random-access lookups and iteration. You can see that random accesses (get( )) are cheap for ArrayLists and expensive for LinkedLists. (Oddly, iteration is faster for a LinkedList than an ArrayList, which is a bit counterintuitive.) On the other hand,....."
"You need to build only one container, and any Java object will go into that container. (Except for primitives, which can be placed in containers as constants using the Java primitive wrapper classes, or as changeable values by wrapping in your own class.) This is the second place where an array is superior to the generic containers: When you create an array, you create it to hold a specific type (which is related to the third factor--an array can hold primitives, whereas a container cannot). This means that you get compile-time ..."
A final complaint is that he occassionally throws in some things in is sample code that he has not gone over yet. Many times he explains what he does AFTER the code, but sometimes you are left wondering what the heck he just did, hoping that it would be covered in the next section or a later chapter.
In summary this is a good book for me so far. It can be time consuming, frustrating and boring in some places, but I think the author does a good job in teaching you. As others have said this book is not for beginners and definetely not for someone who has no Object Oriented exposure with any language. This is my second time "learning" JAVA and I am getting through it probably because I was already at least familiar with many of the things he teaches. If this was my first run through it, I probably would be having a much, much harder time. This book is doing a much better job than those watered down "Learn JAVA in 2 hours!" books.
The deepest Java book I have encountered - Review written on May 03, 2006
Rating: 3 out of 5
1 customer found this review helpful, 1 did not.
This book seem to contain all stuff you need, so far. I reccomend buying it in english, you have bargain priced books here. You also need to buy solutions for exercises for 20 bucks, so far there are solutions for 2nd edition exercises and 3rd edition.
I reccomend buying book in english, since translation can be tricky, at least the one published in my country.
Id say Eckel doesn't choose so obvious examples for what he wants to explain, and he lacks finesse in writing so you have to read REAL slow, but this book is Ok so far I've read it.
Second thing I don't like is how Eckel chose to put stuff together: in one chapter, he begins wih constructors, then goes to explain finalize command, then to explain static. He does relatively good job, but he could structure book better.
Now, when you add 20 bucks for exercise solutions and then some for hardcopy of book, Isn't that a little too much? Couldn't they sell the book and give away free CD/PDF file with solutions of homework questions? Or write answers at the end of the book? This reminds me of selling someone bycicle with flat tires or with no seat...
I wouldn't reccomend this book to newbies in world of obj oriented languages. When you become little more experienced (buy two books from Barry Burd, Java for Dummies one and two)or attend some Java classes, start reading Eckel and you will understand it.
---------------------------------------------------------------------
After reading half of the book, I really got dissapointed in Chapter 9 , Holding Objects. Writer assumed, I guess, that everyone is software engineer or programer, so he doesnt start with lists, sets and maps, but with HIS code that uses Java classes. You either have to read it 4 times, OR ask for help OR know things before reading. Thanx god Eckel wrote good exercises, but one warning: there are some exercises which use constructors never mentioned, so you have to go to [...] or ask around.
-----------------------------------------------------------------
Ok, after chap 9 I had to hurry up and skipped some stuff I didn't need. It seems chapters after 9 are more understandable. I didn't have time to read whole book and do all homeworks, but ok, I still think it is deepest I have concerning Java.
Complete coverage, sheer drudgery, not a suitable first tutorial - Review written on March 15, 2006
Rating: 3 out of 5
6 customers found this review helpful.
[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.
Very Good book with some flaws - Review written on August 24, 2005
Rating: 3 out of 5
3 customers found this review helpful.
This book does an excellent job of introducing reader to the concepts and intricacies of Java language. The author shows deep understanding of language, and communicates in a clear and conversational way. However, I would have liked to see more diagrams in this book. Of all the Java books on planet, this one probably has the least number of diagrams, which in my opinion, is not a good thing as many people, including me, are spatial learners and understand things much better through illustrations. The biggest problem I had was that the chapter on GUI does not have even a single diagram or picture, which made it very difficult for me to visualize many things.
Other than this single aspect, the book is great. It is interesting to read, has big size font, and the examples and exercises are focussed on language concepts rather than fancy stuff.
I LOVE this book - Review written on March 19, 2005
Rating: 5 out of 5
4 customers found this review helpful, 1 did not.
This book is available, for free, from the author's website (www.bruceeckel.com); the book, however, is far easier to read in book form than your monitor or a foot-high stack of printouts.
What I love so much about this book is that Eckel doesn't so much tell you how to "go through the motions" of writing Java (like 99% of programming reference books), but instead goes into great detail about what the creators of the language were actually trying to accomplish, and why they did what they did. The net effect is that you are truly able to "think in Java" (corny, I know...).
For the same reasons, however, I wouldn't recommend this book to novice programmers. Many of the concepts covered (such as heap allocation, upcasting/downcasting, JavaDoc, etc...) go into some fairly abstract computer science ideas, and while this material is covered in an extremely easy-to-follow fashion, I think much of it will go over newbie heads.
An excellent book from an excellent author - Review written on October 03, 2004
Rating: 5 out of 5
1 customer found this review helpful, 1 did not.
"Thinking in Java" covers the fundamental features of Java programming (objects, classes, interfaces, polymorphism, input/output system, threads, applets, Swing) in a clear and extensive way, with the use of simple but very understandable examples and instructive exercises.
If you are looking for a text that really teach you Java, "Thinking in Java" is a forced choice!