

|
Thinking in Java (4th Edition) (Paperback)
by Bruce Eckel
Category:
Java language, Software development, IT, Technology |
Market price: ¥ 588.00
MSL price:
¥ 578.00
[ Shop incentives ]
|
Stock:
Pre-order item, lead time 3-7 weeks upon payment [ COD term does not apply to pre-order items ] |
MSL rating:
Good for Gifts
|
MSL Pointer Review:
A book that has many awards and raves from programmers worldwide for its extraordinary clarity, careful organization, and real life examples. |
If you want us to help you with the right titles you're looking for, or to make reading recommendations based on your needs, please contact our consultants. |
 Detail |
 Author |
 Description |
 Excerpt |
 Reviews |
|
|
Author: Bruce Eckel
Publisher: Prentice Hall PTR
Pub. in: February, 2006
ISBN: 0131872486
Pages: 1150
Measurements: 9.3 x 7 x 2.1 inches
Origin of product: USA
Order code: BA00537
Other information: 4 edition
|
Rate this product:
|
- Awards & Credential -
Software Development Magazine Jolt Award for Best Book in 2003 and Java Developer's Journal Reader's Choice Award for Best Book in 2002. |
- MSL Picks -
The first portion of this book (after the obligatory stuffing at the beginning) is a brief primer on OO concepts. I found this section to be helpful because I already understand the fundamental elements of OOP, and I was looking to clarify what I already know. There were a precious few examples to help make his points, and that's all good, but there needs to be more. There were several keywords thrown about, with no prior mention (and, in some cases, statements like "You'll learn more about this in later chapters"). In a few cases, pulling them together into a program is left as an exercise, and the solutions are not included with the book. For someone with a foundation already, it is sufficient, but for someone with less knowledge it will leave the reader frustrated. Also, this is not intended to be a complete study on OOP, and the reader, beginner or advanced, should keep this in mind.
Just as in his other book, the author goes into great depth to the point of being wordy about different topics. He explains in detail the particulars of the topic he is trying to explain, and he gives examples that focus on the topic at hand and tend to avoid fluff. This is, in my opinion, the strongest aspect of this book.
Another point about this book that pleases me is that, unlike most other tomes on Java, Eckel avoided hitting graphical programming until MUCH later in the book. This is excellent, in my opinion, in that muddying in the waters with graphics, message passing, etc. only adds confusion - cover the absolute basics first, *then* get to the "cool" topics like graphics.
As he explains the Java language, Eckel often explains why certain language aspects are present, and the decisions that led up to their implementation. So, the reader not only knows what, but why. This will benefit many (myself included), but some people - especially those in a hurry to get about the business of learning the language particulars with no regard for why - might be frustrated by the wordiness.
One thing that can be very annoying is that the author constantly refers back to C and C++. For those who know either of those languages (particularly C++), this is a good point of reference. For those who don't, it can be a sore spot. The book does include an electronic copy of Thinking in C on the CD, but chances are high that the reader bought this book to learn Java, not C. Most Java books teach Java as a standalone language - this one relies a bit heavily on C++ as a point of reference. Overall, this is a good book, but not perfect. Those readers who already know C++ in particular will reap the biggest harvest from this book, but everyone can benefit from this book.
Readers can find the changes of the 4th edition in the author’s Preface, part of which we quoted in the Excerpt.
(From quoting Mathre Morgan, USA)
Target readers:
Java programmers, Computer Science majors, People interested in learning Java.
|
- Better with -
Better with
Head First Java, 2nd Edition [ILLUSTRATED]
:
|
Customers who bought this product also bought:
 |
Head First Java, 2nd Edition [ILLUSTRATED] (Paperback)
by Kathy Sierra, Bert Bates
A wonderful job of explaining not only the how-to, but also the "why" of Java fundamentals, in very down-to-earth language. |
 |
Code Complete, Second Edition (Paperback)
by Steve McConnell
Focusing on actual code construction, but touching on every aspect of software engineering including psychology/behavior, this book is an essential reading for every and all developers. |
 |
The Pragmatic Programmer: From Journeyman to Master (Paperback)
by Andrew Hunt, David Thomas
A classic reading on programming ranking with Code Complete and The Mythtical Man-Month. |
 |
Effective Java Programming Language Guide (Paperback)
by Joshua Bloch
An essential reference on the nuances of Java, which you’ll consult from time to time. A must-own for Java developers. |
|
Bruce Eckel is president of MindView, Inc. (www.MindView.net), which provides public and private training seminars, consulting, mentoring, and design reviews in object-oriented technology and design patterns. He is the author of several books, has written more than fifty articles, and has given lectures and seminars throughout the world for more than twenty years. Bruce has served as a voting member of the C++ Standards Committee. He holds a B.S. in applied physics and an M.S. in computer engineering.
|
From the Publisher:
The legendary author Bruce Eckel brings Java to life with this extra- ordinarily insightful, opinionated and downright funny introduction. Thinking in Java introduces all of the language's fundamentals, one step at a time, using to-the-point code examples. More than virtually any other book, Thinking in Java helps you understand not just what to do - but why. Eckel introduces all the basics of objects as Java uses them; then walks carefully through the fundamental concepts underlying all Java programming - including program flow, initialization and cleanup, hiding implementations, reusing classes and polymorphism. Using extensive, to-the-point examples, he introduces error handling, exceptions, Java I/O, run-time type identification, and passing and returning objects. He covers the Java AWT, multithreading, network programming with Java - even design patterns. The best way to understand the real value of this book is to hear what readers of the online version have been saying about it: "much better than any other Java book I've seen, by an order of magnitude..." "mature, consistent, intellectually honest, well-written and precise..." "a thoughtful, pene- trating analytical tutorial which doesn't kowtow to the manufacturers..." "Thank you again for your awesome book. I was really floundering, but your book has brought me up to speed as quickly as I could read it!"For both beginner and experienced C and C++ programmers who want to learn Java.
* From the basics of object development, all the way to design patterns and other advanced topics.
* By the author of the best-selling Thinking in C++ - winner of the 1995 Jolt Cola Award!
* On-line version has already received tens of thousands of hits - there's a huge built-in demand for this book!
|
I originally approached Java as "just another programming language," which in many senses it is.
But as time passed and I studied it more deeply, I began to see that the fundamental intent of this language was different from other languages I had seen up to that point.
Programming is about managing complexity: the complexity of the problem you want to solve, laid upon the complexity of the machine in which it is solved. Because of this complexity, most of our programming projects fail. And yet, of all the programming languages of which I am aware, almost none have gone all out and decided that their main design goal would be to conquer the complexity of developing and maintaining programs.1 Of course, many language design decisions were made with complexity in mind, but at some point there were always other issues that were considered essential to be added into the mix. Inevitably, those other issues are what cause programmers to eventually "hit the wall" with that language. For example, C++ had to be backwards-compatible with C (to allow easy migration for C programmers), as well as efficient. Those are both very useful goals and account for much of the success of C++, but they also expose extra complexity that prevents some projects from being finished (certainly, you can blame programmers and management, but if a language can help by catching your mistakes, why shouldn't it?). As another example, Visual BASIC (VB) was tied to BASIC, which wasn't really designed to be an extensible language, so all the extensions piled upon VB have produced some truly unmaintainable syntax. Perl is backwards-compatible with awk, sed, grep, and other Unix tools it was meant to replace, and as a result it is often accused of producing "write-only code" (that is, after a while you can’t read it). On the other hand, C++, VB, Perl, and other languages like Smalltalk had some of their design efforts focused on the issue of complexity and as a result are remarkably successful in solving certain types of problems.
What has impressed me most as I have come to understand Java is that somewhere in the mix of Sun's design objectives, it seems that there was a goal of reducing complexity for the programmer. As if to say, "We care about reducing the time and difficulty of producing robust code." In the early days, this goal resulted in code that didn't run very fast (although this has improved over time), but it has indeed produced amazing reductions in development time - half or less of the time that it takes to create an equivalent C++ program. This result alone can save incredible amounts of time and money, but Java doesn't stop there. It goes on to wrap many of the complex tasks that have become important, such as multithreading and network programming, in language features or libraries that can at times make those tasks easy. And finally, it tackles some really big complexity problems: cross-platform programs, dynamic code changes, and even security, each of which can fit on your complexity spectrum anywhere from "impediment" to "show-stopper." So despite the performance problems that we've seen, the promise of Java is tremendous: It can make us significantly more productive programmers.
In all ways - creating the programs, working in teams, building user interfaces to communicate with the user, running the programs on different types of machines, and easily writing programs that communicate across the Internet - Java increases the communication bandwidth between people.
I think that the results of the communication revolution may not be seen from the effects of moving large quantities of bits around. We shall see the true revolution because we will all communicate with each other more easily: one-on-one, but also in groups and as a planet. I've heard it suggested that the next revolution is the formation of a kind of global mind that results from enough people and enough interconnectedness. Java may or may not be the tool that foments that revolution, but at least the possibility has made me feel like I'm doing something meaningful by attempting to teach the language.
Java SE5 and SE6
This edition of the book benefits greatly from the improvements made to the Java language in what Sun "originally called JDK 1.5, and then later changed to JDK5 or J2SE5, then finally they dropped the outdated "2" and changed it to Java SE5. Many of the Java SE5 language changes were designed to improve the experience of the programmer. As you shall see, the Java language designers did not completely succeed at this task, but in general they made large steps in the right direction.
One of the important goals of this edition is to completely absorb the improvements of Java SE5/6, and to introduce and use them throughout this book. This means that this edition takes the somewhat bold step of being "Java SE5/6-only," and much of the code in the book will not compile with earlier versions of Java; the build system will complain and stop if you try. However, I think the benefits are worth the risk.
If you are somehow fettered to earlier versions of Java, I have covered the bases by providing free downloads of previous editions of this book via www.MindView.net. For various reasons, I have decided not to provide the current edition of the book in free electronic form, but only the prior editions.
Java SE6
This book was a monumental, time-consuming project, and before it was published, Java SE6 (code-named mustang) appeared in beta form. Although there were a few minor changes in Java SE6 that improved some of the examples in the book, for the most part the focus of Java SE6 did not affect the content of this book; the features were primarily speed improvements and library features that were outside the purview of this text.
The code in this book was successfully tested with a release candidate of Java SE6, so I do not expect any changes that will affect the content of this book. If there are any important changes by the time Java SE6 is officially released, these will be reflected in the book’s source code, which is downloadable from www.MindView.net.
The cover indicates that this book is for "Java SE5/6," which means "written for Java SE5 and the very significant changes that version introduced into the language, but is equally applicable to Java SE6."
The 4th edition
The satisfaction of doing a new edition of a book is in getting things "right," according to what I have learned since the last edition came out. Often these insights are in the nature of the saying "A learning experience is what you get when you don't get what you want," and my opportunity is to fix something embarrassing or simply tedious. Just as often, creating the next edition produces fascinating new ideas, and the embarrassment is far outweighed by the delight of discovery and the ability to express ideas in a better form than what I have previously achieved.
There is also the challenge that whispers in the back of my brain, that of making the book something that owners of previous editions will want to buy. This presses me to improve, rewrite and reorganize everything that I can, to make the book a new and valuable experience for dedicated readers.
Changes
The CD-ROM that has traditionally been packaged as part of this book is not part of this edition. The essential part of that CD, the Thinking in C multimedia seminar (created for MindView by Chuck Allison), is now available as a downloadable Flash presentation. The goal of that seminar is to prepare those who are not familiar enough with C syntax to understand the material presented in this book. Although two of the chapters in this book give decent introductory syntax coverage, they may not be enough for people without an adequate background, and Thinking in C is intended to help those people get to the necessary level.
The Concurrency chapter (formerly called "Multithreading") has been completely rewritten to match the major changes in the Java SE5 concurrency libraries, but it still gives you a basic foundation in the core ideas of concurrency. Without that core, it's hard to understand more complex issues of threading. I spent many months working on this, immersed in that netherworld called "concurrency," and in the end the chapter is something that not only provides a basic foundation but also ventures into more advanced territory.
There is a new chapter on every significant new Java SE5 language feature, and the other new features have been woven into modifications made to the existing material. Because of my continuing study of design patterns, more patterns have been introduced throughout the book as well.
The book has undergone significant reorganization. Much of this has come from the teaching process together with a realization that, perhaps, my perception of what a "chapter" was could stand some rethought. I have tended towards an unconsidered belief that a topic had to be "big enough" to justify being a chapter. But especially while teaching design patterns, I find that seminar attendees do best if I introduce a single pattern and then we immediately do an exercise, even if it means I only speak for a brief time (I discovered that this pace was also more enjoyable for me as a teacher). So in this version of the book I've tried to break chapters up by topic, and not worry about the resulting length of the chapters. I think it has been an improvement.
|
|
View all 16 comments |
Randall R. Hawley (automation technician, Eli Lilly & Co) (MSL quote), USA
<2007-01-10 00:00>
Thank you again for your awesome book. I was really floundering (being a non-C programmer), but your book has brought me up to speed as fast as I could read it. It’s really cool to be able to understand the underlying principles and concepts from the start, rather than having to try to build that conceptual model through trial and error. Hopefully I will be able to attend your seminar in the not-too-distant future. |
Josh Long (MSL quote), USA
<2007-01-10 00:00>
Thinking in Java leads you from almost absolute ignorance of programming and plants you neatly, and more enlightened, on the path to viable Java programming. All the contrivd metaphors aside, Thinking in Java is the de facto bible of Java programming and continues to speak to ideas that later become standards. The book discusses (and this is what makes or breaks any good programming book) not just how one would accomplish something, but more pertinantly, why someone would do something. Modern-day programming can be a haze of buzzwords without justification. This book does that, and it does it well. |
Robert S. Stephenson (MSL quote), USA
<2007-01-10 00:00>
Other books cover the what of Java (describing the syntax and the libraries) or the how of Java (practical programming examples). Thinking in Java is the only book I know that explains the why of Java: Why it was designed the way it was, why it works the way it does, why it sometimes doesn’t work, why it’s better than C++, why it’s not. Although it also does a good job of teaching the what and how of the language, Thinking in Java is definitely the thinking person’s choice in a Java book. |
Erik Midtskogen (MSL quote), USA
<2007-01-10 00:00>
I love and have bought this book for all the reasons I loved (and bought) the first two editions, and I appreciate the expanded coverage and extra refinement of the new one.
I won't repeat at length what I said about the first two editions, but I will simply say that this book's title is very appropriate. It isn't just about how to do this or that in Java, but about a new philosophy of OOP as a form of communication. This way of thinking of things leads to methodologies - such as the Design Patterns movement - that are far more successful at dealing with complex and dynamic systems than the more simplistic and direct approaches taken by most previous languages and methodologies.
I won't say that Thinking In Java is quick and easy reading or that most readers will get everything the first time through. I've followed the three editions through, exercises and all, a total of five times now, and I was still learning new stuff the last time through. This is no fault of the book. Learning Java is like learning chess. The rules may be relatively simple, but the implications of those rules are very rich in interesting possibilities, and also potentially very complex. It is to the credit of this book that it provides an intellectual path to this infinite universe of power and complexity for non-genius workaday programmers such as myself.
Some other posters have complained that it takes too long to learn how to do some particular concrete task, or there isn't enough sample code to cut and paste into their projects, or that there aren't enough pretty pictures to guide them through how to do stuff. Thinking In Java is not a cookbook. It will do nothing to help the drag-and-drop scripting crowd that approaches the craft of programming as an exercise in cobbling together ready-made bits of code without bothering to understand how anything they are using actually works. It is doubtful that such people will ever understand and appreciate this book or the Java language itself, for that matter. I would suggest they they stick with Visual Basic until they have the time to devote to learning Object Oriented Programming, which VB is not. |
View all 16 comments |
|
|
|
|