Skip to content

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

@Irisation23

Description

@Irisation23

Discussed in https://github.com/orgs/Study-2-Modern-Java-In-Action/discussions/2

Originally posted by bunsung92 June 8, 2023

목차 ♨️

Table of contents generated with markdown-toc


0. 개요

학습하게 될 내용에 대한 전반적인 방향의 제시한 챕터이다.

  • 람다 표현식, 메서드 참조, 디폴트 메서드가 무엇일까?
  • parallel 이란 키워드에 도전 해 보고자 한다면 이젠 학습을 이어나가 볼 차례

1. 변화의 초점

자바 8은 간결한 코드, 멀티코어 프로세서의 쉬운 활용이라는 두 가지 요구사항을 기반으로 변화를 맞이한 버전이다.

  • 스트림 API
  • 메서드에 코드를 전달하는 기법
  • 인터페이스의 디폴트 메서드

위의 세가지 키워드를 기반으로 크게 변경된 점을 짚어나가며 학습 방향을 잡아 볼 수 있도록 해보자.


2. 스트림 API

스트림과 API 간단하게 용어를 짚어보자.

  • 스트림은 데이터의 흐름을 뜻한다.
  • 여기서 데이터의 흐름이란 입력출력의 플로우를 말한다.
  • API는 프로그램과 프로그램이 서로 상호작용 하는 것을 도와주는 매개체이다.

자 그럼 자바의 스트림 API란 뭘 의미할까?

  • 컬렉션의 요소를 더 쉽게 처리할 수 있도록 돕는다.
  • 대표적으로 데이터의 필터링, 매핑, 정렬, 그룹화 등 다양한 연산을 수행할 수 있도록 돕는 API이다.
  • 선언적으로 데이터를 처리하는 방식을 제공하므로 간결한 코드와 가독성을 높여준다.

3. 메서드에 코드를 전달하는 기법

람다 표현식과 메서드 참조가 대표적인 예로 들 수 있다.

  • 람다 표현식
  • 익명 객체를 이용하여 매개변수 목록, ->, 그리고 body (함수 본문)으로 구성된다.
() -> {//do something}
  • 메서드 참조
  • :: 으로 표기되며 (이 메서드를 값으로 사용하라) 라는 의미를 담고있다.
File[] hiddenFiles = new File(",").listFiles(File::isHidden)

4. 인터페이스의 디폴트 메서드

자바의 개발자들은 디폴트 메서드를 만들기 이전에 이런 고민을 했다.
기존에 만들어 둔 인터페이스에 새로운 기능을 추가 해 보려 했다.

하지만 이를 구현한 수많은 클래스들 모두가 해당 기능의 구현을 강제하는 것은 부담이 큰 작업이었다.

부담의 가중을 막기 위해 디폴트 메서드를 정의하게 되었다.


5. 정리 및 회고 📚

  1. 자바 8은 간결한 코드, 멀티코어 프로세서의 쉬운 활용을 보강하기 위해 발전 되었다.
  2. 위의 두 조건을 만족 시켜주기 위해 스트림 API, 메서드에 코드를 전달하는 기법, 인터페이스의 디폴트 메서드를 기반 삼아 앞으로 정리 해 보자.

2023.06.09

내가 프로그래밍을 처음 시작하면서 사용했던 자바의 버전은 11버전이다.
그러나 해당 자바를 과연 내가 해당 버전에 알맞는 코드로 알맞게 코딩을 하고 있었느냐에 대한 질문에는 다소 회의적이다.
가슴 한켠에 언젠간 모던자바인액션을 보리라 다짐했는데 마침 좋은 기회가 왔고, 기회를 놓치지 않기 위해 좀 더 전투적으로 임할것이라 다짐한다.

마지막 챕터를 정리할 때는 지금보다 나아진 모두가 되리라 믿으며 화이팅!

Metadata

Metadata

Assignees

Labels

Chapter 1Chapter 1 정리를 위한 라벨입니다.ding_cook훈민님을 위한 라벨입니다.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions