Java8 vs Java11 vs Java17
람다 표현식
함수형 프로그래밍 스타일을 자바에 도입
예시
스트림 API
컬렉션 데이터를 함수형 스타일로 처리하는 도구
주로 Filtering, Mapping, Sorting 등의 작업을 쉽게 수행할 수 있게 해줌
예시
신규 날짜와 시간 API
java.time package
java.util.Date와 java.util.Calendar의 복잡함과 불편함을 해결
예시
디폴트 메서드
인터페이스에서 메서드 구현을 제공
예시
HttpClient 표준화
Java 9에서 소개되었던
HttpClient
API가 Java 11에서 표준으로 채택 (기존에는RestTemplate
)HTTP/1.1, HTTP/2, WebSocket 지원
var
키워드 사용 확장
var
키워드 사용 확장자바 10에서 소개되었던
var
키워드를 사용하여 지연 변수 타입을 추론할 수 있음.
여러 메서드 추가
String
클래스isBlank()
: 문자열이 공백으로만 이루어져 있는지 확인.lines()
: 문자열을 줄 단위로 분할하여 스트림으로 반환.strip()
,stripLeading()
,stripTrailing()
: 문자열의 앞뒤 공백을 제거.repeat(int times)
: 문자열을 주어진 횟수만큼 반복.예시
Optional
클래스isEmpty()
: 값이 비어있는지 확인.예시
단일 파일 소스 코드 프로그램 실행
Java 11부터는 단일 파일로 작성된 소스 코드를 컴파일 없이 바로 실행할 수 있음.
가비지 컬렉터 개선
ZGC
매우 낮은 Latency를 목표로 설계됨 - GC 중 쓰레드가 멈추는 시간을 짧게 유지
대규모 Heap 지원 - 최대 수백 GB까지 메모리를 효율적으로 관리할 수 있음
사용법
Epsilon GC
실험적으로 등장
Record Class
간결하고 명료한 방식으로 데이터 클래스를 정의할 수 있는 새로운 클래스 유형
멤버 변수는
private final
필드별 getter, equal, hashCode, toString 자동 생성
예시
Sealed Class
봉인된 클래스를 사용하여 계층 구조를 더 염격하게 제어
예시
Pattern Matching 스위치문
switch
문에 패턴을 적용하여 유연한 매칭이 가능해짐예시
Switch Expression
기존의 Switch문의 중복을 제거한 방식
Last updated