java 언어를 사용해서 개발하는 대부분의 application은 spring을 사용할 것이다.
spring-boot 3.0부터는 java17 버전 이후만 지원한다고 하니
java17 버전을 사용하기 위해서 공부해 보자.
switch문 개선
기존 Java 11:
- switch는 int, String 등에만 사용 가능, case마다 break 필수
Java 17 변경점:
- switch에서 패턴 매칭을 지원하여 다양한 타입을 처리 가능
- case 안에서 break 없이 바로 값 반환 가능
sealed classes
기존 Java 11:
- abstract 클래스로만 상속을 제한할 수 있었음
Java 17 변경점:
- sealed 키워드를 사용해 명시적으로 상속 가능한 클래스 제한 가능
ZGC 및 G1GC 성능 개선
기존 Java 11:
Java 17 변경점:
- ZGC가 더 낮은 메모리 오버헤드와 짧은 STW(Stop The World) 시간 제공
- G1 GC 성능 개선으로 빠른 메모리 할당 및 회수 가능
텍스트 블록 (Text Blocks)
멀티라인 문자열을 처리의 불편함 개선
- 기존에는 \n 줄 바꿈과 + 연결을 사용해야 했음
- """ (triple quotes)를 사용하여 멀티라인 문자열을 쉽게 작성 가능
- \n 없이 줄 바꿈을 표현 가능
- 코드 가독성이 향상됨
- JSON, SQL 같은 멀티라인 데이터를 더 쉽게 다룰 수 있음
record 클래스
DTO (데이터 저장용 객체)를 만들 때 보일러플레이트 코드 개선
- 기존에는 getter/setter, toString(), equals(), hashCode()를 직접 구현
record를 사용하면 자동으로 필드, 생성자, toString(), equals(), hashCode()가 생성됨
- DTO, VO 같은 불변 객체(Immutable Object) 생성이 간단해짐
- 자동으로 getter, equals(), hashCode(), toString()을 제공
- 코드가 훨씬 간결해짐
instanceof 패턴 매칭
기존에는 instanceof 체크 후, 형변환을 따로 필요하였지만
17부터는 instanceof 사용 시, 형변환을 한 번에 처리 가능
- 중복되는 (String) obj 형변환 코드가 필요 없음
- 코드 가독성이 좋아짐