| CFR | CFR is a decompiler focusing on support of modern features (lambdas, string switches, etc.). It has a couple dozen command-line arguments that can tackle different obfuscation strategies. These are documented on the CFR blog. You can check out the source and report bugs on Github. | cfr - Source |
| FernFlower | FernFlower is an analytical decompiler maintained by the IntelliJ community. | Source |
| QuiltFlower | QuiltFlower is a FernFlower fork run by the QuiltMC community. The github repo also links to an IntelliJ plugin and precompiled binaries. | Source |
| JAD | JAD is an older compiler which is unable to decompile many modern Java features. | mirror |
| jadx | Jadx is an android dex to Java decompiler capable of also doing simple deobfuscation. | Source |
| Javap | Javap is the dissasembler provided in all releases of the JDK. It's simple to use and since its only showing you bytecode and not attempting to transform it into source code, you can trust the output. | javap |
| JD | JD is one of the most popular decompilers around. It is capable of producing very legible results on non-obfuscated jars. However simple obfuscation and modern java features (Some generics will suffice) will cause it to crash. It can open modern classes as long as they do not use any modern features. | JD - Source |
| Krakatau | Krakatau is a set of 3 bytecode tools, an assembler, disassembler, and decompiler. The decompiler does not focus on recreating the original code of a class, but rather takes some "artistic liberties". This allows it to bypass minor obfuscation that would be shown with a pattern matching decompiler. | Source |
| Procyon | Procyon is more than a decompiler, but is generally used for just that. Works well, but slightly slower than other decompilers. | gui-luyten - Source |
| QuiltFlower | QuiltFlower is a fork of FernFlower that fixes a variety of bugs and generally improves output quality. | Source |