For non-programmers looking to make the transition to becoming a
programmer, this book is a fine place to start. It works well as both a
self-study text, and as a classroom textbook.
There aren't a lot
of Java books out there written to teach the language to
non-programmers. In many ways the Java language was created for C
programmers, and most of the available books are written for the same
audience--programmers familiar with C or C++. To my knowledge, there are
presently only two books that are generally available intended to teach
Java to the non-programmer.
Edit: since this was written, several more books of this type have come out. The situation is far better now!The First Step is Always the HardestAs
appropriate for a beginner's book, this book starts with a fair amount
of detail on how to get set up and get started. It's challenging to
strike the right balance with this material, some beginners get up and
running with a minimum of effort, others run into trouble from
unanticipated sources--leaving them in a position where almost no amount
of information seems like enough. I think this book strikes a good
balance, referring to external sources for supplemental material. Best
of all, it maintains a platform-agnostic approach. You would think this
is a given in a book teaching a platform-agnostic language, but it's
not.
As appropriate for a beginner's book, the book teaches the
principles of programming first, and Java second. The exercises of the
seven chapters take the form of console, or command-line applications.
Graphical applications are introduced about 2/3rds of the way through
the book, in chapter 8. Most of the examples take the form of simple
games.
The book teaches the basics of programming--variables,
operators, flow control and such--in the first four chapters. The pacing
of this material is very good, it teaches enough to not only cover the
absolute core but some of the extra twists, and moves through it before
it becomes tedious. Chapters five through seven get into object-oriented
programming. The placement of this material in the book is great, going
any further without introducing the material would be a bad idea, and
any sooner would have been confusing to non-programmers.
Comprehensive CoverageOverall
the book covers a lot of ground. Someone working through this book from
beginning to end is going to come out with a strong knowledge of a lot
of Java. Each chapter ends with a number of exercises, which are
essential additions to the examples in the text for the student to have
the ability to really synthesize the information and go from program
copier to a writing their own programs.
The breadth of the
coverage is one of the books' strongest points. The material is
well-paced, and the many complete examples of working programs are a
huge advantage over the snippets that many books rely on. Exception
handling, class creation, and many other subjects are covered. About the
only thing I could ask for that isn't here is a brief introduction to
threads, but I wouldn't even consider the idea of adding this if the
book wasn't already so comprehensive.
ErrataOne
of the problems this book has is the typos in the program text. They
are not numerous, and often even beginners can see the flaws once they
know to look for them. They aren't common, only a few of the programs
have errors in them. But they can be frustrating when they occur for
those who are learning on their own.
Reaching Too Far?Some
of the examples try to do a bit too much, too. Rather than
concentrating on one key point they add several new items at once. The
centerpiece of each program is always the subject of the lesson, but
additional little items get slipped into the examples. It's also worth
noting that the examples that use special characters don't account for
the configuration of the Terminal in Mac OS X that interferes with using
these characters in the same fashion as on other platforms.
The
later examples in the book also tend to get quite long. This results in a
lot of typing by the beginner before they see any results. Likewise,
this ties into the problem with many exercises not concentrating on the
specific subject of the lesson. Particularly when graphics are
introduced, I would have liked to see very short, focused examples that
do only the absolute minimum to open a window and do some drawing, then
add other interaction (such as the mouse, keyboard shortcuts, widgets,
etc.) piecemeal. I ended up using my own example programs in my class to
introduce graphics, and it went considerably smoother than I have had
it go with students that followed the book alone.
(I will be posting these examples in this blog when I get into graphics.)
I would also like to have seen graphics introduced earlier in the book,
allowing more examples to use graphics. This would also start the
student making what look like "real applications" in the modern
environment earlier in the learning process.
SummaryI feel this is a great book for a new programmer. Further, Java is a great language for a new programmer.
Groovy
may be better, but the resources available for a beginning programmer
are still slim at this point, and I haven't actually had the experience
of teaching it to beginners yet.
Edit:
There are many other languages that run on the JVM now, the others that
can access the graphics and sound facilities natively (rather than
through special calls to access Java syntax) would also be good
candidates.Final Grade: 85%, B
Pros:
Good material and pacing, (mostly) fun examples.
Covers lots of Java, and does it well.
Platform-agnostic.
Cons:
Typos in examples.
Discussion gets dry in places.
Examples in the later parts of the book are long and do too much at once.
Recommendation:
Buy
if you're a non-programmer looking to become a programmer and want to
do it with just one book. If you're willing to work out of more than one
book, you may also want to consider
Beginning Programming with Java for Dummies
by Brad Burd (I'll be posting a mini-review of this book soon.) This
also makes a good textbook for teachers looking for a class textbook
thanks to the organization of the book and the chapter exercises.