New open source Java decompiler

This page summarizes the projects mentioned and recommended in the original post on /r/java

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • vineflower

    Modern Java decompiler aiming to be as accurate as possible, with an emphasis on output quality. Fork of the Fernflower decompiler.

  • Hello! Today I'm happy to announce the release of a project that me and my friends have been working on over the course of the last year, Quiltflower! Originally intended just for use with the QuiltMC toolchain with Minecraft, Quiltflower quickly expanded to be a general purpose java decompiler aiming to create code that is as accurate and clean as possible. If the name sounds familiar it's because Quiltflower is a fork of Fernflower, the (in)famous decompiler that was developed by Stiver, maintained by Jetbrains, and became the default decompiler in Intellij IDEA. Fernflower also quickly found its way into many other tools. After many frustrations with it myself with its decompiled code structuring and quality I decided to do something about it, and here we are! Over the past year, Quiltflower has added support for features such as modern string concatenation, a code formatter, sealed classes, pattern matching, switch expressions, and try-with-resources, and more. Quiltflower also focuses on the code quality of the decompiled output, and takes readability very seriously. We'd greatly appreciate it if you'd give it a try, with our Intellij Plugin or as a standalone jar. While it has come a long way it's still a work in progress, and feedback can be reported on our issue tracker.

  • fernflower

    Unofficial mirror of FernFlower Java decompiler (All pulls should be submitted upstream)

  • Hello! Today I'm happy to announce the release of a project that me and my friends have been working on over the course of the last year, Quiltflower! Originally intended just for use with the QuiltMC toolchain with Minecraft, Quiltflower quickly expanded to be a general purpose java decompiler aiming to create code that is as accurate and clean as possible. If the name sounds familiar it's because Quiltflower is a fork of Fernflower, the (in)famous decompiler that was developed by Stiver, maintained by Jetbrains, and became the default decompiler in Intellij IDEA. Fernflower also quickly found its way into many other tools. After many frustrations with it myself with its decompiled code structuring and quality I decided to do something about it, and here we are! Over the past year, Quiltflower has added support for features such as modern string concatenation, a code formatter, sealed classes, pattern matching, switch expressions, and try-with-resources, and more. Quiltflower also focuses on the code quality of the decompiled output, and takes readability very seriously. We'd greatly appreciate it if you'd give it a try, with our Intellij Plugin or as a standalone jar. While it has come a long way it's still a work in progress, and feedback can be reported on our issue tracker.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • ForgeFlower

    Forge's modifications to FernFlower. Fixing various bugs/inconsistencies. Main Repo: https://github.com/MinecraftForge/FernFlower

  • I'd also like to thank the MinecraftForge Team for creating ForgeFlower, the fork that QuiltFlower was based on, and Lee Benfield for creating CFR and it's truly incredible test suite.

  • cfr

    This is the public repository for the CFR Java decompiler

  • I'd also like to thank the MinecraftForge Team for creating ForgeFlower, the fork that QuiltFlower was based on, and Lee Benfield for creating CFR and it's truly incredible test suite.

  • cfr_tests

    Test suite for CFR. (see docs for why it's a whole different repo!)

  • I'd also like to thank the MinecraftForge Team for creating ForgeFlower, the fork that QuiltFlower was based on, and Lee Benfield for creating CFR and it's truly incredible test suite.

  • MCPConfig

    Public facing repo for MCP SRG mappings.

  • forge takes the jar as released by mojang, does a couple preprocessing tasks (renaming everything away from meaningless proguard names, merging the client and server .jars, etc), then decompiles it with forgeflower, applies a large number of source-level diffs to the decompiler output to account for deficiencies in the decompiler that cause the output to be mostly correct but not exactly recompilable, applies another set of source-level diffs to produce a jar augmented with the fun stuff that the forge project wants, recompiles this source, then writes the forge modloader against that. (actual mods are written against the modloader and patched minecraft as well, modders cannot write their own source patches, only forge itself has source patches.)

  • MinecraftForge

    Modifications to the Minecraft base files to assist in compatibility between mods. New Discord: https://discord.minecraftforge.net/

  • forge takes the jar as released by mojang, does a couple preprocessing tasks (renaming everything away from meaningless proguard names, merging the client and server .jars, etc), then decompiles it with forgeflower, applies a large number of source-level diffs to the decompiler output to account for deficiencies in the decompiler that cause the output to be mostly correct but not exactly recompilable, applies another set of source-level diffs to produce a jar augmented with the fun stuff that the forge project wants, recompiles this source, then writes the forge modloader against that. (actual mods are written against the modloader and patched minecraft as well, modders cannot write their own source patches, only forge itself has source patches.)

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • Mixin

    Mixin is a trait/mixin and bytecode weaving framework for Java using ASM

  • quilt (and fabric) take mojang's jar and preprocess it similarly, but the rest of the modifications to the code are done at runtime using a ridiculously powerful instrumenting classloader. the game is not decompiled at all, other than giving you something to look at in the IDE.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts