JDK 27 정식 출시, 9개 JEP 포함: G1 기본 GC, TLS 1.3 양자내성 하이브리드 키 교환, Compact Object Headers 기본화
- Mark Reinhold가 2026년 9월 15일 JDK 27 GA를 발표함. 8월 20일 두 번째 RC인 빌드 35 이후 P1 버그가 보고되지 않아 그대로 GA 빌드로 확정됨
- 이번 릴리스에 들어간 JEP 9개 중 G1을 모든 환경의 기본 GC로 지정(523), TLS 1.3 양자내성 하이브리드 키 교환(527), Compact Object Headers 기본 적용(534)이 런타임 동작을 바꾸는 항목임
- 프리뷰와 인큐베이터가 다수 포함됨. Lazy Constants 3차 프리뷰(531), Primitive Types in Patterns 5차 프리뷰(532), Structured Concurrency 7차 프리뷰(533), Vector API 12차 인큐베이터(537), PEM 인코딩 3차 프리뷰(538)
- Oracle의 GPL 라이선스 OpenJDK 빌드는 jdk.java.net/27에서 받을 수 있고 다른 벤더 빌드도 곧 나올 예정임. 그 외 사소한 개선 수백 건과 버그 수정 수천 건이 함께 들어감
Hacker News opinions
Vector API가 12번째 인큐베이터인데 몇 년째 GA를 못 봄. 나는 신경망 검색(RAG, 메모리) 쪽에서 벡터화랑 내적으로 유사도 계산할 때 쓰고 있음
Java 27엔 언어 변경이 0개고 TLS 라이브러리에 소소한 기능 하나 붙은 게 전부임. 나머지는 다 OpenJDK 런타임 내부라 GraalVM 쓰면 27은 아예 없는 버전이나 마찬가지
C# 하는 사람인데 오라클이 버전을 두 배 빠른 주기로 냄. 그것보다 프리뷰를 두 번씩 거의 안 한다는 게 신기함
그 두 배 주기가 좋은 건가? 언어 버전을 특정 런타임 릴리스에 묶어버린 결과라 언어 쓰는 사람 입장에선 의미가 갈림
C#은 플랫폼에 다 묶여 있어서 그냥 쓰면 되는데, Java는 커뮤니티 구현이 여러 개라 뭘 쓸지 비교하다가 시간 다 씀. 잘못 고르면 갈아타야 하고
6개월 주기는 의도한 선택임. 예전엔 몇 년씩 걸리면서 기능이 릴리스 기차를 놓치곤 했는데, 잘게 쪼개니까 JEP도 세분화되고 Valhalla 같은 프로젝트가 가능해짐
이걸 오라클 공으로 돌리면 곤란함. 최근 Java에서 나오는 좋은 건 다 커뮤니티랑 선 마이크로시스템즈 출신 사람들이 만든 거임
G1이 27부터 기본 GC가 됐음. 예전에 나온 농담들이 다 옛날 얘기인 이유
M4 같은 데다가 30GB 힙 올리는 짓만 안 하면 괜찮음. OpenJ9 런타임은 프리컴파일 비슷한 걸로 시작 속도를 잡아준다고 들었음
Java와 .NET 둘 다 기존 시스템에 제네릭을 얹었는데, Java는 타입 이레이저라 List가 그냥 List임. 메타프로그래밍 들어가면 오버로딩이 안 되는 게 답답함
커널 릴리스랑 비슷함. 서브프로젝트가 각자 포크에서 기능을 만들고 유지보수자가 정리해서 한 번에 업스트림으로 올리는 구조라, 최상위 메인테이너는 새 기능에 크게 관심이 없음
Valhalla는 내년 Java 28에 프리뷰로 들어감. 살아생전에 null 타입 안전성 쓰는 걸 보고 싶음
릴리스 페이지가 짧고 담백한 건 오픈소스 공지라 그런 거고, 자세한 자료는 따로 있으니 나쁘지 않음