Back_End/Java
JDK 17 (Java 17) 정리 - 새 기능과 변경 사항
10Biliion
2025. 5. 21. 09:13

Java 17은 2021년 9월에 출시된 LTS(Long-Term Support) 버전으로, 11 이후 4년 만의 장기 지원 버전입니다.
JDK 17은 최신 Java 기능들이 안정화되어 현업에서 도입하기에 가장 적합한 버전입니다.
JDK 17
항목 | 내용 |
출시일 | 2021년 9월 14일 |
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)에서 최적화된 성능
- Java를 macOS ARM 아키텍처에서 사용할 때 필수
제거된 기능들 (Deprecated & Removed)
항목 | 설명 |
Applets | 완전 제거 (이미 비권장 상태) |
Security Manager | 비권장(deprecated) 상태 |
RMI Activation System | 제거됨 |
Experimental AOT / JIT Compiler | 제거됨 (JEP 410) |
Biased Locking | 제거됨 (JEP 374) |
마이그레이션 시 주의할 점
- 내부 API 접근 금지 → Reflection 사용하는 구 코드 점검 필수
- Security Manager 제거 → 샌드박싱 필요 시 대체 방안 검토
- Applets 제거 → 완전히 지원 중단
실무에서 JDK 17을 도입하는 이유
항목 | 이유 |
안정성 | 장기 지원 (LTS) 보장 |
생산성 | 패턴 매칭, sealed class 등으로 더 간결한 코드 |
성능 | macOS ARM 최적화, 내부 개선 |
미래지향 | 향후 Java 21, 25 등으로의 전환도 수월해짐 |

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