Integrated directly into JetBrains IDEs; also available as a standalone command-line tool. 4. Procyon

Since bytecode strips out many explicit local variable types, the decompiler tracks data flow to infer types and generics.

Java applications are compiled from human-readable source code ( .java files) into platform-independent bytecode ( .class files). This bytecode is executed by the Java Virtual Machine (JVM). However, developers often encounter situations where they have the compiled bytecode but lack the original source code.

The “Java Decompiler project” aims to develop tools in order to decompile and analyze Java 5 “byte code” and the later versions. * Java Decompiler

Have a favorite decompiler or a war story? Let me know in the comments below!

Linear bytecode instructions (like goto , if_icmpne , and invokevirtual ) are reconstructed into a Control Flow Graph (CFG).

Exceptionally clean and readable output. Because it powers the built-in decompiler inside IntelliJ IDEA, millions of developers use it implicitly every day.