JAD is one of the best Java Decompiler today. This is one brilliant piece of software. Nevertheless, the last JDK supported by JAD 1.5.8 (Apr 14, 2001) is JDK 1.3.
DJ Java Decompiler, JadClipse, Cavaj and JarInspector are powered by Jad. The last version of Decafe Pro has been released on 2002-01-03.
These viewers can not display Java 5 sources.
So, I use JD-GUI : logic, I'm the author :)
Answer from Emmanuel Dupuy on Stack OverflowVideos
JAD is one of the best Java Decompiler today. This is one brilliant piece of software. Nevertheless, the last JDK supported by JAD 1.5.8 (Apr 14, 2001) is JDK 1.3.
DJ Java Decompiler, JadClipse, Cavaj and JarInspector are powered by Jad. The last version of Decafe Pro has been released on 2002-01-03.
These viewers can not display Java 5 sources.
So, I use JD-GUI : logic, I'm the author :)
Procyon is a new open source decompiler that already beats JD-GUI in most cases. It's written in Java and comes in a self-contained jar. It is actively developed by StackOverflow's own Mike Strobel.
Hello! Today I'm happy to announce the release of a project that me and my friends have been working on over the course of the last year, Quiltflower! Originally intended just for use with the QuiltMC toolchain with Minecraft, Quiltflower quickly expanded to be a general purpose java decompiler aiming to create code that is as accurate and clean as possible. If the name sounds familiar it's because Quiltflower is a fork of Fernflower, the (in)famous decompiler that was developed by Stiver, maintained by Jetbrains, and became the default decompiler in Intellij IDEA. Fernflower also quickly found its way into many other tools. After many frustrations with it myself with its decompiled code structuring and quality I decided to do something about it, and here we are! Over the past year, Quiltflower has added support for features such as modern string concatenation, a code formatter, sealed classes, pattern matching, switch expressions, try-with-resources, and more. Quiltflower also focuses on the code quality of the decompiled output, and takes readability very seriously. We'd greatly appreciate it if you'd give it a try, with our Intellij Plugin, as a standalone jar, or on our maven. While it has come a long way it's still a work in progress, and feedback can be reported on our issue tracker.
Here's a comparison of Fernflower and Quiltflower's output.
I'd also like to thank the MinecraftForge Team for creating ForgeFlower, the fork that QuiltFlower was based on, and Lee Benfield for creating CFR and it's truly incredible test suite.
There is the open source Java decompiler, Procyon.
I have not tested it against any obfuscated code, but I have seen it decompile many methods that JD-GUI failed to handle. Note that it's a work in progress, and I'm sure you will find plenty of code that it will fail to decompile.
Old and Lacking Entries
JAD Some time ago, everyone’s decompiler of choice was jad. Currently, the project is dead (in addition, it wasn’t open source), but still you see a lot of people referring to it.
Java DeObfuscator Also an older tool from fileoffset.com, but still works more or less. The interface is rather clunky to use for larger projects, but the tool is open source.
JODE JODE is a java package containing a decompiler and an optimizer for Java. This package is freely available under the GNU GPL. It hasn’t been updated for quite some time.
AndroChef Proprietary tool to decompile Android programs and Java files, available here. Not worth the money given the alternatives, just as DJ Decompiler.
Candle An open source decompiler by Brad Davis. I’m mentioning it for completeness, but is far away from being feature complete.
Modern Tools
JD-Gui Probably one of the most widely used tools for Java decompilation, as it is easy to use and provides a graphical user interface which allows to quickly open up and inspect a class file or JAR. You can find it over here.
FernFlower Very new and promising analytical Java decompiler (becoming an integral part of IntelliJ 14).
It’s a command line tool. This one is able to show the Unicode parameters with their full name.
Download from here.
It’s a command line tool. This one is able to show the Unicode parameters with their full name.
Note that it's also already integrated by default in IntelliJ.
CFR
Free, and open source. This one aims to decompile modern Java features, including Java 12 switch expressions, Java 8 lambdas (pre and post Java beta 103 changes), Java 7 String switches etc., though is itself written in Java 6.
Also a command line tool. This one does an even better job and is slightly faster.
Procyon
Open source, and also aims to deal with Java 8 features (lambdas, :: operator). Needs Java 7 to run.
Krakatau Krakatau is interesting because it has been written in Python. It currently contains three tools: a decompiler and disassembler for Java class files and an assembler to create class files.
Does not yet support Java 8 features.
Soot
Soot is a framework for analyzing and transforming Java and Android applications, originally developed by the Sable Research Group of McGill University. It’s not very commonly used “just” as a decompiler, as it also defines an intermediate byte code language.
Recaf
A Java Bytecode editor and reverse engineering tool aimed at being intuitive to use. It can present bytecode through multiple decompilers (CFR, FernFlower, Procyon) or in a table layout to allow displaying class elements that are indecipherable in standard decompilers. Recaf uses context-sensitive menus to interact with classes, methods, and fields, allowing users to search for use cases, rename items, and edit definitions in a disassembled format.
It supports jars, wars, classes, and extracting classes from running Java processes.
It is written completely in Java and is fully open source.
Konloch’s Bytecode Viewer
An Advanced Lightweight Java Bytecode Viewer, GUI Java Decompiler, GUI Bytecode Editor, GUI Smali, GUI Baksmali, GUI APK Editor, GUI Dex Editor, GUI APK Decompiler, GUI DEX Decompiler, GUI Procyon Java Decompiler, GUI Krakatau, GUI CFR Java Decompiler, GUI FernFlower Java Decompiler, GUI DEX2Jar, GUI Jar2DEX, GUI Jar-Jar, Hex Viewer, Code Searcher, Debugger and more.
Written completely in Java, and it’s open source.
It uses FernFlower, Procyon and CFR for decompilation, makes this an awesome visual tool using state-of-art decompilers:
Enigma
A tool specifically geared for deobfuscation:
Originally used to deobfuscate Minecraft versions. Uses Procyon internally.
A more up to date fork can be found here
It’s fun to note that a lot of effort into decompilers and de-obfuscators for Java is the result of the modding scene around Minecraft, one of the most popular games implemented in Java.
Source: http://blog.macuyiko.com/post/2015/a-quick-look-at-java-decompilers.html