2012년 12월 25일 화요일

LambdaJ 소개

.NET LINQ 처럼 Lambda 표현식으로 데이터리 처리하는 방법을 제공해는 라이브러리입니다.
Closure 라는 함수형 언어도 있지만, Java 만을 고집하시는 분들이라면, 아주 괜찮은 라이브러리라 할 수 있습니다.

특히 컬렉션에 대한 Filtering, Sorting, Aggregation 등을 loop 로 표현하게 되면 상당히 코딩량이 많아지는데, 이를 LambdaJ 를 이용하여 엄청나게 줄일 수 있다는 것이 장점이라고 볼 수 있습니다.

아쉽게도 LINQ 도 마찮가지지만, 성능은 당연히 기존 컴파일 방식보다는 평균 3배가량 느립니다.
요렇게 성능이 느린 것을 극복하기 위해 LINQ는 병렬방식으로 처리할 수 있는 길을 열어 놨는데, LambdaJ 는 아쉽게도 이게 없네요... 병렬 처리가 가능하다면 3배 느린 건 멀티코어로 극복이 가능하거든요^^

Java 8 에서 지원할지, LambdaJ 도 지원할지, 아니면 또 다른 Library 가 있는지는 모르지만...
제가 지금까지 조사한 바로는 없네요. 혹시 아시는 분은 코멘트 부탁 드립니다.

다음은 LambdaJ 에 대한 소개 슬라이드이니 이 것을 보시고 공부해 보시기 바랍니다.




제가 .NET 에서도 LINQ 를 헤비하게 사용하였고, Java 개발에도 LINQ 와 유사한 것을 찾고, 헤비하게 사용하려고 하느냐 하면, Data 관련 여러 작업들을 RDBMS의 SQL문장이 아닌 Object Graph 상에서 수행하기 위해서는 단순한 코드로 표현되는 방법이 필요했구요. 그래야만 ORM인 Hibernate 를 사용하는 효과를 극대화 할 수 있기 때문입니다.

결론적으로 RDBMS에서 데이터 연산과 관련된 부분 중에 대용량이 아닌 경우는 Hibernate 에 의한 Domain Model  로부터 쉽게 도출할 수 있는 방법이 지원된다면,  RDBMS 의존도를 더욱 줄일 수 있기 때문입니다.

Java 8 이 나온다 하더라도, 실제 적용되기까지는 시일이 걸리므로, 우선은 LambdaJ 같은 LINQ   와 유사한 기능을 지원하는 라이브러리를 써야 할 것 같네요.

그럼 Java 8 이나 그 후로는?


댓글 없음: