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?