Hacker News

Java 27 Released

Java 27 정식 출시 — G1이 모든 환경의 기본 GC로

OpenJDK가 Java 27의 레퍼런스 구현인 JDK 27을 GA(Generally Available)로 발표했습니다. G1 가비지 컬렉터의 전 환경 기본화, Compact Object Headers 기본 활성화, TLS 1.3용 포스트퀀텀 하이브리드 키 교환 등 9개의 JEP가 포함된 릴리스입니다.

본문

OpenJDK의 수석 아키텍트 Mark Reinhold가 announce 메일링리스트를 통해 Java 27의 레퍼런스 구현인 JDK 27이 GA(Generally Available) 단계에 도달했다고 발표했습니다. 지난 8월 20일에 두 번째 릴리스 후보(Release Candidate)로 내놓은 빌드 35 이후 P1 등급 버그가 보고되지 않았기 때문에, 해당 빌드가 그대로 GA 빌드로 승격되어 프로덕션 환경에서 사용할 수 있게 됐습니다. Oracle이 제공하는 GPL 라이선스 OpenJDK 빌드는 jdk.java.net/27에서 내려받을 수 있으며, 다른 벤더들의 빌드도 곧 이어서 제공될 예정입니다. 이번 릴리스에는 총 9개의 JEP(JDK Enhancement Proposal)와 함께 통상적인 수준의 수백 개 소규모 개선 사항, 수천 건의 버그 수정이 포함됐습니다.

런타임과 성능 — 가장 눈에 띄는 변화는 JEP 523, 'Make G1 the Default Garbage Collector in All Environments'입니다. G1 가비지 컬렉터가 모든 환경에서 기본 GC로 지정되면서, 예외적으로 다른 컬렉터가 쓰이던 환경까지 G1으로 통일됩니다. JEP 534 'Compact Object Headers by Default'도 성능 측면에서 중요합니다. 이전까지 옵션으로 제공되던 압축 객체 헤더가 기본으로 켜지면서 객체 헤더가 차지하는 메모리가 줄어들고, 힙 사용량과 캐시 효율 개선으로 이어집니다.

언어와 동시성 프리뷰 — 언어 기능은 여전히 프리뷰 단계가 중심입니다. JEP 531 'Lazy Constants'는 세 번째 프리뷰로, 불변 상수의 초기화를 사용 시점까지 지연시키는 기능을 다듬고 있습니다. JEP 532 'Primitive Types in Patterns, instanceof, and switch'는 다섯 번째 프리뷰로, 패턴 매칭과 switch에서 primitive 타입을 직접 다룰 수 있게 합니다. JEP 533 'Structured Concurrency'는 일곱 번째 프리뷰로, 동시성 작업을 구조화된 단위로 관리하는 API가 장기간 프리뷰를 거치며 안정성을 확인하고 있습니다.

보안과 관측성 — JEP 527은 TLS 1.3에 포스트퀀텀 하이브리드 키 교환을 도입해 양자 컴퓨팅 시대의 암호화 위협에 대비합니다. JEP 536 'JFR In-Process Data Redaction'은 JDK Flight Recorder 데이터를 프로세스 내부에서 민감 정보를 가린 채 기록할 수 있게 해 운영 환경 진단 시 보안성을 높입니다. JEP 538은 암호 객체의 PEM 인코딩 지원으로 세 번째 프리뷰에 들어갔고, JEP 537 Vector API는 열두 번째 인큐베이터로 여전히 정식 편입을 기다리고 있습니다.

Hacker News 반응

  • @svcrunch — Vector API를 수년째 써오고 있지만 아직도 정식 GA를 기다리는 중입니다. 콘텐츠 벡터화와 내적 기반 유사도 매칭에 의존하는 신경 정보 검색(RAG, 메모리) 분야에서 유용하다고 평가합니다.
  • @nsxwolf — G1이 27부터 기본 가비지 컬렉터가 됐다는 점을 짚어냅니다.
  • @nairboon — Java의 긴 릴리스 역사를 두고 '여전히 웃기다'며, 오래 살아남는 농담이 드물다고 덧붙입니다.
  • @Boereck — 노크 농담에 빗대어 '90년대가 자기 농담을 돌려달라고 한다'고 냉소적으로 응수합니다.
  • @HelloUsername — 노크와 대답 사이의 긴 공백이 30년 걸렸다며, Java의 느린 기능 정식화 속도를 풍자합니다.

원문: OpenJDK / 번역·요약: Trawling