Skip to content

[Chapter 1] 자바8은 SQL이 표현식을 처리하는 것처럼 병렬 연산을 지원하는 스트림 API를 제공한다 #2

@jaeminkim90

Description

@jaeminkim90

p.39
자바 8은 데이터베이스 질의 언어에서 표현식을 처리하는 것처럼 병렬 연산을 지원하는 스트림이라는 새로운 API를 제공한다.

자바8은 SQL이 표현식을 처리하는 것처럼 병렬 연산을 지원하는 스트림 API를 제공한다가 무슨 뜻인지 잘 이해가 안되서 질문 올리려다가 조금 찾아보니 명령형 언어와 선언형 언어의 개념을 접하게 되었습니다. SQL과 HTML이 대표적인 선언형 언어고, (자바8 이전의) 자바는 명령형 언어라는 것인지 알게되니, 스트림 API가 SQL처럼 병렬 연산을 지원한다는 말의 의미를 이해할 수 있었습니다.

명령형 언어와 선언형 언어의 차이를 설명하는 글

스트림 이전의 자바는 컬렉션 데이터를 병렬 처리하기 위해 데이터를 서브 파트로 분할 후, 분할된 서브 파트에 따라서 각각의 스레드로 할당해야 합니다. 할당된 스레드는 충돌이 발생하지 않도록 동기화를 해줘야 합니다. 그리고 마지막으로 각각의 스레드 결과를 다시 합쳐야 합니다.

자바 8의� 스트림은 선언적 프로그래밍을 지원합니다. 선언적 프로그래밍은 명령형 코드가 컴퓨터 시스템에서 제공되므로, 가장 효율적인 방식으로 동작할 수 있습니다. 개발자가 작업 순서와 방법을 명시하지 않음으로, 프로그램을 훨씬 더 자유롭게 재정렬할 수 있기 때문에 병렬 작업에도 유리합니다. 좋은 예는 SQL 데이터베이스에 대한 쿼리 플래너 및 쿼리 최적화 프로그램입니다. 대부분의 SQL 데이터베이스에서는 실제로 실행중인 쿼리와 실행 하도록 요청한 쿼리를 표시 할 수 있습니다.

*아래 이미지는 SQL식 사고와 선언형 언어가 왜 추상화와 병렬 작업에 유리한지 이해하는데 도움이 된 글입니다.

IMG_6686
IMG_6687

IMG_6684

IMG_6685

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions