-
CHAP1. 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가?book/모던 자바 인 액션 2020. 7. 13. 00:40
자바 역사상 가장 큰 변화는 자바 8에서 일어났으며 획기적이고 생산성이 바뀌었다.
자바 9와 10 역시도 변화가 있었지만 자바 8만큼은 아니었다.
이러한 변화들을 통해 프로그램을 더 쉽게 구현할 수 있게 되었다.
자바8이 등장하기 이전에는
- 코어 중 하나만을 사용( 나머지 코어들은 유휴 상태로 두거나 다른 용도로 사용 )
- 멀티 코어를 사용하기 위하여 스레드를 사용 ( 스레드를 사용하면 관리가 어렵고 많은 문제가 발생할 수 있음 )
위 두 가지의 특징을 가졌는데 자바 8이 등장한 후로는
스트림을 이용하여 병렬 실행을 접근하는 방법을 제공하게 되었다.
JAVA 8 에서 제공하는 새로운 기술
1. 스트림 API
- 기존에는 한 번에 한 항목을 처리했지만 하려는 작업을 SQL 쿼리문처럼 고수준으로 추상화하여 일련의 스트림으로 만들어 처리 ( 병렬 연산을 지원 )
여기서 스트림이란?
: 한 번에 한 개씩 만들어지는 연속적인 데이터 항목들의 모임
- 스트림 파이프라인을 이용하여 입력 부분을 여러 CPU 코어에 쉽게 할당함으로써 스레드를 사용하지 않고 병렬성을 제공
- 컬렉션 API와는 상당히 다른 방식으로 데이터를 처리
컬렉션은 반복문과 반복자(iterator)를 통해서 처리했다면 스트림은 루프를 신경 쓸 필요가 없음
2. 메소드에 코드를 전달하는 기법
: 메소드를 다른 메소드의 인수로 넘겨주는 것을 동작 파라미터화라고 부른다. ( 함수형 프로그래밍의 핵심적인 사항 )
- 변화하는 요구사항에 대응이 가능
- 동작 파라미터의 복잡한 과정이 간소화 ( 메소드 참조는 :: 로, 람다는 -> 로 )
- 하나의 파라미터로 다양한 동작이 가능
3. 인터페이스의 디폴트 메소드
- 자바8에서 호환성을 유지하면서 API를 바꿀 수 있도록 추가한 새로운 기능
- 원래는 외부에서 만들어진 컴포넌트를 가져와서 시스템을 구축할 때 인터페이스를 바꾸게 되면 인터페이스를 구현하는 모든 클래스의 구현을 바꿔야했다.
- 기존의 코드를 건드리지 않고도 원래의 인터페이스 설계를 자유롭게 확장
프레디케이트(predicate)
: 수학에서는 인수로 값을 받아 True 나 False로 반환하는 함수를 predicate라고 한다.
test라는 메소드만을 가진 함수형 인터페이스
'book > 모던 자바 인 액션' 카테고리의 다른 글
CHAP5. 스트림 활용 (0) 2020.08.23 CHAP4. 스트림 소개 (0) 2020.08.11 CHAP3. 람다 표현식 (0) 2020.07.28 CHAP2. 동작 파라미터화 코드 전달하기 (0) 2020.07.24 JAVA8 공부 시작 (0) 2020.07.11