If you want to learn to program this is an excellent book as long as you keep in mind that Java is not going to meet all the programming needs of all programmers... Very much recommended. By the way both the authors will be speaking at our conference in September 1998 and on the evidence of this book, both should be well worth listening to.
The fact that I disagree with one of the authors' basic premises should in no way detract from this book. Russel Graham believe that Java is a language for large-scale application development (or it certainly seems that way from their presentation). They even suggest in the Preface that it will completely replace Smalltalk. Those that have heard me on the subject will know that I take the view that Java is an excellent language for what it was designed to do (as long as you have the right collection of development tools). However I think it is far from being a language for large scale programming.
I also think that the structure of Java makes it ill suited to traditional programming tools. I am strongly reminded of Donald Knuth's Literary Programming with everything in one file coupled with suitable tools to extract appropriate views. Java lacks header files and so makes it hard to separate the design from the implementation unless you have a good set of (visual) programming tools as envisaged by the designers of the language.
I have stated by viewpoint because I think it is substantially different to that of the authors. Now to their work.
The aim of this book is much more than to introduce you to Java. It is intended to be a text from which you can learn to program. The approach is one of introducing an object perspective early (if it did not it would be a very poor introduction to Java). Though readers are assumed to be computer literate they are not expected to be familiar with any aspect of programming. Indeed I think that the smaller your previous exposure to programming the easier you will find this book. Those who bring a lot of prior baggage to OOP coupled with expectations of the semantic content of particular syntax will find it harder. Unfortunately this can (and I think will in the future) work the other way - those brought up on Java will have serious problems when faced with C or C++ source code. This tying of a language to a previous one is well established and results in considerable short-term gain. Bjarne Stroustrup frequently opines (correctly in my opinion) that had C++ not sought maximum compatibility with C it would never have been more than an academic oddity. C++ (and its users) have paid a high price in the long term for that almost backward compatibility however things that look the same in C and C++ almost always behave the same in both. This is not true in Java and I am far from convinced that all the differences are in Java's favour.
Sorry I am drifting away from the subject again. The problem is that this is an excellent introduction to programming with Java as the language used. It is also a very good introduction to Java. However the focus on the free versions of Java is, in my opinion, ill conceived. I do wish authors would stop claiming that one advantage of Java is that it is free. There are perfectly good free versions of C and C++ programming tools available from such sources as FSF (GNU software) and the free versions of Java tools suffer from at least as many problems as the free versions of other languages (actually more but that is another story).
If you want to learn to program this is an excellent book as long as you keep in mind that Java is not going to meet all the programming needs of all programmers. To what extent it remains a language that will run the same everywhere is debatable and OOP is not the methodology that solves all problems efficiently. If you are responsible for running a course on programming then this is a book that you should consider as a course text. It is certainly better than most that have crossed my desk. However please try to understand the authors' objectives rather than just slavishly follow their presentation.
Very much recommended. By the way both the authors will be speaking at our conference in September 1998 and on the evidence of this book, both should be well worth listening to.