자바의 함수형 프로그래밍
Java에서 함수형 프로그래밍을위한 좋은 라이브러리가 있습니까?
Predicate 및 List.Find () (정적 메서드) 와 같은 것을 찾고 있습니다. 구현하기가 복잡하지는 않지만 여기서 재사용 가능한 라이브러리를 찾는 것이 좋을 것입니다.
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}
편집하다
lambdaj 도 확인하십시오 .
추가 편집
BGGA는 전적으로 선택 사항입니다. 그것은 단지 더 좋은 구문을 만듭니다.
Scala 는 Java와 완전히 호환되는 기능적 프로그래밍 언어입니다 (JVM을 통해 실행 됨). 제네릭 및 동시성에서 Java보다 많은 개선 사항과 함께 객체 지향 및 기능 기술의 아름다운 조합을 제공합니다. 일부는 Java를 대체 할 수 있다고도합니다.
자바 라이브러리
이미 당신을 위해 다리 작업을하고 난해한 것들을 숨겨서 이것을 도와 줄 수있는 라이브러리가 있습니다 :
성숙 / 기존 도서관
더 모호한 / 실험적 라이브러리
이를 통해 FP 유능한 언어에서 기대할 수있는보다 기능적인 접근 방식과 더 친숙한 구문 및 의미론으로 Java 코드를 작성할 수 있습니다. 이유 내에서 그렇습니다.
JVM 언어
그리고 분명히 Java 위에 기능적 언어를 구현할 수 있습니다 . 그러면이를 FP 언어로 사용할 수 있습니다. 그것은 당신이 요청한 것보다 약간 더 높은 수준의 추상화이지만 상대적으로 맥락 내에서 (나는 여기에서 약간의 속임수를 쓰고 있지만).
예를 들어 다음을 확인하십시오.
상당히 성숙한 언어
덜 성숙하거나 모호한 언어
추가 읽기
다음 기사 또는 비디오를 읽거나 볼 수도 있습니다.
- Java 언어의 기능적 프로그래밍 , IBM DeveloperWorks (2004)
- 함수형 프로그래밍 Java , Lambda the Ultimate (2004)
- Functional Programming : a Pragmatic Introduction , InfoQ / CodePalousa (2011)
" Java에서 함수형 프로그래밍이 가능합니까? " 에 대한 P.SE 답변 에서 가져 왔습니다.
Google 컬렉션 에는 기능 프로그래밍 스타일 유틸리티 방법이 적절하게 선택되어 있습니다. 관심있는 일부 클래스는 Iterables, Iterators, Function, Functions 등입니다.
또한 컬렉션 클래스도 많이 있습니다!
Functional Java 는 살펴볼 가치가있는 것이고 FunctionalJ 는 또 다른 것입니다.
순수한 Java 솔루션을 원한다면 lambdaj를 확인하십시오.
http://code.google.com/p/lambdaj/
DSL 스타일에서 클로저를 정의하고 사용할 수있을뿐만 아니라 명시 적으로 클로저 나 루프를 작성하지 않고도 기능적인 방식으로 컬렉션을 조작 할 수 있습니다.
Jambda 는 또 다른 FP 라이브러리입니다. 로부터 문서 :
Jambda는 기능 프로그래밍 (FP)의 도구와 개념을 Java (TM) 세계에 제공하려는 시도입니다.
목표는 다음과 같습니다.
- Java 프로그래머에게 표현적인 FP 구성을 제공하려면
- Java 프로그래머를 FP 세계로 연결하기 위해
- Java 및 제네릭이 얼마나 확장 될 수 있는지 확인하려면
이 문서는 Java 프로그래머를 FP 세계에 소개하는 동시에 Jambda의 일부 (또는 대부분) 기능을 설명하려는 시도입니다.
Apache Commons에는 기능적 코드가 있습니다. 예를 들어 Predicate 인터페이스를 참조하십시오 .
Google Guava 에는 다음과 같은 기능이 있습니다.
- 수집 작업
- 동시성 구성 (미래)
Or download OpenJDK 8 to try out Lambda expressions the way they will become in Java 8. Among others, the collection APIs are adjusted to support a functional style. See http://macgyverdev.blogspot.se/2012/10/functional-programming-in-java.html for examples of new collection APIs and comparisons with Guava, LambdaJ and FunctionalJava.
Scala was mentioned here, but there's a lot lighter and more Java compatible language: Xtend. It compiles to plain Java and uses the same type system. It has great Eclipse support. You can mix .java
and .xtend
files in a single project.
Sample code:
def static void main(String[] args) {
val s = #[1,2,3].map[it+43].join(", ")
println(s);
}
Although Functional Java is the most popular but i'll suggest you to try Google guava lib.
http://code.google.com/p/guava-libraries/
참고URL : https://stackoverflow.com/questions/1267297/functional-programming-in-java
'IT Share you' 카테고리의 다른 글
jQuery를 사용하여 클래스 변경시 이벤트를 발생시키는 방법은 무엇입니까? (0) | 2020.12.06 |
---|---|
XAML 태그 만 사용하여 다른 컨트롤을 클릭 할 때 WPF 팝업을 여는 방법은 무엇입니까? (0) | 2020.12.06 |
Unity를 사용하여 개발하는 데 사용되는 언어 (0) | 2020.12.06 |
iOS에서 간단한 체크 박스를 만드는 방법은 무엇입니까? (0) | 2020.12.06 |
Hadoop의 메모리 부족 오류 (0) | 2020.12.06 |