- 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

+ Recent posts