Java/Version

Java 17

창욱씨 2022. 8. 23. 23:58
반응형

🔑 주요 신규 기능

1. Sealed Classes (JEP 409)

클래스 상속을 명시적으로 제한할 수 있습니다.

public sealed class Shape permits Circle, Rectangle, Triangle {
    // ...
}

public final class Circle extends Shape { }
public final class Rectangle extends Shape { }
public non-sealed class Triangle extends Shape { }

2. Pattern Matching for instanceof (JEP 394)

instanceof 검사 후 별도 캐스팅 없이 바로 사용 가능합니다.

// Before
if (obj instanceof String) {
    String s = (String) obj;
    System.out.println(s.length());
}

// Java 17
if (obj instanceof String s) {
    System.out.println(s.length());
}

3. Records (JEP 395)

불변 데이터 클래스를 간결하게 정의합니다.

public record Point(int x, int y) { }
// equals(), hashCode(), toString(), getter 자동 생성

4. Switch Expressions (JEP 361)

switch를 표현식으로 사용할 수 있고, 화살표 구문을 지원합니다.

String result = switch (day) {
    case MONDAY, FRIDAY -> "Working";
    case SATURDAY, SUNDAY -> "Weekend";
    default -> "Midweek";
};

5. Text Blocks (JEP 378)

여러 줄 문자열을 가독성 좋게 작성합니다.

String json = """
        {
            "name": "Java",
            "version": 17
        }
        """;

6. 기타 주요 변경사항

기능 JEP 설명
Strong Encapsulation of JDK Internals 403 sun.misc.Unsafe 등 내부 API 접근 차단
Foreign Function & Memory API (Incubator) 412 JNI 대체를 위한 네이티브 코드 호출 API
Vector API (Second Incubator) 414 SIMD 연산을 활용한 고성능 벡터 계산
Context-Specific Deserialization Filters 415 역직렬화 보안 강화
Deprecate the Applet API 398 Applet API 제거 예정
Remove RMI Activation 407 RMI Activation 메커니즘 제거
macOS/AArch64 Port 391 Apple Silicon (M1) 네이티브 지원
반응형