Функциональное программирование на Java [закрыто]
есть ли хорошая библиотека для функционального программирования в Java?
Я ищу такие вещи, как и список.Найти () (как статический метод). Не сложно реализовать, но было бы неплохо найти здесь многоразовую библиотеку.
12 ответов:
FunctionalJava является самой известной библиотекой; он использует закрытие Java (BGGA) для примера:
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
проверить тоже lambdaj.
далее редактировать
BGGA является полностью необязательным. Это просто делает для лучшего синтаксиса.
scala это функциональный язык программирования, который полностью совместим с java (работает через jvm). Он предлагает прекрасное сочетание объектно-ориентированных и функциональных методов наряду со многими улучшениями по сравнению с java в универсальных и параллелизме. некоторые даже говорят, что он может заменить java.
Библиотеки Java
есть библиотеки, которые могут помочь вам сделать это, уже делает работу за вас и скрывая тайные вещи:
Зрелые / Установленные Библиотеки
Более Неясный / Экспериментальный Библиотеки
Это позволит вам писать Java-код с более функциональным подходом и, возможно, более знакомым синтаксисом и семантикой, как вы ожидаете от FP-компетентного языка. То есть в пределах разумного.
языки JVM
и очевидно, что вы можете реализовать функциональный язык поверх Java. Так что вы можете использовать его в качестве языка FP. Это немного более высокий уровень абстракции, чем то, что вы просили, но относительно в контексте (хотя я немного обманываю здесь, конечно).
например, проверить:
Вполне Зрелые Языков
Менее Зрелые или более непонятные языки
Более Дальнеишее Чтение
вы также можете прочитать или посмотреть эти статьи или видео:
- функциональное программирование на языке Java,IBM DeveloperWorks (2004)
- Функциональное Программирование Java,лямда-конечная (2004)
- функциональное программирование: прагматическое введение,InfoQ/CodePalousa (2011)
взято из моего P.SE ответьте "возможно ли функциональное программирование на Java?"
коллекции Google имеет достойный выбор методов утилиты функционального программирования. Некоторые классы интереса-это итераторы, итераторы, функции, функции и т. д.
Он также имеет кучу классов коллекции, а также!
Функциональная Java это тот, который стоит посмотреть и FunctionalJ это другое.
Если вы хотите чистое решение Java проверить lambdaj
http://code.google.com/p/lambdaj/
помимо возможности определения и использования замыкания в DSL-стиле, он также позволяет управлять коллекциями функциональным способом, без явного написания замыканий или циклов
Jambda это еще одна FP-библиотека. Из документация:
Jambda-это попытка обеспечить Мир Java (TM) с инструментами и концепциями из функционального программирования (ФП).
целей несколько:
- чтобы предоставить Java-программистам выразительные конструкции FP
- чтобы обеспечить мост для Java-программистов в FP-мир
- чтобы увидеть, как далеко Java и дженерики можно растягивать
этот документ является попыткой ввести Java-программисты в мир FP, и в то же время объяснить некоторые (или большинство) из особенностей в Джамбде.
Apache Commons имеет некоторый функциональный код в нем. См., например, интерфейс.
Google Guava обладает функциональной:
- операции сбора
- параллелизм конструкций (фьючерсы)
или загрузите OpenJDK 8, чтобы опробовать лямбда-выражения так, как они станут в Java 8. Среди прочего, API коллекции настраиваются для поддержки функционального стиля. Видеть http://macgyverdev.blogspot.se/2012/10/functional-programming-in-java.html для примеров новых API коллекции и сравнений с Guava, LambdaJ и FunctionalJava.
Scala был упомянут здесь, но есть намного более легкий и совместимый с Java язык: Xtend. Он компилируется на простой Java и использует систему того же типа. Он имеет большую поддержку затмения. Вы можете смешать
.javaи.xtendфайлы в одном проекте.пример кода:
def static void main(String[] args) { val s = #[1,2,3].map[it+43].join(", ") println(s); }
хотя функциональная Java является самым популярным, но я предлагаю вам попробовать Google guava lib.
Comments