Skip to main content

Valhalla·Python·Withers·Lombok, JavaOne '25에서 건축가에게 직접 묻다

Published 3 min readMarkdown

# 📌 서론 – “왜 이런 질문을 해야 할까?”

2025년 JavaOne 컨퍼런스가 열리면서, 개발자 커뮤니티는 새로운 언어 기능과 툴에 대한 궁금증으로 떠들썩합니다.

특히 Project Valhalla, 파이썬과의 연동, Withers 메서드, 그리고 Lombok 같은 코드 자동화 도구는 “우리 프로젝트에 실제로 어떤 도움이 될까?”라는 질문을 불러일으키죠.

이 글에서는 JavaOne '25에서 발표된 주요 주제들을 초보자도 이해하기 쉽도록 정리하고, 실제 현업에 적용할 수 있는 팁을 제공하겠습니다.

핵심 키워드: JavaOne 2025, Project Valhalla, Lombok


# 🧩 본문

# 1️⃣ Project Valhalla – 값 타입(Value Types)의 미래

Valhalla는 자바 플랫폼에 값 타입을 도입해 메모리 효율과 성능을 크게 향상시키려는 프로젝트입니다.

| 특징 | 설명 |

|------|------|

| 값 타입 | 객체와 달리 힙이 아닌 스택에 저장돼 가비지 컬렉션 부담이 적음 |

| 인라인화 | 기본형처럼 메서드 호출 없이 바로 사용 가능 |

| 호환성 | 기존 클래스와 인터페이스와 호환되도록 설계 |

초보자 팁: 현재는 preview 단계이므로, --enable-preview 옵션과 JDK 21 이상을 사용해 실험해보세요. 작은 프로젝트에 적용해 메모리 사용량 변화를 직접 확인하는 것이 좋은 연습이 됩니다.


# 2️⃣ Python과의 연동 – Jython vs GraalVM

Java와 Python을 동시에 쓰고 싶다면 두 가지 접근법이 있습니다.

  1. Jython

    • 순수 Java 구현 Python 인터프리터

    • 최신 Python 3.x 지원이 아직 미흡

  2. GraalVM

    • 다중 언어 런타임으로 Java와 Python을 같은 VM에서 실행

    • Polyglot API를 통해 두 언어 간 객체를 자유롭게 주고받음

GraalVM이 현재 가장 활발히 사용되고 있으며, 특히 JavaOne '25에서 발표된 새로운 Python‑to‑Java interop 기능은 기존 JNI보다 훨씬 간편합니다.

초보자 팁: GraalVM Community Edition을 설치하고 --polyglot 플래그로 실행하면, python.exec('print('Hello from Python')')와 같은 간단한 코드로 실험할 수 있습니다.


# 3️⃣ Withers 메서드 – 불변 객체(Immutable) 만들기의 핵심

Withers는 객체의 특정 필드만 변경하고 싶을 때, 새로운 인스턴스를 반환하는 메서드 패턴을 말합니다.

java

public User withName(String name) {

    return new User(name, this.age);

}
  • 불변성 보장 → 멀티스레드 환경에서도 안전

  • 가독성 향상 → 체이닝 방식으로 직관적인 코드 작성

Java 21부터는 record와 결합해 with 메서드 자동 생성이 가능해졌습니다.

초보자 팁: 기존 POJO에 with 메서드를 직접 구현하기 번거롭다면, Lombok의 @With 어노테이션을 활용해 자동 생성해 보세요.


# 4️⃣ Lombok – 보일러플레이트 코드를 한 방에 없애다

Lombok은 반복적인 getter/setter, 생성자, toString 등을 어노테이션 하나로 자동 생성해 주는 라이브러리입니다.

| 주요 어노테이션 | 역할 |

|----------------|------|

| @Getter/@Setter | 자동 getter/setter 생성 |

| @AllArgsConstructor | 모든 필드 포함 생성자 |

| @Builder | 빌더 패턴 구현 |

| @With | Withers 메서드 자동 생성 |

JavaOne '25에서는 Lombok이 Java 21 record와도 호환된다는 발표가 있었습니다. 즉, record 선언에 @Builder를 붙여 빌더 패턴을 그대로 사용할 수 있습니다.

초보자 팁: Maven/Gradle에 lombok 의존성을 추가하고 IDE 플러그인을 설치하면, 코드 작성 시 실시간으로 자동 완성 기능을 체험할 수 있습니다.


# 5️⃣ 실전 적용 사례 – 작은 프로젝트에 모두 적용해 보기

| 단계 | 적용 내용 |

|------|-----------|

| 1️⃣ 프로젝트 초기 | Project Valhalla preview 기능 활성화 (JDK 21) |

| 2️⃣ 데이터 모델 | record + @With 로 불변 객체 설계 |

| 3️⃣ 외부 연동 | GraalVM으로 Python 스크립트 호출 |

| 4️⃣ 코드 간소화 | Lombok @Builder와 @With 활용 |

| 5️⃣ 테스트 | JUnit5와 @ValueSource로 값 타입 테스트 |

위 흐름을 따라가면, 성능·가독성·유연성을 동시에 잡을 수 있습니다.


# 🎯 결론 – 지금 바로 시작해 보세요!

  • JavaOne '25에서 공개된 최신 기능들을 직접 체험해 보면, 기존 프로젝트에서도 즉시 적용 가능한 아이디어를 얻을 수 있습니다.

  • Project Valhalla와 record 기반 불변 객체 설계는 메모리 사용량을 크게 줄여줍니다.

  • GraalVM을 활용하면 Python 스크립트를 Java 애플리케이션에 매끄럽게 녹여낼 수 있습니다.

  • Lombok과 Withers 메서드로 코드를 깔끔하게 정리하면 유지보수 비용이 감소합니다.

행동 유도: 오늘 당장 pom.xml에 Lombok을 추가하고, JDK 21 preview 옵션으로 간단한 값 타입 예제를 실행해 보세요. 그리고 GraalVM을 설치해 Python 연동 실험을 진행한다면, 여러분의 개발 역량은 한 단계 업그레이드됩니다!


이 글이 도움이 되었다면, 댓글과 공유를 통해 더 많은 개발자와 정보를 나눠 주세요. 🚀

No comments yet. Be the first to comment.

More from this blog