

Don't forget to pay attention to NaN in bytecode comparisons.Related, (but more awkward!) duplicate method signatures in a class.How does Eclipse's compiler differ from Javac?.How does Kotlin generate switch on string (i.e.What's interesting about Java 9 for decompilation?.The 1.6+ finally block, and code size blowup (come back JSR, all is forgiven.).Class constants in java 1.4 are initialised in an.


Autoboxing is expanded for you by the compiler.How is Java 7's switch-on-string compiled?.or StringConcatFactory vs concatenation in java9+. or just go to github to get master - ( release cadence).įeel free to drop me a line if there's anything you think is particularly broken, bear in mind it's a work in progress (but I'd say on a par with others!) - Or if you want to know when an update is out, I've finally started announcing on twitter - ( about syntactic sugar in compilation.Īll of this stuff is documented (links where I find them) these are things I found particularly interesting while messing around with this. (Feb 2021) (I suggest using latest, but if you spot a regression, it means I'm missing a test.To use, simply run the specific version jar, with the class name(s) you want to decompile (either as a path to a class file, or as a fully qualified classname on your classpath).Īlternately, to decompile an entire jar, simply provide the jar path, and if you want to emit files (which you probably do!) add -outputdir /tmp/putithere ( FAQ) - It'll even make a decent go of turning class files from other JVM languages back into java! :ĬFR will decompile modern Java features - up to and including much of Java 9, 12 & 14, but is written entirely in Java 6, so will work anywhere!
