Friday, March 22, 2013

What is the best open source Java decompiler?

A Java decompiler turns a .class file back into a .java file. While decompiled code is not perfect (no comments, sometimes obfuscated names), it can be useful during hacking competitions, or to liberate your data locked by proprietary software, or to satisfy curiosity.

There used to be a time where everyone's decompiler of choice was jad.
But jad is dead, and it was not Open Source anyway, so there must be something better, right?

Current winner

Jdec is the best Open Source decompiler I have found so far.
It is not perfect though: There is no community, and there are bugs, none of which has got fixed since 2007. Also, its website looks very unprofessional.

Challengers

  • JReversePro shows signs of activity but has had no release since 2002
  • JODE has had no release since 2004
  • dcompiler has had no release since 2002

Need work

  • Dava seems to be a thesis project rather than a programming tool.
  • javap only shows assembly-level code
  • Soot is not really a decompiler

Out of Competition

Those ones might be usable but they are not Open Source:
  • Fernflower is not maintained and not open source. Its author Stiver told me "Unfortunately I can't release it under GPL right now, because there are still some legal questions to be solved. However if you are representing a well established company or an R&D institute, an exception would be possible."
  • Java Decompiler (JD) is not open source
  • DJ Java Decompiler is not open source
  • Cavaj is not open source
Please let us know about any other Open Source decompiler your know!
Nicolas Raoul

No comments:

Post a Comment