Java AOT 컴파일
August 28, 2025
Java 버전별 AOT(Ahead-of-Time) 컴파일 지원 현황
Java의 AOT 컴파일(Ahead-of-Time Compilation)은 자바 바이트코드를 네이티브 코드로 미리 컴파일하여 애플리케이션의 시작 속도를 높이고, 특정 환경에서의 성능을 개선하기 위한 기능입니다. Java 버전별로 AOT 지원 현황과 변화는 다음과 같습니다.
Java 9 ~ Java 16: 실험적 AOT 컴파일러(jaotc) 도입 및 제거
- Java 9
- JEP 295: Ahead-of-Time Compilation
jaotc
라는 실험적 AOT 컴파일러가 도입됨.- Graal 컴파일러 기반으로, 일부 플랫폼(주로 Linux/x64)에서만 지원.
- 명령어 예시:
jaotc --output libHelloWorld.so HelloWorld.class
- Java 10 ~ Java 16
- AOT 컴파일러가 계속 실험적 기능으로 유지됨.
- 실제로는 제한적 환경에서만 사용되고, 널리 활용되지 않음.
- Java 16
- JEP 410: Remove the Experimental AOT and JIT Compiler
- 실험적 AOT 및 JIT 컴파일러(Graal 기반) 완전 제거.
jaotc
명령어 및 관련 기능 삭제.
(read more)
- Java 9
JDK 25
August 28, 2025
2025년 9월 16일, JDK 25 출시를 앞두고 있다. 2023년 9월 JDK 21 출시 이후 2년 만의 LTS 버전이다.
https://openjdk.org/projects/jdk/25
- 470: PEM Encodings of Cryptographic Objects (Preview) - PEM 형식으로 암호화 객체를 인코딩/디코딩할 수 있도록 지원하는 기능 (프리뷰)
- 502: Stable Values (Preview) - 값의 불변성과 스레드 안전성을 보장하는 새로운 값 전달 메커니즘 도입 (프리뷰)
- 503: Remove the 32-bit x86 Port - 32비트 x86 아키텍처 지원 제거
- 505: Structured Concurrency (Fifth Preview) - 구조적 동시성 API로 여러 작업을 구조적으로 관리하고 오류 처리를 단순화 (5번째 프리뷰)
(read more)
Kafka 파티셔너
August 07, 2025
사용자의 ID를 키값으로 지정해 카프카 메시지를 발행하고 있었는데, 같은 사용자에 대한 메시지가 서로 다른 파티션에 할당되는 것을 발견했다. 내 짧은 배경 지식으로는 메시지의 키값의 해시 기반으로 파티션을 정하기 때문에, 키값이 동일한 두 메시지는 반드시 같은 파티션에 할당되어야 했다. 원인을 찾는 중 카프카에서 사용하는 몇가지 파티셔너의 동작에 대해 알게 되었다.
카프카의 파티셔너
- 기본 파티셔너
- 라운드-로빈 파티셔너
- 유니폼 스티키 파티셔너
- 커스텀 파티셔너
(read more)