Jedi

Jedi aims to bring a more functional style of programming to Java. It does so by providing a library of routines for filtering, iteration, conversion from one collection type to another, first order logic functions, etc. It makes extensive use of higher order functions and closures. Unlike most libraries with similar aims, Jedi tries to take the hard work out of producing the required closures by providing JDK 1.5 annotations which generates the necessary filters, commands and functors.

Jedi has been used on a number of commercial applications and has been found to significantly simplify the code.