In case you would like to use a Java Decompiler...
Until recently, all of them are either unstable, or obsolete, or not finished, or commercial, or - in the best case - all of that. And if not - then they were commercial.
The obsoletnes typically proved as the fact that they can only decompile JDK 1.3 bytecode.
The only so-so working solution was to take the .class file and pre-process it so it becomes JDK 1.3 compatible, and then run JaD over it (one of those better old decompilers).
The situation was a bit chaotic as many of the sites are down, some decompilers used multiple names or had the originality level 6000 of naming itself "Decompiler" or "Java Decompiler", or JD, JaD, JADE, JODE, JDec, etc. in better case, but changing these abbrevs over time.
But recently, a new wave of decompilers is coming: Procyon, CFR, Krakatau, Candle, JBVD, EDJC.
Here's a list of decompilers as of May 2014.
Available decompilers
Procyon - https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler
2014. JDK 5, partly 6. Written in Java. Worth trying.
CFR - http://www.benf.org/other/cfr/
2014. JDK 6, 7, 8 support. Written in Java 6.
“CFR by Lee Benfield is well on its way to becoming the premier Java Decompiler. Lee and I actually work for the same company and share regression tests. We're engaged in a friendly competition to see who can deliver a better decompiler. Based on his progress thus far, there's a very good chance he will win--at least on decompiling obfuscated code :)”
Candle - https://github.com/bradsdavis/candle-decompiler
2013. Written in Java. By Brad Davis @ RH. “only decompiles a subset of the JVM operations”.
Krakatau - https://github.com/Storyyeller/Krakatau
2014. JDK 7 support? Written in Python.
“Includes a robust verifier. Focuses on translating arbitrary bytecode into valid Java code, as opposed to reconstructing the original code.”
JBVD - https://sourceforge.net/projects/jbdec/?source=directory
2013. Academic Free License (AFL). Javassist approach. Unknown quality.
EDJC - https://sourceforge.net/projects/ejdc/
2011. Written in Java.
JD - http://jd.benow.ca/
JD-Core and JD-GUI are written in C++.
FernFlower - http://ww1.reversed-java.com/fernflower/ (site doesn’t work)
Quite good, but no idea where to get it. Supposedly at MCP - http://mcp.ocean-labs.de
Also here: http://forum.xda-developers.com/showthread.php?t=2029842
“Hello, I would like to share this java decompiler with the community. FernFlower is the first analytic decompiler for java. It will decompile class files and jar files to human readable java code. Unlike JD-GUI it does not decompile to byte code. It also will deobfuscate the source if you ask it to. This tool should work well with dex2jar. The files are attached. It requires java to run.”
DCompiler - http://dcompiler.sourceforge.net/
2002. Seems to be unstable.
JaD - http://java.decompiler.free.fr/ (site doesn’t work)
Commercial, no fee for noncommercial use, no source code.
Needs JadRetro http://jadretro.sourceforge.net/
JDec - http://jdec.sourceforge.net/
GPL. Last update 2007.
Mocha - http://www.brouhaha.com/~eric/software/mocha/
Last release 1996…
SourceTec Java Decompiler
Commercial, patch to Mocha.
JADO
JDK 1.3; Free, GPL, not actively maintained
HomeBrew Decompiler - http://freecode.com/projects/homebrewdecompiler
0.2.2 in 2002. Free, GPL. Written in C++.
JODE http://jode.sourceforge.net/
2002, supports JDK 1.3. Free, GPL.
JReversePro - http://jreversepro.blogspot.hu/
2008 - reportedly, a beta released. Otherwise it seems 2002. Free, GPL. Written in Java.
DJ - http://dj.navexpress.com/
Pretty bad. "freeware", no source code.
CavaJ - http://cavaj-java-decompiler.en.softonic.com/
Pretty bad.
Sources
- http://www.javaworld.com/article/2076968/java-app-dev/java-decompilers-compared.html
- https://bitbucket.org/mstrobel/procyon/wiki/Decompiler%20Output%20Comparison
- http://en.wikipedia.org/wiki/Category:Java_decompilers
- http://stackoverflow.com/questions/3898391/choose-and-test-java-decompiler
- http://books.google.hu/books?id=6FDZ2Xqpi-4C&lpg=PA72&ots=0iKOJvBm9N&dq=homebrew%20decompiler&pg=PA72#v=onepage&q=homebrew%20decompiler&f=false (a book - Decompiling Java)