This is great, but with the full two-way interop and low overhead (just add the .jar for Clojure) that functional JVM languages provide, is there really any reason to deal with the pain of doing FP in Java the language? When you don't have real closures, map/reduce/filter and other HOFs become rather tedious and inflexible.