Graphics Programming with JFC, by David Wall and Arthur Griffith, is a tutorial on the Java 2 graphics engines Java2D and Java3D. The book does not cover Swing, "since programming graphical user interfaces stands as a discipline completely apart from that of writing programs that work with vector and raster images" as the authors aptly note.
The high tone set on the first page of Chapter 1 is balanced by a cheerful and confident presentation. Wall and Griffith begin with the terminology and techniques of Java graphics and a taste of matrix transforms sufficient for understanding the rest of the book.
Chapter 4 is on colors and textures, Chapter 5 is on 2D positioning and rotation. Beginning with Chapter 4, the book is laid out in a fashion reminiscent of the Jewish Talmud or the Chinese Yi Qing (I Ching). Each section in a chapter begins with the name of the subject--for example, ScaleDownTurn--and a brief exposition of the subject. Then follows The Code, and after that The Commentary. This may sound a little cutesy, but done tastefully, as it is by Wall and Griffith, it makes the material easily assimilable and also easy to find in a hurried thumbing through the book.
Chapters 6, 7, and 8 deal with line drawing, making shapes and fitting curves, and fitting text. Chapters 9, 10, and 11 deal with animation, plotting and graphics, and bitmaps. Chapter 12 covers the mouse. Chapters 13 and 14 deal with 3D operations, featuring a chapter-long exposition of wire framer rotators, both automatic and manual.
Chapters 15 and 16 deal with hidden-line suppression and perspective, while Chapter 17 offers hints on where to explore beyond the ends of the book with a smidgen of the advanced imaging API based on a preview release.
I give Graphics Programming with JFC high marks in organization. In effect, the book itself is an object-oriented design -- a cookie-cutter pattern of which instances are collected in chapters, and the chapters themselves are collected by related themes. It is formulaic writing that simulates the programmer's wit without cluttering the brain. Of course, you could turn immediately to JDK and Java3D documentation. It's pleasant, though, to have a quick run through first with folks who have a good grasp of what, why, how, and where.
I do subtract half a star for the lack of a bibliography. It's acceptable that a time-value volume like Graphics Programming with JFC not delve too deeply into the vertical stack of software and hardware entities that produces computer graphic output. It's an editorial blemish, however, not to have provided a minimal bibliography to steer novice readers from the paths of pop techdom towards the high road of computer science should their curiosity be sparked by hints in the text of the greater world beyond.
Overall, Graphics Programming with JFC offers a well-paced introduction to the subject matter. Wall and Griffith have exercised good judgment in the relative weightings of the numerous topics which they must cover to achieve breadth. Accompanied by simple and clear example code on CD-ROM, the rest may be safely left as an exercise for you.
If the Java graphics engine is your zeal this season, I can comfortably recommend Graphics Programming with JFC to both experienced programmers for a barnstorming catch-up and students for programmed self-teaching.
Electronic Review of Books