Back_End/Java

JDK 17 (Java 17) 정리 - 새 기능과 변경 사항

10Biliion 2025. 5. 21. 09:13

Java 1720219월에 출시된 LTS(Long-Term Support) 버전으로, 11 이후 4만의 장기 지원 버전입니다.
JDK 17최신 Java 기능들이 안정화되어 현업에서 도입하기에 가장 적합한 버전입니다.

 

JDK 17

항목 내용
출시일 2021914
LTS 여부 LTS (8, 11 이후 17)
주요 기능 Sealed Classes, Pattern Matching (instanceof), New macOS Rendering, Deprecations
이전 버전과 비교 JDK 11~16에서 실험된 기능들이 안정화된 버전
 

 

주요 기능 상세 정리

1. Sealed Classes (봉인 클래스)

하위 클래스의 상속을 제한하는 기능

public sealed class Shape permits Circle, Rectangle {}

public final class Circle extends Shape {}
public final class Rectangle extends Shape {}

장점

  • 클래스 계층 구조를 명확하게 설계있음
  • IDE, 컴파일러가 정확한 분석 가능 → 패턴 매칭과 함께 쓰면 시너지 효과

관련 키워드

  • sealed: 상속을 허용할 하위 클래스를 명시
  • permits: 하위 클래스를 명시
  • non-sealed: 하위 클래스에서 다시 제한 해제 가능

 

2. Pattern Matching for instanceof

instanceof 연산자와 형변환을 간결하게 작성있게

if (obj instanceof String s) {
    System.out.println(s.toUpperCase()); // 형변환 없이 바로 사용 가능
}

장점

  • 타입 검사와 동시에 변수 바인딩 → 불필요한 캐스팅 제거
  • 코드 가독성 증가

 

3. New macOS Rendering Pipeline

macOS에서 Java UI 성능 개선

주요 특징

  • macOS에서 Metal API사용하는 렌더링 파이프라인 도입 (기존 OpenGL → Metal)
  • System.setProperty("sun.java2d.metal", "true")활성화

macOS에서 JavaFX, Swing UI 렌더링 성능개선됩니다.

 

4. Strong Encapsulation of JDK Internals

JDK 내부 API (특히 sun.*, com.sun.*) 접근을 기본적으로 완전히 차단

예:

기존에는 --illegal-access=permit 옵션으로 내부 API 접근 가능
JDK 17부터는 기본적으로 불가능

레거시 시스템에서 JDK 17마이그레이션 주요 이슈 포인트입니다.

 

5. New macOS/AArch64 Port

Apple Silicon (M1/M2) 환경에 공식 대응

  • AArch64 기반 macOS (arm64)에서 최적화된 성능
  • JavamacOS ARM 아키텍처에서 사용할 필수

 

제거된 기능들 (Deprecated & Removed)

항목 설명
Applets 완전 제거 (이미 비권장 상태)
Security Manager 비권장(deprecated) 상태
RMI Activation System 제거됨
Experimental AOT / JIT Compiler 제거됨 (JEP 410)
Biased Locking 제거됨 (JEP 374)
 

 

마이그레이션 시 주의할 점

  1. 내부 API 접근 금지Reflection 사용하는 코드 점검 필수
  2. Security Manager 제거샌드박싱 필요 대체 방안 검토
  3. Applets 제거완전히 지원 중단

 

실무에서 JDK 17을 도입하는 이유

항목 이유
안정성 장기 지원 (LTS) 보장
생산성 패턴 매칭, sealed class 등으로 간결한 코드
성능 macOS ARM 최적화, 내부 개선
미래지향 향후 Java 21, 25 등으로의 전환도 수월해짐

 

 

 
구분 내용
주요 추가 Sealed Class, Pattern Matching, Metal 렌더링
플랫폼 대응 macOS ARM 공식 지원
변경 사항 내부 API 접근 금지, 레거시 기능 제거
실무 기존 코드 마이그레이션 반드시 내부 API, 보안 정책 점검 필요
 

🔗 참고 자료