woowacourse-study / 2022-modern-java-in-action

우아한테크코스 4기 모던 자바 인 액션 스터디
10 stars 4 forks source link

자바8 부터 추가된 일급시민과 람다란 무엇인가? #13

Open syoun602 opened 2 years ago

syoun602 commented 2 years ago

문제

자바8 에서는 왜 이급 시민인 메서드를 일급 시민으로 바꿀 수 있는 기능을 추가했을까?

선정 배경

책이 가장 크게 변화가 이뤄진 자바 8부터 설명하기 때문에 주요 변화에 대해서 알아보고자 해당 내용을 선정하게 되었다.

관련 챕터

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

syoun602 commented 2 years ago

프로그래밍 언어의 핵심은 값을 바꾸는 것 → 이러한 값들은 일급(First Class) 값 또는 시민이다

자바 7(그리고 이전)의 자바 프로그래밍 언어는 다양한 구조체 (메서드, 클래스)가 값의 구조를 표현하는데 도움이 될 수 있었지만, 프로그래밍 실행동안 이러한 모든 구조체를 자유롭게 전달할 수 없었다. 이렇게 전달이 불가능한 구조체가 이급 시민이다.

자바 8부터는 이급 시민도 일급시민으로 바꿀 수 있는 기능이 추가됨.

메서드를 일급 시민으로 만든다면?

자바의 일급 시민은 객체(일반, 참조 자료형)이다.

객체는 변수에 담을 수 있으며, 인자로 전달될 수 있고, 반환값으로도 전달될 수 있다.

하여 객체지향 프로그래밍의 메커니즘에 합당한 일급 시민이었는데, 프로그래밍 패러다임이 변하여 함수형 프로그래밍이 대두됨.

함수형 프로그래밍에서는 함수 자체가 일급 시민