Short Answer:
shipping and installing Xvfb is probably the best solution for UNIX.
Long Answer:
As you know, AjaxSwing simulates graphics environment for Swing applications. Generally speaking, running Swing requires a graphics environment to be available to JVM. On Windows that environment is always available. On UNIX it is typically unavailable, either because it is not installed, or because the permissions are not given to JVMs for connection to X.
Earlier versions of AjaxSwing substituted a lot of JVM classes to emulate running graphical applications in a non-graphical environment. The problem with that is that the more internal classes were substituted (for instance FontConfiguration), the more potential failure points were created, because of the assumptions throughout JVM implementation about the consistency of internal classes (for example, classes in UNIX version of JDK would assume that graphics environment is sun.awt.X11GraphicsEnvironment and they would cast the local graphics environment to that class. Or, even worse, native calls would fail and JVM may crash entirely (you may remember those problems with WebCream).
The cleanest solution was to retain as many internal classes as possible, which is what agent.usePlatformGraphicsEnvironment and some other settings control. On UNIX this would mean that the JVM needs to be able to connect to X server. The cleanest approach is to run Xvfb because that way AjaxSwing applications do not interfere with anything else on the system. Another alternative is to set DISPLAY variable correctly and give JVM permission to connect to X, in which case Xvfb is not a requirement.
Since every platform has a slightly different JDK implementation, which also changes with every new version of JDK, it is hard to say when Xvfb is an absolute requirement and when it is not. So it is safer to always use it because we haven't had any reports of problems with it.
Is there a problem with running Xvfb, or is it just inconvenience?
Let us know if this explanation makes sense or not.