Policy on optimization
The goal of the JX Application Framework is to hide all of the evils of X. To this end, the convenience of the API was given priority over optimization.
This may sound strange, especially since X programs are often run over a slow network. However, we have yet to find a case where we couldn't optimize sufficiently within the constraints of a convenient API!
The best example is dealing with images. X chose to make a distinction beteen images stored on the server machine (Pixmaps) and images stored on the client machine (XImages) because some operations (like XGetPixel()) are best done on the client machine.
JX hides the distinction between XImages and Pixmaps because it is much easier to work with a single class (JXImage). Among other benefits, one does not need duplicate functions to accept both types.
JXImage automatically switches the image from XImage to Pixmap and back depending on the operation being performed. While it is true that this allows one to write code that "thrashes," it is easy to avoid, so the benefits outweight the costs.