자바 개발 키트(JDK)의 차기 버전인 JDK 28에 발할라(Valhalla) 프로젝트의 핵심 기능인 JEP 401: 값 클래스 및 객체(Value Classes and Objects)가 통합될 예정입니다. 이는 지난 10년간 자바 커뮤니티의 뜨거운 관심과 기대를 받아온 대규모 변화로, 오라클(Oracle) 엔지니어 로이스 폴탄(Lois Foltan)이 공식 확인했습니다. 이번 통합은 자바가 객체를 처리하는 방식에 근본적인 변화를 가져와, 성능과 메모리 효율성을 크게 개선할 잠재력을 가지고 있습니다.
발할라 프로젝트의 핵심 목표는 '클래스처럼 코딩하고, 정수(int)처럼 작동하게 하는 것'입니다. 기존 자바에서 `int`, `long` 등 8가지 기본형(primitive type)을 제외한 모든 것은 참조형(reference type) 객체로, 힙(heap) 메모리에 할당되고 포인터(pointer)를 통해 접근해야 했습니다. 이는 객체마다 헤더(header)가 붙고 가비지 컬렉션(garbage collection) 대상이 되며, 메모리 곳곳에 흩어져 있어 데이터 밀도(data density)가 낮아지는 '푹신한(fluffy)' 메모리 레이아웃을 초래했습니다. 이러한 구조는 현대 CPU 캐시(cache) 효율성을 저해하여 성능 병목 현상을 일으켰습니다. 값 클래스는 이러한 참조형 객체의 비효율성을 개선하여, 마치 기본형처럼 데이터가 메모리에 연속적으로 배치되는 '밀집된(dense)' 레이아웃을 가능하게 합니다.
이번 발할라 프로젝트의 통합은 자바 애플리케이션의 성능 최적화에 새로운 지평을 열 것으로 기대됩니다. 특히 데이터 처리량이 많거나 메모리 사용에 민감한 분야(예: 게임 엔진, 그래픽 라이브러리, 고성능 컴퓨팅)에서 큰 이점을 제공할 것입니다. 개발자들은 이제 성능 저하 없이도 객체 지향적인 코드를 작성할 수 있게 되어, 코드의 가독성과 안전성을 유지하면서도 최적화된 성능을 누릴 수 있게 됩니다. 이는 자바의 오랜 약점으로 지적되던 부분을 해소하고, 더 넓은 영역에서 자바의 활용도를 높이는 중요한 전환점이 될 것입니다.
