Java 8 (2014년 출시)
Java 8은 매우 중요한 릴리스로, 다음과 같은 주요 기능이 포함되었습니다:
- 람다 표현식: 함수형 프로그래밍 스타일을 지원하여 코드의 간결함과 가독성을 높입니다.
- 스트림 API: 컬렉션을 효율적으로 처리하기 위한 스트림 처리 기능을 제공합니다.
- 디폴트 메서드: 인터페이스에 메서드 구현을 추가할 수 있습니다.
- java.time 패키지: 날짜와 시간을 다루기 위한 새로운 API를 도입합니다.
- 메타스페이스: PermGen 공간을 대체하여 메모리 관리를 개선합니다.
Java 11 (2018년 출시)
Java 11은 장기 지원(LTS) 버전으로, 여러 새로운 기능과 변경 사항을 포함하고 있습니다:
- 새로운 API:
- HttpClient API: HTTP 요청을 처리하기 위한 표준 API입니다.
- 파일 읽기/쓰기 메서드: Files.readString(), Files.writeString() 메서드가 추가되었습니다.
- Local-Variable Syntax for Lambda Parameters: 람다 파라미터에 var를 사용할 수 있습니다.
- 런타임 및 도구 개선:
- 일부 Java EE 및 CORBA 모듈이 제거되었습니다.
- JEP 328: Flight Recorder가 포함되어 애플리케이션 성능 분석을 돕습니다.
- ZGC (Z Garbage Collector): 저지연 수집을 위한 새로운 가비지 컬렉터입니다.
- 기타:
- var 키워드를 사용한 로컬 변수 타입 추론(자바 10에서 도입됨)이 람다 파라미터에서도 사용 가능해짐.
- 새로운 String 메서드: isBlank(), lines(), strip(), repeat() 등.
Java 17 (2021년 출시)
Java 17은 또 다른 장기 지원(LTS) 버전으로, 여러 개선 사항과 새로운 기능이 추가되었습니다:
- 새로운 기능 및 API:
- Sealed Classes: 상속을 제한하여 특정 클래스만 상속할 수 있도록 합니다.
- Pattern Matching for instanceof: 타입 캐스팅을 더 간편하게 합니다.
- Record 클래스: 불변 데이터 객체를 쉽게 생성할 수 있는 방법을 제공합니다.
- 성능 개선:
- G1 및 ZGC 가비지 컬렉터의 성능이 향상되었습니다.
- 라이브러리 개선:
- RandomGenerator 인터페이스 추가 및 Random 클래스 개선.
- Vector API(Incubator): 벡터 계산을 최적화합니다.
- 언어 기능:
- Text Blocks: 여러 줄 문자열 리터럴을 쉽게 작성할 수 있습니다.
- Switch Expressions: 더 간결한 switch 문법을 제공합니다.
- 삭제 및 비활성화된 기능:
- Applet API 제거.
- Security Manager 비활성화.
Java 21 (2023년 출시)
Java 21은 최신 버전으로, 다음과 같은 주요 변경 사항이 포함됩니다:
- 새로운 기능:
- Virtual Threads: 더 많은 동시성을 처리하기 위한 경량 스레드.
- Structured Concurrency: 스레드 작업을 구조적으로 관리하는 새로운 API.
- 언어 기능:
- Pattern Matching for switch: 더 간결하고 강력한 switch 문법.
- Record Patterns: 레코드 타입의 패턴 매칭을 지원.
- 성능 및 안정성 개선:
- ZGC의 성능 향상 및 안정성 개선.
- 새로운 Foreign Function & Memory API(FFM): Java 프로그램에서 외부 메모리와 상호작용하는 새로운 방식.
- API 및 도구 개선:
- 더 많은 HTTP/2 및 HTTP/3 지원.
- 새로운 Vector API 개선 및 표준화.
- 기타:
- 여러 개의 incubator 및 preview 기능이 포함되어 더 많은 피드백을 수집하고 있습니다.