JDK 24는 성능 최적화, 언어 기능 개선, AI 및 시스템 프로그래밍 지원 강화 등 다양한 기능을 통해
Java 개발 환경을 더욱 향상시켰습니다.
특히, AI 애플리케이션 개발에 필요한 기능들이 추가되어,
최신 기술 트렌드에 부합하는 발전을 이루었습니다.

주요 기능 및 개선 사항
1. JEP 483: Ahead-of-Time Class Loading & Linking
Java 애플리케이션의 시작 시간을 단축시키기 위해, 클래스 로딩과 링크 과정을 Ahead-of-Time(AOT) 방식으로 처리하는 기능입니다. 이를 통해 JVM 시작 시 클래스가 즉시 로드되고 링크되어 초기화 시간이 단축됩니다.
// 클래스를 AOT 컴파일하여 실행 속도 향상
// JVM 옵션을 통해 AOT 컴파일을 활성화
// 예: java -XX:AOTCompile=classes -cp . MyApp
public class MyApp {
public static void main(String[] args) {
System.out.println("Hello from AOT compiled Java");
}
}
이렇게 클래스를 AOT 컴파일한 후, 애플리케이션을 실행하면 더 빠른 시작 시간을 경험할 수 있습니다.(실제로는 javac 및 java 명령어에서 -XX:AOTCompile 옵션을 설정해줘야함.)
2. JEP 485: Stream Gatherers
Stream API에 새로운 수집기(Collector)를 추가하여, 스트림의 요소를 더 효율적으로 수집할 수 있게 되었습니다. 이는 특히 대용량 데이터 처리 시 성능 향상에 기여합니다.
병렬 스트림이 최적화 되어 큰 데이터셋에 대해 더 효율적으로 처리할 수 있게 되었고 Stream 수집 시에 발생할 수 있는 불필요한 메모리 할당을 줄여 성능이 개선되었습니다.
3. JEP 491: Synchronize Virtual Threads without Pinning
가상 스레드의 동기화를 개선하여, 스레드가 특정 CPU 코어에 고정되지 않고 자유롭게 이동할 수 있도록 하여, 멀티코어 시스템에서의 성능을 최적화합니다.
public class VirtualThreadExample {
public static void main(String[] args) {
// 가상 스레드를 생성
Runnable task = () -> {
System.out.println("Running in virtual thread: " + Thread.currentThread().getName());
};
Thread virtualThread = Thread.ofVirtual().start(task);
virtualThread.join(); // 메인 스레드가 종료될 때까지 기다림
}
}
4. JEP 490: ZGC: Remove the Non-Generational Mode
ZGC(Garbage Collector)의 비세대 모드를 제거하여, 가비지 컬렉션의 효율성을 높이고, 메모리 관리 성능을 향상시켰습니다.
// ZGC를 활성화하여 메모리 성능 최적화
public class ZGCExample {
public static void main(String[] args) {
// JVM 옵션을 통해 ZGC를 활성화
// 예: java -XX:+UseZGC -Xmx4g -Xms4g ZGCExample
System.out.println("ZGC Garbage Collector Test");
}
}
5. JEP 486: Permanently Disable the Security Manager
보안 관리자의 사용을 영구적으로 비활성화하여, 보안 정책을 대체할 수 있는 새로운 메커니즘을 도입하였습니다. 이는 보안 관리자의 복잡성을 줄이고, 더 나은 보안 모델을 제공합니다.
6. JEP 494: Module Import Declarations (Second Preview)
모듈 시스템에 import 선언 기능을 추가하여, 모듈 간 의존성을 명시적으로 관리할 수 있게 되었습니다. 이는 모듈화된 애플리케이션의 유지보수성을 향상시킵니다.
// 모듈 시스템에서 import 선언을 사용하여 모듈 의존성 명시
module mymodule {
requires java.base;
exports com.example;
// 새로운 import 선언 기능
import com.othermodule; // 다른 모듈에서 클래스 가져오기
}
7. JEP 495: Simple Source Files and Instance Main Methods (Fourth Preview)
Java 소스 파일의 구조를 단순화하고, 인스턴스 메인 메서드를 지원하여, 스크립트 기반 개발 환경에서의 Java 사용을 용이하게 만들었습니다.
// 인스턴스 메인 메서드를 사용하는 예시
public class InstanceMainExample {
public void main(String[] args) {
System.out.println("Running instance main method in JDK 24!");
}
public static void main(String[] args) {
// 클래스의 main 메서드에서 인스턴스 메인 메서드를 호출
new InstanceMainExample().main(args);
}
}
AI 및 시스템 프로그래밍 지원 강화
JDK 24는 AI 애플리케이션 개발을 위한 기능도 강화되었습니다. 예를 들어, 원시 타입을 패턴 매칭 및 switch 문에서 사용할 수 있게 되어, AI 추론 결과와의 통합이 용이해졌습니다. 또한, 벡터 API(Vector API)가 9번째 인큐베이터 단계로 진입하여, AI 계산 시 성능을 최적화할 수 있습니다.
미리보기 및 실험적 기능
JDK 24에는 여러 미리보기 및 실험적 기능이 포함되어 있습니다:
- Flexible Constructor Bodies (Third Preview): 생성자의 본문을 더 유연하게 정의할 수 있는 기능입니다.
- Scoped Values (Fourth Preview): 스코프 기반 값을 도입하여, 멀티스레딩 환경에서의 데이터 공유를 안전하게 처리할 수 있습니다.
- Primitive Types in Patterns, instanceof, and switch (Second Preview): 패턴 매칭, instanceof, switch 문에서 원시 타입을 사용할 수 있게 되어, 코드의 간결성과 성능을 향상시킵니다.
제거 및 변경된 기능
- Windows 32-bit x86 포트 제거: 32비트 Windows 플랫폼에 대한 지원이 종료되었습니다.
- Security Manager 영구 비활성화: 보안 관리자의 사용이 영구적으로 비활성화되어, 새로운 보안 모델로의 전환이 필요합니다.
- Thread.countStackFrames 메서드 제거: 스레드의 스택 프레임 수를 반환하는 메서드가 제거되었습니다.
다운로드 및 설치
JDK 24는 Oracle 공식 웹사이트에서 다운로드할 수 있습니다. 또한, OpenJDK 프로젝트 페이지를 통해 오픈 소스 빌드를 확인할 수 있습니다.
향후 계획
JDK 25는 2025년 9월에 출시될 예정이며, 이는 Long-Term Support(LTS) 버전으로 제공될 계획입니다.
'IT > JAVA' 카테고리의 다른 글
Cursor 와 Transaction 의 관계 (feat. fetch size) (0) | 2023.04.11 |
---|---|
How can I get jar file's Implementation version (0) | 2023.02.20 |
java with cpulimit & visualvm 으로 확인 (1) | 2022.07.19 |
CompletableFuture 를 이용한 Mybatis 쿼리 여러개 동시 수행 (0) | 2022.06.24 |
Ehcache Event Listener (0) | 2021.09.13 |