Book Review of

3D User Interfaces with Java 3D
by Jon Barrilleaux

Initial Impressions

Upon first picking up this book, reading the introduction and skimming the table of contents I was struck by Jon's understanding that 3D is not a goal but rather a tool for making applications potentially better.  In other words just because an application is "3D" it is not necessarily superior. This is an excellent and important point. Jon Barrilleaux clearly is an intelligent and experienced software developer.

Book Content

This book is organized into four main parts. There is no part that could be considered a reference section. This book teaches UI design using Java 3D but is not a Java 3D reference.

Parts One and Two (pages 1 to 199) compose an exhaustive description of user interface concepts. The points Jon Barrilleaux makes in these sections are all good thoughts and probably good reading for new programmers. Experienced software developers will probably want to skip these sections.  The author introduces forty six acronyms, a dozen of which should be familiar and in common usage, the rest only serve to make the rest of the book difficult to read.

Part Three (pages 201 to 282) is a brief overview of Java 3D. This section should be extremely valuable to anyone who has not looked at Java 3D before. It does serve as an excellent introduction and overview which even an experience Java 3D developer could benefit from. The author includes a good section pointing out the difficulties of utilizing Java 3D in an applet, explaining why there are no examples of a Java 3D applet included.

Part Four (pages 283 to 490) covers the UI Framework that is the basis of this book.

Software Code

The available code (via download from the book's website http://www.manning.com/Barrilleaux/index.html ) is excellent. It is well organized, well written and well documented. Batch files are included to make it easy for Windows users to try the examples without any wasted time configuring paths or typing complex command line commands. All Java 3D developers should welcome such a fantastic contribution of demo code. Even the Kawa project files are included which make this code a breeze to work with for Kawa users!

My only concern with the code is that it is based on not using branch group compilation. This is a clever solution to avoid a lot of capability bit setting issues. Jon indicates this makes no significant impact on performance now. This could become a serious problem in the future if Sun finds ways to dramatically increase performance via branch group compilation. Sun does encourage all branch groups to be compiled.

Summary

It is important to know what you are looking for from this book. If you are interested in learning Java 3D or expanding your knowledge of Java 3D you will want to skip the first half of this book. Otherwise you might give up reading before you discover the real treasure of this book.

Unnecessary usage of acronyms make this book more difficult to read than it should be. This book is an intelligent work with many good concepts. It does not address 3D graphics in depth (which it shouldn't). It does not attempt to teach Java 3D. Jon's blunt honesty about the flaws, bugs and troubles with Java 3D are refreshing and valuable. As with any book written about cutting edge subjects many of the details will be quickly obsolete. Unfortunately this book was written based on Java 3D 1.1. With the release of Java 3D 1.2 major changes to a key concept of Java 3D (picking) were introduced. Online Jon has provided both the original 1.1 code and a complete rewrite based on 1.2 code.

Jon Barrilleaux should be given a standing ovation for producing such an excellent piece of work for a topic (Java 3D) that desperately needs more documentation.


Reviewed by: John Wright

Reviewer background:
CEO of Starfire Research since 1982.  Over twenty years of experience in the computer technology industry, including software development with over two dozen different languages (Fortran, Pascal, Modula 2, Basic, Assembly, Java, Cobol, APL, etc).  Approximately one year of experience with Java 3D.