Weather the Storm: How Value Classes Will Enhance Java Performance by Remi Forax, Clément de Tast
- Java의
value 키워드를 사용하면 객체 생성 비용 없이 원시 타입과 유사한 성능을 달성하며, 이는 VM이 객체 할당 대신 필드 값을 직접 사용하도록 최적화하기 때문입니다. 🚀
new 연산자의 비용이 사실상 없어지면서, 개발자들은 성능 저하 걱정 없이 객체 지향적 추상화를 적극적으로 활용하여 코드를 더 명확하게 작성할 수 있게 됩니다. 💡
- JDK 25에 도입된 유연한 생성자 바디는
super() 호출 전에 무결성 검사 및 필드 초기화를 가능하게 하여, 불필요한 비용 발생을 막고 객체 초기화 상태를 명확히 파악할 수 있도록 돕습니다. 🛠️
- 10년 이상 진행된 Project Valhalla는 객체 지향 프로그래밍의 추상화와 원시 타입의 성능을 결합하여, Java 언어에서 원시 타입과 객체 사이의 간극을 줄이는 것을 목표로 합니다. 🌉
value 클래스는 필드, 메서드, 캡슐화를 가지지만, 식별자(identity)가 없어 불변하며, 스택에 평탄화되어 저장되고, == 연산 시 필드 값을 비교하는 등 클래스와 원시 타입의 장점을 결합합니다. 🧬
value 클래스에서 ==는 참조 비교 대신 필드 값을 비교하며, System.identityHashCode() 또한 객체 식별자 대신 필드 값을 기반으로 해시 코드를 계산합니다. ⚖️
- 스택은 메서드 실행 및 지역 변수 저장을 담당하고, 힙은 객체 할당 및 필드 저장을 담당하며,
value 클래스는 스택에서 포인터 없이 직접 값을 사용해 효율성을 높입니다. 💾