- 2023/9/19 출시 예정인 Java 21은 스위치 블록과 표현식에서 레코드 패턴을 지원하며, 이는 Kotlin, Rust, C#과 같은 함수형 프로그래밍 패턴에 Java를 더 가깝게 만드는 중요한 업데이트
- Java는 지난 10년 동안 빠르게 발전해 왔으며, Java 9 이후로 6개월마다 주요 업데이트가 이루어짐
- Java 21은 레코드 패턴과 스위치 패턴 매칭을 안정화시키며, 함수형 프로그래밍의 핵심 요소인 대수 데이터 타입 표현이 가능해짐
- 대수 데이터 타입의 개념은 집합 이론의 한 분야인 타입 이론을 통해 설명됨
- 새 버전은 또한 패턴 매칭이라는 기능을 도입하며, 이를 통해 특정 데이터 패턴의 정적 검증이 가능해짐
- Java 21은 개발자가 라이브러리 API와의 사용자 상호작용을 제어할 수 있도록 봉인된 클래스 또는 인터페이스를 도입
- 봉인된 클래스 또는 인터페이스는 Sum 타입이라는 개념에 기반한 디자인 패턴을 지원하며, 이는 한 시점에 타입이 그 구성 요소 중 하나가 될 수 있다는 것을 의미
- 새 버전은 또한 스위치 문과 표현식 내에서 복잡한 조건을 간결하게 표현할 수 있는 가드 절을 특징으로 함
- Java 21은 패턴 매치가 잘못될 때 발생하는 java.lang.MatchException이라는 새로운 예외 클래스를 도입
- 이 기사는 Java 21에서 스위치 블록의 사용과 특정 조건에서 MatchException을 발생시킬 수 있는 방법에 대해 논의
- 스위치 블록이 선택자와 지정된 변형 중 어느 것과도 일치하지 않을 때 MatchException이 발생하며, 이는 매우 이례적인 것으로 간주됨
- Java Enhancement Proposal (JEP) 441은 항상 예외를 발생시키는 레코드 접근 메서드가 매우 이례적이라는 것을 인정
- 이 기사는 가드 절에서 0으로 나누는 오류로 인해 MatchException을 발생시키는 스위치 블록의 예를 제공
- 저자는 나눗셈 연산에서 피제수가 0이 될 수 있는 동적 값일 때 상황이 더 복잡해진다고 지적
- 이 기사는 Java 21의 새로운 기능과 기능을 탐구하는 시리즈의 일부로, 앞으로 이러한 특징들이 Java 코드 작성을 개선하는 데 어떻게 사용될 수 있는지에 대한 실용적인 예제와 함께 일부 흥미로운 특징들을 살펴볼 예정
- 저자는 제네릭이 스위치 패턴과 어떻게 상호 작용하는지와 같은 특정 주제들이 이 기사에서 다루어지지 않았지만, 향후 기사에서 다룰 수 있음을 언급
- 이 기사는 JVM 패턴 매칭, 함수형 프로그래밍, Java 21, 대수 타입에 관심이 있는 사람들에게 관련성이 있음