|Thinking in Java|
source ref: work2.html
The JDK from java.sun.com. Even if you choose to use a third-party
development environment, its always a good idea to have the JDK on hand in case you
come up against what might be a compiler error. The JDK is the touchstone, and if there is
a bug in it, chances are it will be well known. .
The JDK documentation from java.sun.com, in HTML. I have never found a
reference book on the standard Java libraries that wasnt out of date or missing
information. Although the HTML documentation from Sun is shot-through with small bugs and
is sometimes unusably terse, all the classes and methods are at least there. People
are sometimes uncomfortable at first using an online resource rather than a printed book,
but its worth your while to get over this and open the HTML docs first so you can at
least get the big picture. If you cant figure it out at that point, then reach for
the printed books. .
Thinking in Java, 2nd Edition. Available as fully-indexed,
color-syntax-highlighted HTML on the CD ROM bound in with this book, or as a free download
from www.BruceEckel.com. Includes material that
didnt make it into the third edition; see the table of contents in that book for
Thinking in Java, 1st Edition. Available as fully-indexed,
color-syntax-highlighted HTML on the CD ROM bound in with this book, or as a free download
from www.BruceEckel.com. Includes older material and material that was not
considered interesting enough to carry through to the second edition. .
Just Java 2, 5th edition by Peter van der Linden (Prentice
Hall, 2002). Not only useful but fun. He often takes a similar approach as I do, and
doggedly follows a problem through to discover the complete details, so he often has
answers you wont find elsewhere. .
Core Java 2, Volume IFundamentals (Prentice-Hall, 1999) and Volume
IIAdvanced Features (2000), by Horstmann & Cornell.. Huge, comprehensive, and
the first place I go when Im hunting for answers. The book I recommend when
youve completed Thinking in Java and need to cast a bigger net. .
The Java Class Libraries: An Annotated Reference, by Patrick Chan
and Rosanna Lee (Addison-Wesley, 1997). Although sadly out of date, this is what the JDK
reference should have been: enough description to make it usable. One of the
technical reviewers for Thinking in Java said, If I had only one Java book,
this would be it (well, in addition to yours, of course). Im not as thrilled
with it as he is. Its big, its expensive, and the quality of the examples
doesnt satisfy me. But its a place to look when youre stuck and
it seems to have more depth (and sheer size) than most alternatives. .
Java Network Programming, 2nd Edition, by Elliotte Rusty
Harold (OReilly, 2000). I didnt begin to understand Java networking until I
found this book. I also find his Web site, Café au Lait, to be a stimulating,
opinionated, and up-to-date perspective on Java developments, unencumbered by allegiances
to any vendors. His regular updates keep up with fast-changing news about Java. See www.cafeaulait.org.
Design Patterns, by Gamma, Helm, Johnson and Vlissides (Addison-Wesley,
1995). The seminal book that started the patterns movement in programming. .
Practical Algorithms for Programmers, by Binstock & Rex
(Addison-Wesley, 1995). The algorithms are in C, so theyre fairly easy to translate
into Java. Each algorithm is thoroughly explained. .
Extreme Programming Explained,
by Kent Beck (Addison-Wesley, 2000). I love this book.
Yes, I tend to take a radical approach to things but I've always felt that there could be
a much different, much better program development process, and I think XP comes pretty
darn close. The only book that has had a similar impact on me was PeopleWare (described
later), which talks primarily about the environment and dealing with corporate culture. Extreme
Programming Explained talks about programming and turns most things, even recent
findings, on their ear. They even go so far as to say that pictures are OK as
long as you dont spend too much time on them and are willing to throw them away.
(Youll notice that this book does not have the UML stamp of
approval on its cover.) I could see deciding to work for a company based solely on
whether they used XP. Small book, small chapters, effortless to read, exciting to think
about. You start imagining yourself working in such an atmosphere, and it brings visions
of a whole new world. .
UML Distilled, 2nd
Edition, by Martin Fowler (Addison-Wesley, 2000). When you
first encounter UML, it is daunting because there are so many diagrams and details.
According to Fowler, most of this stuff is unnecessary, so he cuts through to the
essentials. For most projects, you only need to know a few diagramming tools, and
Fowlers goal is to come up with a good design rather than worry about all the
artifacts of getting there. A nice, thin, readable book; the first one you should get if
you need to understand UML. .
The Unified Software Development Process, by Ivar
Jacobsen, Grady Booch, and James Rumbaugh (Addison-Wesley, 1999). I went in fully prepared
to dislike this book. It seemed to have all the makings of a boring college text. I was
pleasantly surprisedalthough there are a few parts that have explanations that seem
as if those concepts arent clear to the authors. The bulk of the book is not only
clear, but enjoyable. And best of all, the process makes a lot of practical sense.
Its not Extreme Programming (and does not have their clarity about testing), but
its also part of the UML juggernaut; even if you cant get XP adopted, most
people have climbed aboard the UML is good bandwagon (regardless of their actual level of experience with it),
so you can probably get it adopted. I think this book should be the flagship of UML, and
the one you can read after Fowlers UML Distilled when you want more detail. .
Before you choose any method, its helpful to gain perspective from those who are
not trying to sell one. Its easy to adopt a method without really understanding what
you want out of it or what it will do for you. Others are using it, which seems a
compelling reason. However, humans have a strange little psychological quirk: If they want
to believe something will solve their problems, theyll try it. (This is
experimentation, which is good.) But if it doesnt solve their problems, they may
redouble their efforts and begin to announce loudly what a great thing theyve
discovered. (This is denial, which is not good.) The assumption here may be that if you
can get other people in the same boat, you wont be lonely, even if its going
nowhere (or sinking). .
This is not to suggest that all methodologies go nowhere, but that you should be armed
to the teeth with mental tools that help you stay in experimentation mode (Its
not working; lets try something else) and out of denial mode (No,
thats not really a problem. Everythings wonderful, we dont need to
change). I think the following books, read before you choose a method, will
provide you with these tools. .
Software Creativity, by Robert Glass (Prentice
Hall, 1995). This is the best book Ive seen that discusses perspective on the
whole methodology issue. Its a collection of short essays and papers that Glass has
written and sometimes acquired (P.J. Plauger is one contributor),
reflecting his many years of thinking and study on the subject. Theyre entertaining
and only long enough to say whats necessary; he doesnt ramble and bore you.
Hes not just blowing smoke, either; there are hundreds of references to other papers
and studies. All programmers and managers should read this book before wading into the
methodology mire. .
Software Runaways: Monumental Software Disasters, by Robert Glass
(Prentice Hall, 1997). The great thing about this book is that it brings to the forefront
what we dont talk about: the number of projects that not only fail, but fail
spectacularly. I find that most of us still think that cant happen to me
(or that cant happen again), and I think this puts us at a
disadvantage. By keeping in mind that things can always go wrong, youre in a much
better position to make them go right. .
Peopleware, 2nd Edition, by Tom Demarco and Timothy Lister (Dorset House, 1999). You must
read this book. Its not only fun, but it rocks your world and destroys your
assumptions. Although they have backgrounds in software development, this book is about
projects and teams in general. But the focus is on the people and their needs,
rather than the technology and its needs. They talk about creating an environment where
people will be happy and productive, rather than deciding what rules those people should
follow to be adequate components of a machine. This latter attitude, I think, is the
biggest contributor to programmers smiling and nodding when XYZ method is adopted and then
quietly doing whatever theyve always done. .
Secrets of Consulting: A Guide to Giving & Getting Advice Successfully,
by Gerald M. Weinberg (Dorset House, 1985). A superb book, one of my all-time favorites.
Its perfect if you are trying to be a consultant or if youre working
with consultants and trying to do a better job. Short chapters, filled with stories and
anecdotes that teach you how to get to the core of the issue with minimal struggle. Also
see More Secrets of Consulting, published in 2002, or most any other Weinberg book.
Complexity, by M. Mitchell Waldrop (Simon &
Schuster, 1992). This chronicles the coming together in Santa Fe, New Mexico of a group of
scientists from different disciplines, to discuss real problems that their individual
disciplines couldnt solve (the stock market in economics, the initial formation of
life in biology, why people do what they do in sociology, etc.). By crossing physics,
economics, chemistry, math, computer science, sociology, and others, a multidisciplinary
approach to these problems is developing. But more important, a different way of thinking
about these ultra-complex problems is emerging: away from mathematical determinism and the
illusion that you can write an equation that predicts all behavior, and toward first observing
and looking for a pattern and trying to emulate that pattern by any means possible.
(The book chronicles, for example, the emergence of genetic algorithms.) This kind of
thinking, I believe, is useful as we observe ways to manage more and more complex software
Learning Python, by Mark Lutz and David Ascher (OReilly, 1999). A
nice programmers introduction to my favorite language, an excellent companion to
Java. The book includes an introduction to Jython, which allows you to combine Java and
Python in a single program (the Jython interpreter is compiled to pure Java bytecodes, so
there is nothing special you need to add to accomplish this). This language union promises
great possibilities. .
Listed in order of publication. Not all of these are currently available. .
Computer Interfacing with Pascal & C, (Self-published via the
Eisys imprint, 1988. Only available via www.BruceEckel.com). An introduction to
electronics from back when CP/M was still king and DOS was an upstart. I used high-level
languages and often the parallel port of the computer to drive various electronic
projects. Adapted from my columns in the first and best magazine I wrote for, Micro
Cornucopia. (To paraphrase Larry OBrien, long-time editor of Software
Development Magazine: The best computer magazine ever publishedthey even had
plans for building a robot in a flower pot!) Alas, Micro C became lost long before the
Internet appeared. Creating this book was an extremely satisfying publishing experience. .
Using C++, (Osborne/McGraw-Hill, 1989). One of the first books out
on C++. This is out of print and replaced by its second edition, the renamed C++ Inside
& Out. .
C++ Inside & Out, (Osborne/McGraw-Hill, 1993). As noted,
actually the second edition of Using C++. The C++ in this book is reasonably
accurate, but it's circa 1992 and Thinking in C++ is intended to replace it. You
can find out more about this book and download the source code at www.BruceEckel.com.
Thinking in C++, 1st Edition, (Prentice Hall, 1995). .
Thinking in C++, 2nd Edition, Volume 1, (Prentice Hall, 2000).
Downloadable from www.BruceEckel.com. .
Thinking in C++, 2nd Edition, Volume 2, Coauthored with Chuck
Allison (Prentice Hall, 2003). Downloadable from www.BruceEckel.com.
Thinking in C#, By Larry OBrien and Bruce Eckel. This is
Larrys translation of Thinking in Java into C#, with some help from me
(Prentice Hall, 2003).
Black Belt C++: the Masters Collection, Bruce Eckel, editor
(M&T Books, 1994). Out of print. A collection of chapters by various C++ luminaries
based on their presentations in the C++ track at the Software Development Conference,
which I chaired. The cover on this book stimulated me to gain control over all future
cover designs. .
Thinking in Java, 1st Edition, (Prentice Hall, 1998). The
first edition of this book won the Software Development Magazine Productivity
Award, the Java Developers Journal Editors Choice Award, and the JavaWorld
Readers Choice Award for best book. On the CD ROM in the back of this book, and
downloadable from www.BruceEckel.com. .
Thinking in Java, 2nd Edition, (Prentice Hall, 2000). This
edition won the JavaWorld Editors Choice Award for best book. On the CD ROM
in the back of this book, and downloadable from www.BruceEckel.com. .