An analytical decompiler that converts Java bytecode back into readable Java source code, used in IntelliJ IDEA.
Fernflower is a decompiler that converts Java bytecode back into Java source code. It solves the problem of recovering readable source from compiled .class files, enabling developers to debug, analyze, or understand third-party libraries when source isn't available. It uses analytical methods to reconstruct code structure rather than simple pattern matching.
Java developers, reverse engineers, and security researchers who need to examine compiled Java code for debugging, auditing, or educational purposes.
Developers choose Fernflower because it produces semantically accurate, recompilable Java code and is the trusted engine behind IntelliJ IDEA's decompiler. Its analytical approach and extensive customization options make it superior for handling obfuscated or complex bytecode.
Decompiler from Java bytecode to Java, used in IntelliJ IDEA.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses control and data flow analysis to reconstruct semantically correct Java code, ensuring it can be recompiled, unlike pattern-based decompilers that may produce syntactically invalid output.
Offers over 30 command-line options for fine-tuning output, including handling generics, lambdas, enums, and obfuscated code, as detailed in the README's option list.
Accepts external library references via the -e= option to improve type analysis and identifier renaming, crucial for accurate decompilation of code with dependencies.
Reconstructs variable and parameter names from debug attributes when available, enhancing the readability and usability of decompiled source code for debugging purposes.
The multitude of command-line options and the need for custom IIdentifierRenamer implementations for advanced renaming can be overwhelming and time-consuming for users seeking quick results.
Lacks a built-in graphical interface outside of IntelliJ IDEA, requiring command-line proficiency or additional tooling for those who prefer visual interaction with decompiled code.
Prioritizes correctness over prettiness, so output may lack ideal formatting or require manual cleanup for human readability, especially with obfuscated or complex bytecode.