Procyon
open-source, see more
Author: Mike Strobel
Updated in 2015. Handles language enhancements from Java 5 and beyond, up to Java 8, including:
Enum declarations
Enum and String switch statements
Local classes (both anonymous and named)
Annotations
Java 8 Lambdas and method references (i.e., the :: operator).
Java 7 is required to run.
CFR
Free, no source-code available, see more
Author: Lee Benfield
Updated in 2015. CFR is able to decompile modern Java features - Java 8 lambdas (pre and post Java beta 103 changes), Java 7 String switches etc, but is written entirely in Java 6.
JD
Free for non-commercial use only, see more
Author: Emmanuel Dupuy
Updated in 2014. Has its own visual interface and plugins to Eclipse and IntelliJ . Written in C++, so very fast. Supports Java 5.
Fernflower
open-source, see more
Author: Egor Ushakov
Updated in 2015. Very promising analytical Java decompiler, now becomes an integral part of IntelliJ 14. (see more)
Supports Java up to version 6 (Annotations, generics, enums)
Krakatau
open-source, see more
Author: Robert Grosse
written in Python, includes a robust verifier. It focuses on translating arbitrary byte code into valid Java code, as opposed to reconstructing the original code.
Candle
open-source, see more
Author: Brad Davis
developer of JBoss Cake, is an early but promising work in progress.
JAD
given here only for historical reason. Free, no source-code available, jad download mirror
Author: Pavel Kouznetsov
Probably, this is the most popular Java decompiler, but primarily of this age only. Written in C++, so very fast.
Outdated, unsupported and does not decompile correctly Java 5 and later.
Jadx
Android application package (APK) is the package file format used to distribute and install application software onto Google’s Android operating system.
This site uses perfect open-source APK and DEX decompiler called Jadx, see more
Jadx decompiles .class and .jar files, but also it produces Java source code from Android Dex and Apk files.
ClassyShark
open-source, see more
Author: Boris Farber
ClassyShark is a standalone tool for Android developers. It can reliably browse any Android executable and show important info such as class interfaces and members, dex counts and dependencies.
The browser supports multiple formats including libraries (.dex, .aar, .so), executables (.apk, .jar, .class) and AndroidManifest (.xml).
Bytecode Viewer
A Java 8 Jar & Android APK Reverse Engineering Suite (Decompiler, Editor, Debugger & More) see more
Enjarify
Enjarify is a tool for translating Dalvik bytecode to equivalent Java bytecode. This allows Java analysis tools to analyze Android applications. see more
Please, use it only for legitimate purposes.