web-dev-qa-db-fra.com

Programmation fonctionnelle en Java

Existe-t-il une bonne bibliothèque pour la programmation fonctionnelle en Java?

Je cherche des trucs comme Predicate et List.Find () (comme méthode statique). Pas compliqué à implémenter, mais ce serait bien de trouver une bibliothèque réutilisable ici.

59
ripper234

FunctionalJava est la bibliothèque la plus connue; il utilise Java ( BGGA ) pour des exemples:

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}  

[~ # ~] modifier [~ # ~]

Vérifiez également lambdaj .

EDITER

BGGA est entièrement facultatif. Cela rend la syntaxe plus agréable.

44
dfa

Scala est un langage de programmation fonctionnel entièrement compatible avec Java (parcourt le JVM) .Il offre un beau mélange de techniques fonctionnelles et orientées objet ainsi que de nombreuses améliorations par rapport à Java dans les génériques et la concurrence. Certains disent même qu'il pourrait remplacer Java.

29
Gordon Gustafson

Bibliothèques Java

Il existe des bibliothèques qui peuvent vous aider à le faire, en faisant déjà le travail préparatoire pour vous et en cachant les choses mystérieuses:

Bibliothèques matures/établies

Plus de bibliothèques obscures/expérimentales

Celles-ci vous permettront d'écrire Java code avec une approche plus fonctionnelle et peut-être une syntaxe et une sémantique plus familières, comme vous pouvez vous y attendre d'un langage compétent en FP. Dans la mesure du possible.

Langues JVM

Et évidemment, vous pouvez implémenter un langage fonctionnel au-dessus de Java. Pour que vous puissiez ensuite l'utiliser comme langue FP. Ce qui est un peu un niveau d'abstraction plus élevé que ce que vous avez demandé, mais relativement dans le contexte (bien que je triche un peu ici, accordé).

Par exemple, consultez:

Langues assez matures

Langues moins matures ou plus obscures

Lectures complémentaires

Vous pouvez également vouloir lire ou regarder ces articles ou vidéos:


Tiré de ma P.SE réponse à " La programmation fonctionnelle est-elle possible en Java? "

27
haylem

Google collections a une sélection décente de méthodes utilitaires de style de programmation fonctionnelle. Certaines classes d'intérêt sont les itérables, les itérateurs, la fonction, les fonctions, etc.

Il a également un tas de classes de collection!

13
Chi

Java fonctionnel est celui qui mérite d'être examiné et FunctionalJ en est un autre.

12
mikej

Si vous voulez une solution pure Java check out lambdaj

http://code.google.com/p/lambdaj/

Outre la possibilité de définir et d'utiliser la fermeture dans un style DSL, il permet également de manipuler les collections de manière fonctionnelle, sans écrire explicitement les fermetures ou les boucles

7
Mario Fusco

Ou téléchargez OpenJDK 8 pour essayer les expressions Lambda telles qu'elles deviendront dans Java 8. Entre autres, les API de collecte sont ajustées pour prendre en charge un style fonctionnel. Voir http: // macgyverdev.blogspot.se/2012/10/functional-programming-in-Java.html pour des exemples de nouvelles API de collection et des comparaisons avec Guava, LambdaJ et FunctionalJava.

4
Johan Norén

Apache Commons contient du code fonctionnel. Voir par exemple, l'interface Predicate .

4
MatrixFrog

Google Guava a fonctionnel:

  • opérations de collecte
  • constructions concurrentes (Futures)
4
thSoft

Scala a été mentionné ici, mais il y a beaucoup plus léger et plus Java: Xtend . Il se compile en clair Java et utilise le même type de système. Il prend en charge Eclipse. Vous pouvez mélanger .Java et .xtend fichiers dans un seul projet.

Exemple de code:

def static void main(String[] args) {
    val s = #[1,2,3].map[it+43].join(", ")
    println(s);
}
4
rzymek

Jambda est une autre bibliothèque FP. De la documentation :

Jambda est une tentative de fournir au monde Java (TM) des outils et des concepts de programmation fonctionnelle (FP).

Les objectifs sont multiples:

  • Fournir aux programmeurs Java des constructions expressives FP
  • Pour fournir un pont pour les programmeurs Java dans le monde FP
  • Pour voir jusqu'où Java et les génériques peuvent être étirés

Ce document est une tentative d'introduire Java programmeurs dans le monde FP, et en même temps d'expliquer certaines (ou la plupart) des fonctionnalités de Jambda.

4
Johan Kullbom

Bien que fonctionnel Java est le plus populaire mais je vais vous suggérer d'essayer Google guava lib.

http://code.google.com/p/guava-libraries/

2
Amit Mutreja