[Java] Java 버전별 스펙
Java 버전별 스펙
🚀 1.8
- Stream API
- 람다 표현식과 Functional Interface
- 인터페이스 내 메소드에 default, static 키워드 추가 지원
- 메서드 레퍼런스
- Optional
- Time API 신규 추가 : LocalDateTime 등
🚀 9
- Module 구조 추가
- HttpClient : java.net.http 패키지
- 프로세스 관련 API : java.lang.ProcessHandle 클래스
- interface에서 private 메서드 사용 가능
🚀 10
- 지역 변수에서
var
사용 : 초기화 필수. 컴파일 타임 때 유형이 추론되어 컴파일 됨. - 불변 컬렉션
- copyOf()
- toUnmodifiable*()
🚀 11
- String 클래스 메서드 추가
- isBlank , lines , strip , stripLeading , stripTrailing 및 repeat.
- Lambda에 대한 지역 변수 구문
List<String> sampleList = Arrays.asList("Java", "Kotlin");
String resultString = sampleList.stream()
.map((@Nonnull var x) -> x.toUpperCase())
.collect(Collectors.joining(", "));
assertThat(resultString).isEqualTo("JAVA, KOTLIN");
🚀 12
- String 클래스 메서드 추가
- indent()
- transform()
🚀 13
🚀 14
- switch 문
boolean isTodayHoliday = switch (day) {
case "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY" -> false;
case "SATURDAY", "SUNDAY" -> true;
default -> throw new IllegalArgumentException("What's a " + day);
};
🚀 15
- text block
- local enum & interface
- record
- 불변 객체를 위해 속성에 final을 추가했었음
// record 이전
public class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
// record 적용
public record Person(String name, int age) {
}
- GC
- ZGC , Shenandoah GC가 정식으로 사용 가능해짐