Java 8 LTS (2014.03)
지원 기간 : 2030.12
- 람다 표현식 (Lambda Expressions)
- 스트림 API (Streams API)
- 새로운 날짜와 시간 API (java.time)
- Ex) LocalDateTime
- 인터페이스의 디폴트 메서드 (Default Methods)
- 메타공간 (Metaspace) 메모리 관리
- Permanent Heap 영역이 제거 - Perm은 JVM에 의해 크기가 강제되던 영역
- Metaspace영역은 OS레벨에서 관리하는 영역이 되기에 Metaspace가 Native메모리를 이용함으로서 개발자는 영역 확보의 상한에 대한 오버헤드가 감소한다.
Java 9 (2017.09)
- 모듈 시스템 (Project Jigsaw)
- Jigsaw는 모듈을 만들고 모듈에 명시적으로 외부에서 호출할 수 있는 API를 선언한다. 언어 레벨에서 API 작성자가 외부에 노출한 API 외에는 접근할 수 없도록 설계 되어 있고 사용할 다른 모듈을 사용하는 경우는 선언적으로 사용한다.
- JShell (REPL)
- HTTP/2 클라이언트 API
Java 10 (2018.03)
- 지역 변수 타입 추론 (var)
- 가비지 컬렉터 개선
- 병렬 풀 GC
Java 11 LTS (2018.09)
지원 기간 2026.09
- 새로운 String 메서드(lines, strip, repeat 등)
- HTTP 클라이언트 API 표준화 (HttpClient)
- Lambda 파라미터의 지역변수 문법
- JavaFX 분리
Java 12 (2019.03)
- Switch Expressions (프리뷰)
- G1 가비지 컬렉터 개선
- JVM Constants API
Java 13 (2019.09)
- Switch Expressions (프리뷰 개선)
- 텍스트 블록 (Text Blocks) (프리뷰)
Java 14 (2020.03)
- Switch Expressions 표준화
- 텍스트 블록 (Text Blocks) (프리뷰 개선)
- 레코드 (Records) (프리뷰)
- 패턴 매칭 (Pattern Matching) for instanceof (프리뷰)
Java 15 (2020.09)
- 텍스트 블록 (Text Blocks) 표준화
- 숨겨진 클래스 (Hidden Classes)
- ZGC 개선
- Records (프리뷰 개선)
- 패턴 매칭 for instanceof (프리뷰 개선)
Java 16 (2021.03)
- 레코드 (Records) 표준화
- 패턴 매칭 for instanceof 표준화
- Vector API (Incubator)
Java 17 LTS (2021.09)
지원 기간 2029.09
- 장기 지원 (LTS) 버전.
- 패턴 매칭 for switch (프리뷰).
String result = switch (obj) { case Integer i -> "Integer: " + i; case Long l -> "Long: " + l; case Double d -> "Double: " + d; case String s -> "String: " + s; default -> "Unknown type"; };
- Sealed Classes.
// Animal.java public sealed class Animal permits Dog, Cat { // Animal class implementation } // Dog.java public final class Dog extends Animal { // Dog class implementation } // Cat.java public final class Cat extends Animal { // Cat class implementation }
- Foreign Function & Memory API (Incubator).
System.loadLibrary("example"); // Load the native library
- 난수 생성 API 추가
// 기본 랜덤 생성기 사용 RandomGenerator random = RandomGenerator.of("Random"); System.out.println("Random: " + random.nextInt()); // L64X128MixRandom 생성기 사용 RandomGenerator l64x128MixRandom = RandomGenerator.of("L64X128MixRandom"); System.out.println("L64X128MixRandom: " + l64x128MixRandom.nextInt()); // Xoshiro256PlusPlus 생성기 사용 RandomGenerator xoshiro256PlusPlus = RandomGenerator.of("Xoshiro256PlusPlus"); System.out.println("Xoshiro256PlusPlus: " + xoshiro256PlusPlus.nextInt());
Java 18 (2022.03)
- UTF-8 기본 인코딩
- Simple Web Server
- Code Snippets in Java API Documentation
Java 19 (2022.09)
- Project Loom (Virtual Threads) (프리뷰)
- Foreign Function & Memory API 개선
- Vector API 개선
Java 20 (2023.03)
- Scoped Values (Incubator)
- Improved Pattern Matching
- Further Virtual Threads improvements
Java 21 (2023.09)
- Project Panama (Foreign Function & Memory API)
- Enhanced Pattern Matching for switch (표준화)
- Improved Virtual Threads (Hit)
- Structured Concurrency (Incubator)