- java 1.8에서 새롭게 추가된 Stream, Lambda, Optional에 대해서 간단하게 알아보도록 하자.
[ Lambda ]
- 함수 지향적 표현 방식으로 병렬 처리와 이벤트 지향 프로그래밍에 적합함.
- 익명 함수(Anonymous functions)를 지칭하는 용어
- 장점
- 불필요한 반복문의 삭제가 가능하며 복잡한 식을 단순하게 표현할 수 있다.
- 지연 연산을 수행함으로써 불필요한 연산을 최소화할 수 있다.
- 멀티 쓰레드를 활용한 병렬 처리가 가능하다.
- 단점
- 불필요하게 많이 사용하게되면 가독성을 떨어뜨릴 수 있다.
- 지역변수의 사용이 불가능하다.
[ Optional ]
- NPE(Null Pointer Exception)을 방지할 수 있도록 도와주는 래퍼 클래스
- Null이 올 수 있는 값을 감싸준다
- 개발자의 편의를 위한 각종 메서드가 있다.
- 장점
- 명시적으로 변수에 대한 null가능성을 표현할 수 있다.
- null체크를 직접 하지 않아도 된다
- NPE가 발생할 가능성이 있는 값을 직접 다룰 필요가 없다
- 단점
- Wrapper클래스이기 때문에 두 개의 참조를 가지므로 생성 비용이 많이 든다
- 직렬 화가 불가능하기 때문에 필드 변수로 사용하면 안 된다
- 값을 반환하는 용도로 사용해야 한다.
[ Stream ]
- 람다를 활용할 수 있는 기술 중 하나.
- 배열 또는 컬렉션 인스턴스를 다루는 방법 중 하나
- 스트림을 통해 생성, 가공, 결과를 출력해 낼 수 있다.
- 데이터의 구조가 아닌 데이터의 흐름
- 장점
- 가독성의 향상
- 손쉬운 병렬 처리
- 단점
- 디버깅이 힘들다
- 재사용이 불가능하다
'웹 기초' 카테고리의 다른 글
VO(Value Object) vs DTO(Data Transfer Object) and Entity (0) | 2022.02.03 |
---|---|
에자일 방법론(Agile) (0) | 2022.02.01 |
WebServer vs WAS (0) | 2022.01.31 |
HTTP vs HTTPS (0) | 2022.01.31 |