JDK 27 신기능 총정리 — G1 기본화부터 조용히 사라진 옵션까지
2026년 9월 15일 GA를 앞둔 JDK 27의 9개 JEP와, 코드를 고치지 않아도 동작이 바뀌는 기본값 변경 및 제거된 JVM 옵션을 마이그레이션 관점에서 정리했다.
배움의 즐거움, 나눔의 가치를 실천하는 DevLog
2026년 9월 15일 GA를 앞둔 JDK 27의 9개 JEP와, 코드를 고치지 않아도 동작이 바뀌는 기본값 변경 및 제거된 JVM 옵션을 마이그레이션 관점에서 정리했다.
20년 넘게 자바에는 표준 JSON 파서가 없었다. { } 하나 읽으려고 Jackson이나 Gson을 pom.xml에 넣어야 했고, 설정 파일 한 줄 파싱하는 데도 외부 라이브러리가 따라붙었다. JEP 540 “Simple JSON API”는 이 오래된 공백을 메운다. JDK 28을 겨냥해 jdk.incubator.json 모듈로 들어오는 이 API는 파싱·탐색·생성을 표준 라이브러리만으로 처리한다. 다만 데이터 바인딩과 스트리밍은 일부러 뺐다. 이 글에서는 실제 … 더 읽기
10년을 끌어온 프로젝트 발할라가 JDK 28에 첫 프리뷰로 착륙했다. 정체성 없는 value class가 무엇이고, 왜 value object에서는 ==가 참조가 아니라 상태를 비교하게 되는지, 그리고 이게 성능과 실무에 무엇을 바꾸는지 코드로 정리한다.
Java Pattern Matching으로 instanceof 캐스팅과 if-else 체인을 걷어내는 방법을 switch 패턴, record 분해, sealed exhaustiveness, 흔한 함정까지 정리한다.
Java에서 IPv4 주소를 IPv6로 변환하는 4가지 방식(IPv4-Mapped, IPv4-Compatible, NAT64, 6to4)을 코드 예제와 함께 정리한다. 각 방식의 RFC 근거, 실무 선택 기준, 비교 테이블까지 담았다.
Java 26 HTTP/3 Client API는 JEP 517로 도입된 QUIC 기반 표준 HTTP 클라이언트이며, 단 한 줄의 version 설정으로 기존 HTTP/2 코드에서 바로 전환할 수 있다.
JDK 24부터 도입된 Java AOT Cache는 클래스 로딩과 링킹을 사전에 수행해 JVM 시작 시간을 최대 59%까지 단축한다. JEP 483부터 516까지 진화 과정과 실전 적용법을 정리한다.
JDK 25 LTS 기반 Virtual Threads의 내부 동작, Spring Boot 적용법, Pinning 해결, ScopedValue 전환까지 프로덕션 투입에 필요한 실전 패턴을 정리한다.
Mock 대신 진짜 DB와 메시지 브로커로 테스트하는 Testcontainers Spring Boot 통합 테스트 실전 가이드
2026년 3월 17일 GA된 Java 26의 10개 JEP를 분석한다. HTTP/3 지원, G1 GC 처리량 개선, AOT 캐싱 확장, Structured Concurrency 6차 프리뷰 등 핵심 변경사항을 코드와 함께 정리한다.