-
[Java] java8에서 생긴 람다(Lambda)를 쓰는 이유는 뭘까?(짧음 주의)프로그래밍 언어/자바 & 코틀린 2019. 9. 7. 17:43
java 7까지만 써오던 내가 새로운 회사의 기술 스택으로 람다, 함수형 프로그래밍을 이해해야할 이유가 생겼다.
왜 람다를 사용할까?
주로 인터넷에서 본 이유는 아래와 같다.
1. 간결성
2. 불필요한 코드 증가의 감소
3. 가독성
4. 코드의 재사용성
5. 적은 보일러플레이트 코드(정렬 알고리즘 풀 때 느끼는 @Override comparator...)
6. 병렬 프로세싱의 기회
개인적으로, 간결성에 강조를 하는게 람다였던 것 같다.
솔직히 나처럼 람다를 처음 접하는 사람은 람다의 흐름을 캐치하기가 무척 힘들다. 익숙해지면 함수형 프로그래밍이 읽기 수월하고 코드가 짧아서 좋다고 하는데 그때까지는 코드를 읽는데 어려움이 있다.
그렇다면 기능적으로는?
모든 람다의 핵심은 지연실행(deferred execution)이다. 코드를 지연해서 실행하려는 이유는 뭘까?
1. 별도의 스레드에서 코드 실행
2. 코드를 여러번 실행
3. 알고리즘에서 코드를 적절한 시점에 실행(예를 들면, 정렬에서 비교 연산)
4. 어떤 일이 발생했을 때 코드 실행(버튼 클릭 시, 데이터 도착 시 등)
5. 필요할 때만 코드 실행
지연실행 하는 이유는 불필요한 연산을 줄이고 효율적으로 동작시키기 위함이다.
실제로 코드가 사용될 때까지 지연시켰다가 정작 사용할 때 동작하기 때문에 스레드 자원을 낭비하지 않을 수 있다. (lazy evaluation 키워드로 찾아보면 더 많은 글을 찾을 수 있다 - lazy evaluation 추천글 )
출처
1. Benefits of lambda expressions in Java makes the move to a newer JDK worthwhile
2. 가장 빨리 만나는 java8 - 카이호스트만 지음, 신경근 옮김
'프로그래밍 언어 > 자바 & 코틀린' 카테고리의 다른 글
[Kotlin] Kotlin 시작하기 전 - 특성, 장점 그리고 철학 (0) 2019.11.28 [Java] array(배열)과 arrayList(리스트)의 차이(arrayList는 어떻게 동적으로 늘어나는가?) (0) 2019.11.27 [Java] 왜 private 상수는 관습적으로 private static final로 선언할까? (0) 2019.07.30 [Java] 터미널(terminal)로 war 파일 만들고 푸는 법 (0) 2019.03.17 [Java] java 파일을 class 파일로 컴파일 하는 방법(한글 인코딩 포함) (0) 2019.01.30