.JAR and .Class to Java decompiler
This site provides a user interface to extract source code from .class and .jar ‘binary’ files.
Until recently, you needed to use a Java decompiler and all of them were either unstable, obsolete, unfinished, or in the best case all of the above. And, if not, then they were commercial.
The obsoleteness was typically proved by 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 older, but better decompilers).
But recently, a new wave of decompilers has forayed onto the market: Procyon, CFR, JD, Fernflower, Krakatau, Candle.
Here's a list of decompilers presented on this site:
Author: Lee Benfield
Regularly updated, CFR is able to decompile all the modern Java features:
It'll even make a decent go of turning class files from other JVM langauges back into java!
Author: Emmanuel Dupuy
Updated in 2015. Has its own visual interface and plugins to Eclipse and IntelliJ . Written in C++, so very fast. Supports Java 5.
Author: Mike Strobel
Updated in 2019. Handles language enhancements from Java 5 and beyond, up to Java 8, including:
Author: Egor Ushakov
Updated in 2015. Very promising analytical Java decompiler, now becomes an integral part of IntelliJ 14. (https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler)
Supports Java up to version 6 (Annotations, generics, enums)
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.
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 older, but better decompilers).
But recently, a new wave of decompilers has forayed onto the market: Procyon, CFR, JD, Fernflower, Krakatau, Candle.
Here's a list of decompilers presented on this site:
CFR
This free and open-source decompiler is available here: http://www.benf.org/other/cfr/Author: Lee Benfield
Regularly updated, CFR is able to decompile all the modern Java features:
- Java 7: String switches
- Java 8: lambdas
- Java 9: modules
- Java 11: dynamic constants
- Java 12: Kotlin style "switch expressions"
- Java 14: 'instance of' pattern match and 'Record types'
It'll even make a decent go of turning class files from other JVM langauges back into java!
JD
free for non-commercial use only, http://jd.benow.ca/Author: Emmanuel Dupuy
Updated in 2015. Has its own visual interface and plugins to Eclipse and IntelliJ . Written in C++, so very fast. Supports Java 5.
Procyon
open-source, https://bitbucket.org/mstrobel/procyon/wiki/Java%20DecompilerAuthor: Mike Strobel
Updated in 2019. 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).
Fernflower
open-source, https://github.com/fesh0r/fernflowerAuthor: Egor Ushakov
Updated in 2015. Very promising analytical Java decompiler, now becomes an integral part of IntelliJ 14. (https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler)
Supports Java up to version 6 (Annotations, generics, enums)
JAD
given here only for historical reason. Free, no source-code available, jad download mirrorAuthor: 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.