Modern Java in Action #1

Taeyong.Hwang·2022년 3월 1일
2

Modern Java in Action

목록 보기
1/6
post-thumbnail

해당 장에서는 앞으로 배울 내용들에 대해 간략히 소개하는 내용이 주를 이룹니다. 그 중에서 유심히 살펴볼 만한 내용들을 간략히 적어보았습니다.

Java8 (1.8)

고전적인 객체지향에서 벗어나 함수형 프로그래밍으로 다가섰다.

자바8 설계의 밑바탕을 이루는 세 가지 프로그래밍 개념

1. Stream Processing

  • 스트림
    • 한 번에 한 개씩 만들어지는 연속적인 데이터 항목들의 모임
    • 어떤 프로그램의 출력 스트림은 다른 프로그램의 입력스트림이 될 수 있다.
    • 스트림 내의 요소를 쉽게 병렬로 처리할 수 있는 환경을 제공해준다.

자바8에서 제공하는 스트림 API는 파이프라인을 만드는 데 필요한 많은 메서드를 제공한다.(java.util.stream)
스트림 API를 이용해 입력 부분을 여러 CPU 코어에 쉽게 할당할 수 있다.(병렬성)
기존 컬렉션을 처리하면서 발생하는 반복적인 코드문제 그리고 멀티코어 활용 어려움이라는 두 가지 문제을 모두 해결했다.

2. Behavior Parameterization
메서드를 다른 메서드의 인수로 넘겨주는 기능을 의미한다.
스트림 API는 기본적으로 Behavior Parameterization을 가정하고 구현되어 있다고 한다.

3. 병렬성을 위한 pure function
스트림 메서드로 전달하는 코드는 다른 코드와 동시에 실행하더라도 안전하게 실행될 수 있어야 한다.




함수

메서드와 람다(anonymous function)를 First class function으로

  1. method reference
File[] hiddenFiles = new File(".").listFiles(File::isHidden) //::(이 메서드를 값으로 사용하라는 의미)
  1. anonymous function
filterApples(inventory, (Apple a) -> GREEN.equals(a.getColor()) );




디폴트 메서드

자바8은 구현 클래스에서 구현하지 않아도 되는 메서드를 인터페이스에 추가할 수 있는 기능을 제공합니다.

default void sort(Comparator<? super E> c) {
	Collections.sort(this, c);
}




Optional<T> 클래스

NullPointer Exception을 피할 수 있도록 도와주는 클래스이다.





Java9

모듈 시스템

java9에서는 모듈을 정의하는 문법을 제공하며, 이를 이용해 패키지 모음을 포함하는 모듈을 정의할 수 있다. 모듈 덕분에 JAR 같은 컴포넌트에 구조를 적용할 수 있으며 문서화와 모듈 확인 작업이 용이해졌다.

profile
나를 위해 정리하는 개발 블로그

0개의 댓글