Java8 vs Java11 vs Java17
람다 표현식
함수형 프로그래밍 스타일을 자바에 도입
예시
// 기존 익명 클래스 방식 new Thread(new Runnable() { @Override public void run() { System.out.println("Hello, world!"); } }).start(); // 람다 표현식 방식 new Thread(() -> System.out.println("Hello, world!")).start();
스트림 API
컬렉션 데이터를 함수형 스타일로 처리하는 도구
주로 Filtering, Mapping, Sorting 등의 작업을 쉽게 수행할 수 있게 해줌
예시
신규 날짜와 시간 API
java.time package
java.util.Date와 java.util.Calendar의 복잡함과 불편함을 해결
예시
디폴트 메서드
인터페이스에서 메서드 구현을 제공
예시
HttpClient 표준화
Java 9에서 소개되었던
HttpClientAPI가 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