back-stage / Modern-java-in-action

1 stars 0 forks source link

[Ch.01] 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가? #1

Open beginin15 opened 3 years ago

blossun commented 3 years ago

참고 자료

beginin15 commented 3 years ago

아래는 원본에서 일부만 가져왔습니다. 저의 추측도 포함되어 있기 때문에 정확하지 않은 내용이 있을 수 있다는 점! 참고해주세요. 참고로 가독성은 원본이 더 나은 것 같습니다.ㅋㅋ

핵심 정리 + 알게된 사실

1. 스트림 API는 빅데이터를 다루기에 적합하다?

(p.10) '스트림이 처리하는 데이터(심지어 처리된 데이터)를 모두 메모리에 저장하지 않을 수도 있도록 설계되었다. 따라서 스트림을 이용하면 컴퓨터 메모리에 저장할 수 없는 큰 데이터도 문제없이 처리할 수 있다.'

  • 자바의 스트림 API가 빅데이터를 다루기 좋은 이유는 속도가 아니라 메모리 측면에서 다뤄진다.
  • 스트림은 요소들을 메모리에 저장하지 않는다. (반면 컬렉션은 모든 요소를 메모리에 저장한다.)
  • 스트림은 Source(컬렉션, 배열, 입출력 채널 등)로부터 입력받은 데이터를 처리하여 Destination으로 전달하는 파이프라인의 일종이다.
![https://miro.medium.com/max/700/1*PAC0g5wHAaYILcUepKStRQ.gif](https://miro.medium.com/max/700/1*PAC0g5wHAaYILcUepKStRQ.gif)

출처 - [https://medium.com/elevate-java/java-streams-an-in-memory-data-structure-d6984eea1091](https://medium.com/elevate-java/java-streams-an-in-memory-data-structure-d6984eea1091)

그렇다고 아예 메모리를 사용하지 않는 것은 아니고 중간 연산을 처리하는 과정에서 RAM은 사용하지 않을까? 단지 그 크기가 전체가 아닌 chunk 수준으로 필요하기 때문에 빅데이터를 다루기엔 문제가 없는 것이 아닌지.

2. Lazy evaluation

3. 프로세서 - 코어 / 프로세스 - 스레드 구분

프로세서

코어

프로세스

스레드

4. 스레드는 다루기 어렵다.

프로그래머가 문제없이 스레드를 직접 관리하는 것은 어렵다. 오죽 어려우면 자바의 버전이 높아질 때마다 꾸준하게 스레드를 안전하게 사용하기 위한 장치들을 지원했을까!

5. 멀티코어 CPU의 대중화가 자바 8에 미친 영향

6. 스트림 API

스트림이란?

스트림 API의 핵심

장점과 단점

장점

단점

스트림의 단점과 사용 시 주의해야 할 점은 나중에 더 자세히 살펴봐야 할 것 같다.

7. 컬렉션과 스트림 차이점

기본적으로 스트림 개념 중 일부는 컬렉션에서 가져왔으며 쿼리와 같은 데이터 추상화 아이디어를 더한 것 같다.

8. 일급 객체(First-class object)

9. 동작 파라미터화

유틸성 클래스는 상태를 가지고 있지 않는 경우가 많기 때문에 메서드 참조 방식으로 활용되기에 적합하다.

10. 순수 함수

11. 함수형 프로그래밍

13. 디폴트 메서드

14. 자바 8 ~ 11의 주요 변경 사항

기타

다이아몬드 상속 문제

https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Diamond_inheritance.svg/220px-Diamond_inheritance.svg.png

출처 - https://en.wikipedia.org/wiki/Multiple_inheritance

참고 자료

본문

  1. 스트림 API는 빅데이터를 다루기에 적합하다?

  2. Lazy evaluation

  3. 프로세서 - 코어 / 프로세스 - 스레드 관계

  4. 스트림 API

기타

읽어볼 자료

suhyunsim commented 3 years ago

다소 늦었지만 추가로 다는 푸글의 모던 자바 책 정리 포스트

blossun commented 3 years ago

책 정리