[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가 정식으로 사용 가능해짐

🚀 16

참조