Like
any human language, Java provides a way to express concepts. If successful,
this medium of expression will be significantly easier and more flexible than
the alternatives as problems grow larger and more complex.
You
can’t look at Java as just a collection of features; some of the features
make no sense in isolation. You can use the sum of the parts only if you are
thinking about
design,
not simply coding. And to understand Java in this way, you must understand the
problems with it and with programming in general. This book discusses
programming problems, why they are problems, and the approach Java has taken to
solve them. Thus, the set of features I explain in each chapter are based on
the way I see a particular type of problem being solved with the language. In
this way I hope to move you, a little at a time, to the point where the Java
mindset becomes your native tongue.
Throughout,
I’ll be taking the attitude that you want to build a model in your head
that allows you to develop a deep understanding of the language; if you
encounter a puzzle you’ll be able to feed it to your model and deduce the
answer.