19

This is along similar lines as these recent questions:

Best Java Obfuscation Application For Size Reduction Creating non-reverse-engineerable Java programs

However, one ends up recommending yGuard and the other ProGuard but neither mention both. I wonder if we could get a comparison of each one and hear peoples experiences from both sides of the fence. Looking at this comparison chart on the ProGuard website its clearly angled towards ProGuard. But what about real-world experience of each - which one produces smaller output? which one is harder to decompile from? what Java versions are supported by each?

Personally I'm particularly interested from a J2ME point of view but please don't limit the discussion to that.

Community
  • 1
  • 1
roryf
  • 29,592
  • 16
  • 81
  • 103
  • 7
    Whoever wrote the classes in JDK 1.0 do a good job of obfuscation, maybe you can hire them. – skaffman Sep 29 '08 at 21:06
  • Would those be the ones that documented the J2ME APIs? – roryf Sep 29 '08 at 21:41
  • I don't know which is better. I posted one of those questions (the one that says Proguard is better) hoping to get that type of dialog going, but it never went any where. – Fostah Oct 01 '08 at 01:09

3 Answers3

7

Results for my project.

  • Obfuscation - both fine.
  • Optimisation - ProGuard produced 20% faster code (for the measured app bottleneck).
  • Compactness - ProGuard about 5% smaller.
  • Configuration / Ant - YGuard is much easier to configure.

So, I'd advise ProGuard - but configuration and ant integration could definitely be improved.

Lucifer
  • 29,392
  • 25
  • 90
  • 143
Pool
  • 11,999
  • 14
  • 68
  • 78
6

Proguard is a better product; especially if you take the time to go through the settings for J2ME.

Specifically for J2ME there is a far better (commercial) product called mBooster

I've been getting around 25% improvement in size on my application after its been through Proguard. This is mainly to do with the better Zip compression on the Jar file and comprehensive support for class merging and preverification.

edsumner
  • 166
  • 2
0

My opinion is - ProGuard is better. Output is smaller a bit. Optimizing is better and much faster.

Decompiling is simple in both cases. Well, i mean, if u know Java well and really know business-logic of what you're decompiling, there is no problem to get it back to sources from obfuscated classes.

So, my opinion is ProGuard is better.

Vugluskr
  • 1,426
  • 1
  • 12
  • 12