Russell posted an article recently about Innaworks and their mBooster product.

I'd come across these guys a few months back, via Jon Beverley (of Scan fame, these days kiwi-ing himself). We do a lot of J2ME work - it's more than half of everything we do at the moment - so we were interested in evaluating a copy of it, something Jon and Stephen Cheng of Innaworks were very helpful with.

Our first impressions were that the product had to be lying or broken: it seemed too good to be true. We put a few JAR files from recent projects through it and saved between 10 and 15k on each one (over and above what we get from obfuscating and optimising with our existing tools).

It's a very strong product - certainly way better than open source tools like Proguard, which we have a lot of experience with. Of course, as a commercial product it needs to persuade someone to buy it, so there needs to be a strong business case for investing in it. The guys at Innaworks have a number of justifications for the product, some of which I feel are stronger than others: certainly if you need to squeeze your MIDlets as small as possible (particularly if you need to get them onto a handset which has restrictions on MIDlet size), then I recommend you look at this product. Stephen's point in the comments on Russell's post re clarity of code is a good one too: using a product like this lets you produce MIDlets which are more easily maintained.

And keep an eye on Innaworks too: these guys are clearly wizards and have some other interesting stuff in the pipeline.