java 8,11,17 차이점은 뭘까
Java 8 (2014년 출시)
- 람다 표현식과 스트림 API: 함수형 프로그래밍을 지원하여 코드 간결성 향상.
- java.time 패키지: Date와 Calendar의 문제점을 개선한 새로운 날짜 및 시간 API.
- 기본 메서드: 인터페이스에 기본 구현을 추가할 수 있게 되어 기존 코드의 호환성 강화.
- Optional 클래스: NullPointerException을 줄이기 위한 기능 제공.
- Nashorn JavaScript 엔진: JVM 내에서 JavaScript를 실행할 수 있도록 지원.
Java 11 (2018년 출시, LTS)
- Java 9, 10에서의 변화 통합: 모듈 시스템(JSR 376), HTTP 클라이언트 API, Local-Variable Syntax(var) 등의 기능.
- String 관련 메서드 추가:
isBlank
, lines
, strip
등 문자열 처리를 쉽게 하기 위한 메서드 추가.
- 새로운 HttpClient API: 비동기와 동기 방식으로 HTTP 요청을 쉽게 다룰 수 있는 API.
- 런타임 없이 실행 가능: Java 파일을 바로 실행할 수 있는
java 파일명.java
형태의 실행 가능.
- JVM에서 많은 제거: 예를 들어, Java EE와 CORBA 모듈이 제거되었으며, Applet API 사용 중단 권고.
- Garbage Collection 개선: ZGC(실험적) 및 G1 GC의 성능 최적화.
Java 17 (2021년 출시, LTS)
- 새로운 기능들 추가 및 미리보기 기능의 정식화:
- Sealed Classes: 상속 구조를 제한하여 클래스를 더 안전하게 관리할 수 있음.
- Pattern Matching for
instanceof
: 조건문 간소화를 위한 instanceof
패턴 매칭 지원.
- Records: 불변 데이터 클래스를 쉽게 작성할 수 있도록 제공.
- Vector API (Incubator): CPU의 벡터 명령을 활용해 성능을 높일 수 있는 API 제공.
- Foreign Function & Memory API (미리보기): 외부 라이브러리와 메모리 관리 기능을 쉽게 통합 가능.
- Garbage Collection 추가 개선: ZGC와 G1 GC가 더욱 개선됨.