Actually, I claim the the opposite is true: VNC can and does deal with bad applications good. This means that Swing-based Java applications works much better with VNC than with NX. Every time I've tested NX, I tried a Java based application and confirmed the bad performance.
From a technical viewpoint, Xvnc does (by default) pixel-by-pixel comparisons on the framebuffer. So unless you have explicitly disabled this (-CompareFB=0), or have some strange client, I really don't understand why you are experiencing this behaviour.