Java 24
2025๋ 3์ 18์ผ ๋ฐํ๋ JDK 24
1. ์ฃผ์ ์๋ก์ด ๊ธฐ๋ฅ(Major New Functionality)
1.1 ์ธ์ด ๊ธฐ๋ฅ ๊ฐ์ (Language Previews)
Primitive Types in Patterns, instanceof, and switch(JEP 488, Second Preview)
instanceof
๋ฐswitch
์์ ๊ธฐ๋ณธ ํ์ (primitive types) ์ ์ฌ์ฉํ ์ ์๋๋ก ์ง์์๋ฅผ ๋ค์ด, ๊ธฐ์กด์๋
switch
๋ฌธ์์int
,double
๋ฑ์ ์ง์ ์ฌ์ฉํ ์ ์์์ง๋ง, ์ด์ ๋ ํจํด ๋งค์นญ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์.
Flexible Constructor Bodies(JEP 492, Third Preview)
์์ฑ์์์
super(..)
ํธ์ถ ์ ์ ํ๋๋ฅผ ์ด๊ธฐํํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ง.์ด๋ฅผ ํตํด ์์๋ ํด๋์ค์์
super(..)
๊ฐ ํธ์ถ๋๊ธฐ ์ ์ ํ๋ ์ด๊ธฐํ๊ฐ ๊ฐ๋ฅํ์ฌ ์ค๋ฒ๋ผ์ด๋ฉ๋ ๋ฉ์๋ ํธ์ถ์ ๋์ฑ ์์ ํ๊ฒ ์ฒ๋ฆฌํ ์ ์์.
Module Import Declarations(JEP 494, Second Preivew)
ํ๋์
import
๋ฌธ์ผ๋ก ๋ชจ๋์ด ๋ด๋ณด๋ธ ๋ชจ๋ ํจํค์ง๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋๋ก ์ง์.๊ธฐ์กด์๋ ํจํค์ง ๋จ์๋ก๋ง
import
๊ฐ ๊ฐ๋ฅํ์ง๋ง, ๋ชจ๋ ๋จ์๋ก๋ ๊ฐํธํ๊ฒ ๊ฐ์ ธ์ฌ ์ ์์.
Simple Source Files and Instance Main Methods(JEP 495, Fourth Preview)
์ด๋ณด ๊ฐ๋ฐ์๊ฐ ์๋ฐ ํ๋ก๊ทธ๋จ์ ๋ ์ฝ๊ฒ ์์ฑํ ์ ์๋๋ก ๋จ์ํ ํํ์ ์์ค ํ์ผ๊ณผ ์ธ์คํด์ค ๋ฉ์ธ ๋ฉ์๋๋ฅผ ์ง์.
์๋ฅผ ๋ค์ด,
public static void main(String[] args)
์์ด๋ ์คํ ๊ฐ๋ฅํ ๋จ์ํ ํ๋ก๊ทธ๋จ์ ์์ฑ ๊ฐ๋ฅ
2. ์ฑ๋ฅ ๋ฐ ๋ฐํ์ ๊ฐ์ (Performance and Runtime)
Compact Object Headers(JEP 450, Experimental)
64๋นํธ ์ํคํ ์ฒ์์ ๊ฐ์ฒด ํค๋ ํฌ๊ธฐ๋ฅผ ๊ธฐ์กด 96 ~ 128 ๋นํธ์์ 64๋นํธ๋ก ์ค์ฌ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ ๊ฐ ๋ฐ ๋ฐ์ดํฐ ๋ก์ปฌ๋ฆฌํฐ ํฅ์
Latte Barrier Expansion for G1(JEP 475)
G1 GC ์ Barrier ํ์ฅ์ ์ต์ ํํ์ฌ ์ฑ๋ฅ ํฅ์
Ahead-of-Time Class Loading & Linking(JEP 483)
์ ํ๋ฆฌ์ผ์ด์ ์คํ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด JVM ์ด ํด๋์ค ๋ก๋ฉ ๋ฐ ๋งํฌ ์ ๋ณด๋ฅผ ์บ์ํ์ฌ ๋ค์ ์คํ ์ ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ํจ.
Synchronize Virtual Threads without Pinning(JEP 491)
synchronized
๋ธ๋ก์ ์ฌ์ฉํ๋ ๊ฐ์ ์ฐ๋ ๋(Virtual Thread) ๊ฐ ํ๋ซํผ ์ฐ๋ ๋์ ๋ถ๋ฆฌ๋์ด ๋ณด๋ค ํจ์จ์ ์ผ๋ก ๋์ํ๋๋ก ๊ฐ์
3. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ์ (Libraries)
Stream Gatherers(JEP 485)
๊ธฐ์กด Stream API ์ ์ฌ์ฉ์ ์ ์ ์ค๊ฐ ์ฐ์ฐ(intermediate operation) ์ ์ถ๊ฐํ ์ ์๋๋ก ๊ฐ์
Class-File API(JEP 484)
Java ํด๋์ค ํ์ผ์ ๋ถ์, ์์ฑ ๋ฐ ๋ณํํ ์ ์๋ ํ์ค API ์ ๊ณต
Scope Values(JEP 487, Fourth Preview)
ThreadLocal
๋ณด๋ค ๊ฐ๋ณ๊ณ ์์ ํ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ์ ์๋ ์๋ก์ด ์ค์ฝํ ๊ฐ์ ๋์
Vector API(JEP 489, Ninth Incubator)
๋ฒกํฐ ์ฐ์ฐ์ ์ต์ ํํ์ฌ CPU ์ฑ๋ฅ์ ๊ทน๋ํํ๋ API ์ถ๊ฐ
Structured Concurrency(JEP 499, Fourth Preview)
๋ณ๋ ฌ ํ๋ก๊ทธ๋๋ฐ์ ๋ ์ฝ๊ฒ ํ๊ธฐ ์ํด ๊ตฌ์กฐ์ ๋์์ฑ(Structured Concurrency) API ์ ๊ณต.
4. ๋ณด์ ๊ธฐ๋ฅ ๊ฐํ(Security)
Key Derivation Function API(JEP 478, Preview)
KDF(Key Derivation Function) API ๋ฅผ ์ถ๊ฐํ์ฌ ์ํธ ํค๋ฅผ ๋ณด๋ค ์์ ํ๊ฒ ํ์ ๊ฐ๋ฅ
Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism(JEP 496)
์์ ์ปดํจํฐ ๊ณต๊ฒฉ์ ๋๋นํ ์๋ก์ด ์ํธํ ํค ์บก์ํ ๋ฉ์ปค๋์ฆ(ML-KEM) ์ง์
Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm(JEP 497)
์์ ์ ํญ์ฑ์ ๊ฐ์ถ ๋์งํธ ์๋ช ์๊ณ ๋ฆฌ์ฆ(ML-DSA) ์ง์
5. ์ ๊ฑฐ ๋ฐ ๊ฒฝ๊ณ
Java Native Interface(JNI) ์ ํ ์๊ณ (JEP 472)
ํฅํ JNI ์ฌ์ฉ์ ์ ํํ ์์ ์ด๋ฉฐ, ํ์ฌ๋ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅ
Security Manager ์์ ์ ๊ฑฐ(JEP 486)
Java 17์์ ์ญ์ ์์ ์ด์๋
Security Manager
๋ฅผ ์์ ํ ๋นํ์ฑํ.
ZGC ์ Non-Generationl Mode ์ ๊ฑฐ(JEP 490)
Z Garbage Collector(ZGC) ์์ Non-Generational ๋ชจ๋๋ฅผ ์ ๊ฑฐํ๊ณ , Generational ๋ชจ๋๋ง ์ ์ง
sun.misc.Unsafe ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ๋ฉ์๋ ์ฌ์ฉ ์ ๊ฒฝ๊ณ (JEP 498)
sun.misc.Unsafe
์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๋ฉ์์ง ์ถ๋ ฅ
JDK 24 ์์ ์ถ๊ฐ๋ ๊ธฐํ ์๋ก์ด ๊ธฐ๋ฅ
Unicode 16.0 ์ง์(
java.lang.Character
ํด๋์ค์ 5185๊ฐ์ ์๋ก์ด ๋ฌธ์ ์ถ๊ฐ)Process.waitFor(Duration) ๋ฉ์๋ ์ถ๊ฐ (
Duration
๊ฐ์ฒด๋ฅผ ์ง์ ์ฌ์ฉ ๊ฐ๋ฅ)jar ๋ช ๋ น์ด ๊ฐ์ (JAR ํ์ผ์ ํน์ ๋๋ ํ ๋ฆฌ๋ก ์ถ์ถํ๋ ์ต์ ์ถ๊ฐ)
Virtual Thread Scheduler ๋ชจ๋ํฐ๋ง ๊ธฐ๋ฅ(
jdk.management.VirtualThreadSchedulerMXBean
์ ๊ณต)TLS 1.3 ์ ์๋ก์ด ์ธ์ ํฐ์ผ ๊ฐ์ ์กฐ์ ๊ฐ๋ฅ(
jdk.tls.server.newSessionTicket
์์ฑ ์ถ๊ฐ)Quantum-Resistant TLS ํค ๋ฐ ์๋ช ์๊ณ ๋ฆฌ์ฆ ์ ๊ณต(์์ ๋ด์ฑ ์ํธํ ์ง์)
OpenJDK ์ Oracle JDK ์ ์ฐจ์ด์ ์ ์ง(์: GraalVM JIT ํฌํจ ์ฌ๋ถ, ์ค์น ํ๋ก๊ทธ๋จ ์ง์ ๋ฑ)
Last updated
Was this helpful?