Author: Elizabeth Sugar Boese
Publisher: Jones & Bartlett
Aimed at: Complete beginners, students learning a first language
Pros: Gentle introduction, attractive layout
Cons: Focus on applets which are not as important as they used to be
Reviewed by: Alex Armstrong
Learning Java is a good idea – but Java Applets?
This is an interesting book. It is intended to be a college textbook and it would do well in that role but it is also suitable for personal study. It is remarkably well presented - the text is clear and well organized and listings are in color. However, before you rush out to buy a copy there are a number of things you need to know about its approach.
The first important point is that it doesn't make use of an IDE - you are shown how to edit a source file, put it through the command line compiler and then run the result in a browser. This is good from the point of view of not tying the book, or any courses based on it to a single IDE, but in the real world you would select an IDE such as Eclipse or NetBeans. As long as you are happy to teach yourself a Java IDE, or are happy working with editor and command line, then there is no problem.
The second slight problem with the book is its focus on Java applets. These were very important a few years back but today they are relatively uncommon. However this said, from the point of view of learning a language, there isn't much to lose by learning how to write an applet as the ideas generalize very simply to desktop applications or server applications. So the choice of applets is slightly odd but not a real problem.
The book starts off with a Hello World Applet and this is explained line-by-line. There is a lot of the example that is simply too advanced to be understood in any depth by the beginner. This will be OK as as long are you are happy to get a vague understanding of what is going on and are willing to believe that it will all become clear as you read on.
The next few chapters introduce ways of creating what look like advanced programs using graphics, text, Swing and generally how to create a GUI. This all seems advanced, but because the programs don't involve conditionals or loops they are actually fairly simple. This gives the reader plenty of time to gain confidence and even an enthusiasm for creating Applets that look as if they are doing something useful.
Chapter 3 introduces variables and methods and Chapter 6 covers data types and operators in a fairly standard way. Chapter 7 finally gets to conditionals and Chapter 8 deals with events. Loops finally complete the picture and by page 220 you know enough Java to write a fairly complex program. All of the technical ideas are introduced in simple terms and clearly, but there is no attempt to spoon-feed the reader with novelties. In fact when a quiz or something that interrupts the flow of explanation is included, it almost seems out of place.
Chapter 10 introduces Classes. The initial "Hello World" example made use of classes, but this is where the ideas are fully explained. Next we start to move into areas that go beyond the introductory level. Chapter 11 is another look at Swing, including dialog boxes; 12 is on collections; 13 deals with threading and 14 explains inheritance.
Chapters 15 and 16 deal with game programming and internet applications respectively. They serve to bring the ideas together. In the game chapter you get to write a breakout game and a dungeon game.
The book finishes with an overview of Java now that you have a much better idea of what programming is all about.
This isn't a book that will inspire you to program, but if you already have the urge to learn, or you need to, then it does present a clear and systematic approach to learning Java. Initially it makes use of many features which it fails to explain adequately, but this becomes less of a problem as the book moves on. The really core concepts of programming (conditionals and loops) are not introduced until about halfway into the book and you can their view this as an advantage or a disadvantage.
Overall a good "textbook" approach to teaching Java.