There was a spirited discussion in the comments for our .NET decompiler post (hey, 2 comments is close to the record for this blog!), and this is long overdue, but in the past year, I’ve become a fanatic user of Emmanuel Dupuy’s JD-GUI Java Decompiler. It’s free, it works, and it has the ability to decompile entire Java .jar files at once, saving all the source in a folder structure that matches the original source/package names.
The package export capability is excellent when you’d like to see what has changed between portal releases; you just decompile the WCI code before and after, and use Beyond Compare to highlight the differences between builds.
JD-GUI has been my tool of choice for many posts on this blog, and if you’re into getting down and dirty with your WebCenter Interaction Java code, I highly recommend this bad boy:
JD-GUI is a free download here, but I suggest throwing these guys a couple bucks for the donationware. C’mon, 20 bucks, anyone? (before you ask, yes, I contributed to the cause..)
Tags: Cool Tools, decompilers
DJ Java Decompiler offers more tools: http://members.fortunecity.com/neshkov/dj.html
I gave up on DJ a long time ago. Their licensing is much more onerous; you have to actually contact them and get a license file which only works on a single machine – aside from the pain of not just getting a regular license key immediately, this didn’t work for me because I have a separate Virtual Machine for each of my clients and this requires a separate key for each. Give it a shot, but proceed at your own risk before plunking down any cash on this one.
lol, you stole my blog post idea :-). But this is a really cool tool. I gave up on JAD and DJD some time back and stumbled upon this and have been using every since
Be wary of what JD produces, it gets ternary operators completely wrong.
http://java.decompiler.free.fr/?q=node/483 says it’s fixed in JD-Core 0.5.5 (associated with JD-Eclipse 0.1.4) but the latest available JD-Eclipse is 0.1.3.
The latest JD-GUI (0.3.3) is supposedly built on JD-Core 0.6.0 but still gets it wrong.