I'm happy to release clj-java-decompiler[1] today, a wrapper around Procyon[2] Java decompiler. With it, you can cut the feedback loop of writing a file, AOT-compiling it, and then running the classes through a decompiler to a single call in the REPL.
user> (clj-java-decompiler.core/decompile
(loop [i 100, sum 0]
(if (< i 0)
sum
(recur (unchecked-dec i) (unchecked-add sum i)))))
// ... Output trimmed
public static Object invokeStatic() {
long i = 100L;
long sum = 0L;
while (i >= 0L) {
final long n = i - 1L;
sum += i;
i = n;
}
return Numbers.num(sum);
}
You can read more about my motivation, usage scenarios, and other information regarding Java decompilers in my post "Introspection tools: Java decompilers"[3].