IntelliJ incorporates Fernflower, a Java decompiler made by JetBrains.
On its GitHub page you can read the following:
Fernflower is the first actually working analytical decompiler for Java and probably for a high-level programming language in general.
What does this mean? What is an analytical decompiler? How does it differ from other types of decompilers?
A decompiler is a computer program that takes an executable file as input and attempts to create a high-level source file that can be recompiled successfully. It is therefore the opposite of a compiler, which takes a source file and makes an executable.
What is a decompile? To decompile means to convert executable or ready-to-run program code -- sometimes called object code -- into some form of higher-level programming language that humans can easily understand. Decompilation is a type of reverse-engineering that performs the opposite operations of a compiler.
A Java Decompiler is a special type of decompiler which takes a class file as input and produces Java source code as output. The decompilation is exactly the reverse process of compilation. Thus, decompiler does not produce a replica of the source code.
A decompiler is a programming tool that converts an executable program or low-level/machine language into a format understandable to software programmers. It performs theoperations of a compiler, which translates source code into an executable format, but in reverse.
An analytical decompiler is one that analyzes compiled output and then figures out what source code would best match it, rather than trying to be the exact inverse of a traditional compiler. Sometimes this is necessary in case of optimizing compilers or obfuscated bytecode.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With