FernFlower
Decompiler from Java bytecode to Java, used in IntelliJ IDEA
...It works by analyzing the structure of bytecode and inferring higher-level constructs like loops, conditionals, generics, and exception handling to produce Java source that is as close as possible to what a human would have written, making it useful for both reverse engineering and educational purposes. Fernflower is integrated into popular Java IDEs and tools where decompilation is needed, and its robust analysis handles a wide range of language features introduced across multiple Java versions. Because it outputs clean, structured, and often compilable code, developers use it for auditing binaries, exploring third-party libraries without source, and recovering parts of legacy systems where source was lost or unavailable.