AI 요약
오라클의 엔지니어 로이스 폴탄(Lois Foltan)이 10년의 개발 기간을 거친 '프로젝트 발할라(Project Valhalla)'의 핵심인 'JEP 401: 값 클래스 및 객체(Value Classes and Objects)'가 마침내 JDK 28을 목표로 메인 OpenJDK 리포지토리에 통합된다고 확인했습니다. 이번 통합은 1,816개 파일에 걸쳐 197,000 라인 이상의 코드가 추가되는 대규모 작업으로, 다른 커미터들에게 대형 커밋 보류를 요청할 만큼 기념비적인 변화입니다. 프로젝트 발할라는 "클래스처럼 코딩하고, int처럼 동작한다"라는 슬로건 아래, 자바의 고질적인 한계였던 객체의 메모리 간접 참조(Pointer Indirection)와 힙 오버헤드 문제를 해결하고자 시작되었습니다. 자바의 기본형(Primitive) 타입처럼 효율적이면서도 일반 클래스처럼 메서드와 생성자 검증을 사용할 수 있도록 지원하는 것이 핵심 목표입니다. 다만, 자바 아키텍트 브라이언 게츠(Brian Goetz)가 지적했듯 이번 JDK 28 탑재는 기본적으로 비활성화된 프리뷰(Preview) 버전이며, 발할라의 완전한 실현을 위한 '첫 단계'에 해당합니다.
핵심 인사이트
- 공식 통합 확정 (2026년 6월 15일): 오라클 엔지니어 로이스 폴탄이 JEP 401(Value Classes and Objects)의 메인 리포지토리 통합 및 JDK 28 타겟팅 사실을 공식 확인했습니다.
- 초대형 규모의 코드 변경: 이번 통합 풀 리퀘스트(PR)는 1,816개 파일에 걸쳐 약 19만 7,000 라인 이상의 코드가 추가되는 방대한 스케일입니다.
- 첫 단계로서의 프리뷰 릴리즈: 자바 언어 아키텍트 브라이언 게츠는 이번 릴리즈가 발할라 프로젝트의 완성형이 아닌 '첫 번째 부분'일 뿐이며, 기본적으로 비활성화된 프리뷰 기능으로 제공된다고 강조했습니다.
- 10년의 개발 여정: 프로젝트 발할라는 자바의 메모리 성능 한계를 극복하기 위해 2014년부터 논의 및 개발을 시작하여 약 10년 만에 메인라인 소스에 합류하게 되었습니다.
주요 디테일
- "Codes like a class, works like an int": 일반 클래스의 가독성과 안전성(생성자 검증, 메서드 정의 등)을 유지하면서도, JVM이 이를 8가지 기본형(Primitive) 데이터 타입처럼 저비용·고성능으로 처리하도록 지원합니다.
- 메모리 간접 참조(Pointer Indirection) 해결: 기존 자바 객체는 힙(Heap) 영역에 생성되어 포인터를 통한 간접 참조와 메타데이터(오브젝트 헤더) 오버헤드를 유발했으나, 값 클래스(Value Classes) 도입으로 이 비용을 극적으로 낮춥니다.
- 개발 커뮤니티의 오랜 회의론 극복: "실제 릴리즈되기 전에 개발자가 먼저 발할라(북유럽 신화의 사후세계)에 갈 것"이라는 업계의 오랜 농담을 깨고 실질적인 결과물을 내놓았습니다.
- 동료 개발자 협조 요청: 코드 변경량이 너무 거대하여, 통합 기간 동안 다른 OpenJDK 커미터들은 대규모 소스코드 커밋을 자제해 달라는 권고를 받았습니다.
- 프로젝트 릴리펏(Project Lilliput)과의 연계: 객체 헤더 크기를 줄여 메모리 효율성을 극대화하려는 '프로젝트 릴리펏'과 궤를 같이하며 JVM 성능의 비약적인 상승을 도모합니다.
향후 전망
- 대규모 시스템 성능 혁신: JDK 28의 프리뷰 도입을 시작으로 값 클래스가 안착되면, 대규모 데이터를 처리하는 엔터프라이즈 자바 애플리케이션의 메모리 사용량과 가비지 컬렉션(GC) 부하가 획기적으로 줄어들 것입니다.
- 생태계 전반의 마이그레이션 촉진: 초기 프리뷰 단계에서의 피드백 수집 및 최적화 과정을 거쳐 향후 정식 스펙으로 탑재될 때까지, 스프링(Spring)이나 하이버네이트(Hibernate) 등 주요 자바 프레임워크들의 발 빠른 호환성 업데이트가 이어질 것으로 예상됩니다.
