If you just want a way to get a feeling for how big your program is, I recommend using JOGA. It won’t get quite as small as the output JAR from, say, moogie’s tool, but it will give you a good idea of how big it’ll be. Personally, I aim for a JOGA size a few hundred bytes over 4000 (perhaps 4300) - this’ll usually let me get it down to under 4096 with moogie’s tool.
If you’re having problems getting JOGA to work, try disabling the settings for optimizing slot width and slot order under “Optimizations” -> “Byte code optimizations”. These sometimes corrupts the output JAR. Also, I recommend doing initial compression (from .class to .zip/.jar) with window’s built-in compressed folder system, it’s usually better than for example winzip.