# 자바8
> 자바 역사를 통틀어 가장 큰 변화가 `자바8`에서 일어났다.
- 멀티 코어 cpu대중화와 같은 하드웨어적인 변화가 자바8에 영향을 주었다. 기존 자바 프로그램은 코어 중 `하나`만을 사용하였다.
- 자바8 등장 전, 나머지 코어를 활용하려면 스레드를 사용하는 것이 좋다고 누군가 그랬을 것이다. 그러나 스레드를 사용하면 관리가 어렵고, 많은 문제가 발생 할 수 있다. (어떤 문제?)
- 자바는 이러한 병렬 실행 환경을 쉽게 관리할 수 있고, 에러도 덜 발생할 수 있는 방향으로 진화하기 위해서 노력했다.
- 자바 1.0 에선ㄴ 스레드와 락
- 자바 5에서 스레드 풀, 병렬 실행 컬렉션(concurrent collection)
- 자바7 : 포크/조인 프레임워크
자바8은 ?
- 스트림 API
- 메서드에 코드를 전달하는 기법
- 인터페이스 default 메서드
- 자바8에서는 DB의 질의 언어의 표현식처럼 `병렬 연산`을 지원하는 스트림 API를 제공한다.
- sql 언어에서 고수준언어로 동작을 표현하면, 구현(스트림 라이브러리)에서 최적의 저수준 실행방법 선택, 실행
즉, 스트림을 이용하면 멀티코어 CPU를 이용하는 것보다 비용이 훨씬 `비싼` synchronized키워드를 사용하지 않아도 된다.
## 스트림 처리
스트림이란 ?
- 한번에 한 개씩 만들어지는 연속적인 데이터 항목들의 모임
Stream<T> : T형식으로 구성된 일련의 항목
## 동작 파라미터 화로 메서드에 코드 전달하기
- 자바 8 이전에는 메서드를 다른 메서드로 전달할 방법이 없었다. 그러나 자바8에서는 메서드를 다른 메서드의 인수로 넘겨 줄 수 있다. -> 동적 파라미터화
- 동적 파라미터화가 `왜` 중요할까?
(안나와있음..뒤에나오나..)
(전동적인 객체지향 프로그래밍과 함수형 프로그래밍은 서로 완전 상극이다 -> 왜?)
'JAVA > JAVA8' 카테고리의 다른 글
[JAVA8] Stream (0) | 2018.01.09 |
---|