Functional Programming in Java

Viewed 36474

Is there a good library for functional programming in Java?

I'm looking for stuff like Predicate and List.Find() (as a static method). Not complicated to implement, but it would be nice to find a reusable library here.

12 Answers

FunctionalJava is the best known library; it makes use of Java closures (BGGA) for examples:

final Array<Integer> a = array(1, 2, 3);  
final Array<Integer> b = a.map({int i => i + 42});  
arrayShow(intShow).println(b); // {43,44,45}  

EDIT

Check also lambdaj.

Further EDIT

BGGA is entirely optional. It just makes for nicer syntax.

Scala is a functional programming language that is fully compatible with Java (runs through the JVM). It offers a beautiful mix of object-oriented and functional techniques along with many improvements over Java in generics and concurrency. Some even say it could replace Java.

Java Libraries

There are libraries that can help you do this, by already doing the legwork for you and hiding the arcane things:

Mature / Established Libraries

More Obscure / Experimental Libraries

These will allow you to write Java code with a more functional approach and possibly more familiar syntax and semantic, as you'd expect from an FP-competent language. Within reason, that is.

JVM Languages

And obviously, you can implement a functional language on top of Java. So that you can then use that one as your FP language. Which is a bit of a higher-level of abstraction than what you asked for, but relatively within context (though I'm cheating a bit here, granted).

For instance, check out:

Quite Mature Languages

Less Mature or More Obscure Languages

Further Reading

You may also want to read or watch these articles or videos:


Taken from my P.SE answer to "Is Functional Programming Possible in Java?"

Google collections has a decent selection of functional-programming style utility methods. Some classes of interest are Iterables, Iterators, Function, Functions, etc

It also has a bunch of collection classes as well!

Related