CFR

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'

JD

Procyon

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

JAD

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:Here's a list of decompilers presented on this site:This free and open-source decompiler is available here: http://www.benf.org/other/cfr/ Author: Lee BenfieldRegularly 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!free for non-commercial use only, http://jd.benow.ca/ Author: Emmanuel DupuyUpdated in 2015. Has its own visual interface and plugins to Eclipse and IntelliJ . Written in C++, so very fast. Supports Java 5.open-source, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler Author: Mike StrobelUpdated in 2019. Handles language enhancements from Java 5 and beyond, up to Java 8, including:open-source, https://github.com/fesh0r/fernflower Author: Egor UshakovUpdated 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)given here only for historical reason. Free, no source-code available, jad download mirror Author: Pavel KouznetsovProbably, 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.