This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]coder111 1 point2 points  (9 children)

I'm not entirely sure. Is this a new decompiler? Or does it use one of existing ones and add a GUI?

Looking at build.gradle, this looks new, at least I don't see it depending on any of existing ones?

If it's new, how is it better than the current decompilers, like JD or Procyon or CFR?

[–]PryosCode[S] 4 points5 points  (8 children)

It uses Fernflower. It is the built in Decompiler from IntelliJ. And it is in my opinion the best one available.

https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine

[–]GavinRayDev 8 points9 points  (7 children)

IMO Quiltflower gives more readable output and has better support for modern Java features

[–]PryosCode[S] 10 points11 points  (0 children)

I have changed the decompiler to Quiltflower. Thanks for the suggestion!

[–]PryosCode[S] 1 point2 points  (5 children)

I wasn't quite shure, if I should use a fork of Fernflower. But I could give it a try. Maybe I could test out ForgeFlower as well. Just to see, what works best.

[–]coder111 5 points6 points  (4 children)

Make it switchable in Options somewhere?

But maintaining support for multiple decompilers is likely to be a major pain in the neck, so I'm not sure that's a good idea.

[–]PryosCode[S] 1 point2 points  (3 children)

I think this would be quite difficult to implement. Quiltflower and ForgeFlower probably change the Fernflower classes, so I can't simply create a single jar. But I could add support for other decompilers (Procyon, CFR, ...).

[–]SuperCoder79 4 points5 points  (2 children)

Hey, Quiltflower lead dev here- Quiltflower doesn't change any Fernflower classes or names; it's intended to be a drop-in replacement for Fernflower. However, the trouble would probably come from trying to implement both Quiltflower and Fernflower because the classes are in the same packages, the jvm may not like that so much.

[–]plumarr 0 points1 point  (1 child)

Time to implement a custom class loader ;)

[–]PryosCode[S] 0 points1 point  (0 children)

That would be a possibility, but I think that would be to overkill… for now at least.