Thanks for writing this chapter. Please do not recommend to end users to install jogl.jar and the JOGL DLLs/.so’s into the JRE. Instead please encourage them to set CLASSPATH and PATH/LD_LIBRARY_PATH/DYLD_LIBRARY_PATH as in the JOGL User’s Guide. Installing JOGL directly into the JRE defeats Java Web Start and the JOGLAppletLauncher installation mechanisms. We may change this “conventional wisdom” in the future, but not right now. You should also mention that for end users no installation is necessary.
Sorry about the termination issues. I haven’t seen any problems with the Animator.stop() mechanism recently, although I think you’re right that a poorly-timed repaint by the OS could cause an exception to be thrown. If you have a test case which reproduces this reliably please file a bug.
It would be more efficient to instantiate the GLU object once, not every time you enter display().
Did you call gl.setSwapInterval(0) in your init() method? Does that change the ability or inability of certain machines to reach certain target FPS rates?
Would you consider filing an RFE with the JOGL Issue Tracker to add a flag to the FPSAnimator to optionally use fixed-rate scheduling?
In your active rendering example, I’d recommend you makeCurrent and release the context each render, or at least once every several renders. On X11 platforms the AWT lock is currently held between the makeCurrent and release calls so for example mouse input wouldn’t work in your example. We plan to change this behavior in an upcoming build.
Again, looks good and thanks for covering JOGL in your book.