Lamda & Stream API

gyubong park·2020년 7월 31일
0

자바8 이전의 자바

많고 유용한 라이브러리
잘 설계된 객체지향
스레드와 락을 통한 동시성 지원
스칼라, 그루비 같은 JVM기반 언어 지원, 자바와 상호 동작 - invokedynamic 바이트 코드 추가

자바 8이 나오게 된 배경 (2014년)

하드웨어의 발전 - 멀티코어 CPU → 병렬성에 대한 요구 증가
함수형 프로그래밍

자바 8 목표

더욱 간결한 코드를 구현
병렬성을 활용한 코드

자바 8에서 추가된 세 가지

동작 파라미터화로 메서드에 코드 전달하기
코드 일부를 API로 전달하는 기능
동작 파라미터화(behavior parameterization)

스트림 처리
스트림 - 한 번에 한 개씩 만들어지는 연속적인 데이터 항목들의 모임
java.util.stream 패키지
우리가 하려던 작업을 고수준으로 추상화해서 일련의 스트림으로 만들어 처리
스트림 파이프라인을 이용해서 입력 부분을 여려 CPU 코어에 쉽게 할당 가능 --> 쓰레드를 사용하지 않고 공짜 병렬성 얻을 수 있음!

병렬성과 공유 가변 데이터
공유 가변 데이터에 접근하지 않는 함수(= 순수함수, 부작용 없는 함수)를 통해 안정하게 실행

자바8은 객체지향적 프로그래밍에 함수형 프로그래밍을 더함으로써 두 가지 프로그래밍 패러다임의 장점을 모두 활용할 수 있게 되었음→ 문제 해결 도구의 다양성이 증가!

Collections와 Stream 비교 원본 펼치기
Lamda 표현식과 Stream API는 Collection에 관련해 높은 추상화 인터페이스를 제공

이러한 인터페이스를 이용해서 업무 로직이 더 간결해보이고 실수를 예방할 수 있음 → 유지보수에 도움이 된다!!

profile
초보 개발자

0개의 댓글