JavaRush /Java Blog /Random-KO /2022๋…„ Java ๋™ํ–ฅ: JDK 18 ๋ฐ 19, Project Loom ๋ฐ ๋ฐ์ดํ„ฐ ๋ฉ”์‹œ

2022๋…„ Java ๋™ํ–ฅ: JDK 18 ๋ฐ 19, Project Loom ๋ฐ ๋ฐ์ดํ„ฐ ๋ฉ”์‹œ

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์ž, 2022๋…„์ด ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ƒดํŽ˜์ธ๊ณผ ์˜ฌ๋ฆฌ๋น„์—์™€ ํ•จ๊ป˜ ์ƒˆํ•ด ์—ฐํœด๋ฅผ ๋ณด๋‚ด๊ณ  ์žˆ์ง€๋งŒ ์šฐ๋ฆฌ๋Š” Java ์„ธ๊ณ„์˜ ํŠธ๋ Œ๋“œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ด๋Š” ๊ท€ํ•˜์˜ ๊ฒฝ๋ ฅ์„ ๋ถ„์„ํ•˜๊ณ , ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ๋ฐฐ์šฐ๊ฑฐ๋‚˜, ๋‚ด๋…„์˜ ๊ฐœ๋ฐœ ๊ณ„ํš์„ ์„ธ์šฐ๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. 2022๋…„ Java ํŠธ๋ Œ๋“œ: JDK 18 ๋ฐ 19, Project Loom ๋ฐ ๋ฐ์ดํ„ฐ ๋ฉ”์‹œ - 1Java ์–ธ์–ด ์ „๋ฌธ๊ฐ€์ด์ž ๊ฐ•์‚ฌ์ธ Andrey Rodionov, EPAM์˜ ์†”๋ฃจ์…˜ ์„ค๊ณ„์ž์ด์ž Devoxx ์šฐํฌ๋ผ์ด๋‚˜ ํ”„๋กœ๊ทธ๋žจ ์œ„์›ํšŒ ์ฑ…์ž„์ž์ธ Oleg Tsal-Tsalko๋Š” 2022๋…„๊ณผ ๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜์— Java๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค.

2022๋…„ Java์˜ ์ „๋ง์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

2022๋…„ Java ํŠธ๋ Œ๋“œ: JDK 18 ๋ฐ 19, Project Loom ๋ฐ ๋ฐ์ดํ„ฐ ๋ฉ”์‹œ - 2์˜ฌํ•ด ์šฐ๋ฆฌ๋Š” JDK 18(3์›”)๊ณผ JDK 19(9์›”)์˜ ๋‹ค์Œ ๋‘ ๋ฒ„์ „์ด ์ถœ์‹œ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. JDK 18์˜ ๋Œ€๋ถ€๋ถ„์˜ Java ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ž ์žฌ์ ์œผ๋กœ ํฅ๋ฏธ๋กœ์šด ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • Python, Ruby, PHP์˜ ์œ ์‚ฌํ•œ ๋ฏธ๋‹ˆ ์›น ์„œ๋ฒ„์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์‹ ์†ํ•œ ํ”„๋กœํ† ํƒ€์ดํ•‘ ๋ฐ ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋‚ด์žฅํ˜• ๋‹จ์ˆœ ์›น ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.
  • ํŒจํ„ด ๋งค์นญ์€ ๊ณ„์†ํ•ด์„œ ๊ฐœ์„ ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
JDK 19์˜ ๊ฒฝ์šฐ ์ด๋ฏธ Early-Access ๋นŒ๋“œ๊ฐ€ ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์— ํฌํ•จ๋  ์˜ˆ์ •์ธ ๊ณต์‹ ๋ชฉ๋ก์€ ์•„์ง ์—†์Šต๋‹ˆ๋‹ค. ์ €๋Š” JDK 19๊ฐ€ ์ ์–ด๋„ ์ตœ๊ทผ์— ์ดˆ์•ˆ ์‚ฌ์–‘์ด ๊ณต๊ฐœ๋˜๊ณ  ์ตœ์‹  ๋นŒ๋“œ๊ฐ€ JDK 19๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” Project Loom์˜ ์ฒซ ๋ฒˆ์งธ ์•ˆ์ •์ ์ธ ํ”„๋กœํ† ํƒ€์ž…์„ ํฌํ•จํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ Project Loom์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Java๊ฐ€ ์œ ์ผํ•œ ์†”๋ฃจ์…˜์œผ๋กœ ๋‚จ์•„ ์žˆ๋Š” ์˜์—ญ์€ ๋ฌด์—‡์ด๋ฉฐ, Java๊ฐ€ ์„ ํ˜ธ๋˜๋Š” ์˜์—ญ์€ ์–ด๋””์ž…๋‹ˆ๊นŒ?

์•ˆ๋“œ๋ ˆ์ด ๋กœ๋””์˜ค๋…ธํ”„:

๋‹คํ–‰ํžˆ ์–ด๋–ค ์˜์—ญ์—์„œ๋„ Java์˜ ๋Œ€์•ˆ์ด ์—†๋‹ค๊ณ  ๋งํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ Java๋ฅผ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๋ฐฑ์—”๋“œ ๋ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์ผ์ข…์˜ ํ™ฉ๊ธˆ ์ˆ˜๋‹จ์œผ๋กœ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Amazon, Microsoft, Alibaba, Red Hat, Bellsoft(์ƒํŠธํŽ˜ํ…Œ๋ฅด๋ถ€๋ฅดํฌ์˜ Oracle Development Center ์‚ฌ๋žŒ๋“ค์ด ์„ค๋ฆฝํ•œ) ๋“ฑ ์—ฌ๋Ÿฌ ๊ณต๊ธ‰์—…์ฒด(Oracle ์ œ์™ธ)์˜ ๋‹ค์–‘ํ•œ JDK ๋ฐฐํฌํŒ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ๋„ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ๋ฐฐํฌํŒ ์„ธํŠธ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . 2022๋…„ Java ํŠธ๋ Œ๋“œ: JDK 18 ๋ฐ 19, Project Loom ๋ฐ ๋ฐ์ดํ„ฐ ๋ฉ”์‹œ - 3ํ•ญ์ƒ ๋Œ€์•ˆ์ด ์žˆ์ง€๋งŒ Java๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์˜ ๋ฐฑ์—”๋“œ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋Œ€๊ธฐ์—…์€ ํฌ๊ณ  ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์„ ์œ„ํ•ด Java๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด์œ ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์‹œ์žฅ์˜ ๊ฐœ๋ฐœ์ž ์ˆ˜์™€ ์ „๋ฌธ ์ง€์‹, ๊ฑฐ๋Œ€ํ•œ ์ƒํƒœ๊ณ„, ๊ฐ•๋ ฅํ•œ JVM ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

Java์™€ ๋น„๊ตํ•˜์—ฌ ๋‹ค๋ฅธ jvm ์–ธ์–ด, ํŠนํžˆ Kotlin์˜ ์ „๋ง์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์•ˆ๋“œ๋ ˆ์ด ๋กœ๋””์˜ค๋…ธํ”„:

์–ด๋–ค JVM ์–ธ์–ด๊ฐ€ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š”์ง€ ์ดํ•ดํ•˜๋ ค๋ฉด Spring, Micronaut, Vert.x์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์—ด๊ณ  ์ฝ”๋“œ ์˜ˆ์ œ๊ฐ€ ์–ด๋–ค ์–ธ์–ด๋กœ ์ œ๊ณต๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. Java์™€ Kotlin์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ ์ „ํ™˜์ด Kotlin์œผ๋กœ ์ด๋ฃจ์–ด์กŒ๋‹ค๊ณ  ๋งํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ๋ฐฑ์—”๋“œ์— ๋Œ€ํ•œ ์ธ๊ธฐ๊ฐ€ ๊ณ„์† ๋†’์•„์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋งŽ์€ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ Kotlin์„ ์ƒํƒœ๊ณ„์— ํฌํ•จ์‹œํ‚ค๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Scala์˜ ๊ฒฝ์šฐ ์ƒˆ ๋ฒ„์ „์ด ์ถœ์‹œ๋˜๊ณ  ์žˆ์œผ๋ฉฐ ML, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์ด ๋” ํŽธ๋ฆฌํ•œ ๊ณณ์— ๋”์šฑ ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์˜ฌ๋ ‰ ์ฐฐ-์ฐฐ์ฝ”:

๋‹ค๋ฅธ JVM ์–ธ์–ด๋„ ์ƒ๋‹นํžˆ ๋งค๋ ฅ์ ์ด๋ฉฐ ์š”์ฆ˜์—๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด JVM ์–ธ์–ด๊ฐ€ Java๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋‘๊ฐ€ ๊ทธ๋ƒฅ ๊ฐ€์ ธ๊ฐ€์„œ ๋ฐ”๊ฟ€ ์ •๋„๋กœ ๋ฉ‹์ง€์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
  • Java์™€ ๋™์ผํ•œ ์„ธ๊ทธ๋จผํŠธ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • Java๋Š” ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅธ ์–ธ์–ด์˜ ์žฅ์ ์„ ํก์ˆ˜ํ•˜์—ฌ ๋” ์ข‹์•„์ง‘๋‹ˆ๋‹ค.

๋ฆด๋ฆฌ์Šค ๊ฐ„๊ฒฉ์ด ์งง์•„์ง€๋ฉด Java ํ’ˆ์งˆ์ด ์ €ํ•˜๋ฉ๋‹ˆ๊นŒ?

์˜ฌ๋ ‰ ์ฐฐ-์ฐฐ์ฝ”:

๋‚˜๋Š” ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์ ์–ด๋„ ์ด์ œ๋Š” ๋นˆ๋ฒˆํ•œ ๋ฆด๋ฆฌ์Šค์—์„œ ๋” ๊ธ์ •์ ์ธ ์ ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ฉ‹์ง„ ๊ธฐ๋Šฅ์ด ํ›จ์”ฌ ๋” ์ž์ฃผ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ƒˆ๋กœ์šด ๊ฒƒ์ด ์–ธ์–ด์— ๋‚˜ํƒ€๋‚˜๊ธฐ๊นŒ์ง€ 5๋…„์„ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด์ œ ๊ธฐ๋Šฅ์ด ์ž‘์€ ๋ฐ˜๋ณต์œผ๋กœ ๋‚˜ํƒ€๋‚˜๊ธฐ ๋•Œ๋ฌธ์— Java 8๊ณผ ๊ฐ™์€ ๊ฑฐ์ฐฝํ•œ ๋ฆด๋ฆฌ์Šค๋ฅผ ๊ธฐ ๋Œ€ํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž์—๊ฒŒ ํŠนํžˆ ์ค‘์š”ํ•œ ์ƒˆ ๋ฒ„์ „์˜ Java ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ฌ๋ ‰ ์ฐฐ-์ฐฐ์ฝ”:

์ตœ์‹  ๋ฒ„์ „์˜ Java์—๋Š” ํŒจํ„ด ์ผ์น˜, ๋ด‰์ธ๋œ ํด๋ž˜์Šค ๋ฐ ๋ ˆ์ฝ”๋“œ์™€ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ํฅ๋ฏธ๋กœ์šด ๊ธฐ๋Šฅ์ด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์˜ ๋Šฅ๋ ฅ์„ ์‚ดํŽด ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ฐ€์žฅ ์ง„์ง€ํ•˜๊ณ  ๊ธฐ๋Œ€๋˜๋Š” ๊ธฐ๋Šฅ์€ Project Loom๊ณผ Project Valhalla ๋‚ด์— ๊ณ„ํš๋˜์–ด ์žˆ์ง€๋งŒ, ์ด ํ”„๋กœ์ ํŠธ ๋‚ด์˜ ๊ธฐ๋Šฅ๋„ ์ ์ง„์ ์œผ๋กœ ์ถœ์‹œ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Spring ํ”„๋ ˆ์ž„์›Œํฌ: ๋‹ค์–‘ํ•œ ์š”๊ตฌ์— ๋งž๊ฒŒ ์ƒํƒœ๊ณ„๋ฅผ ๊ณ„์† ํ™•์žฅํ•  ์˜ˆ์ •์ธ๊ฐ€์š”?

์•ˆ๋“œ๋ ˆ์ด ๋กœ๋””์˜ค๋…ธํ”„:

Spring Framework์˜ ๊ฒฝ์šฐ Spring Cloud์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๊ณ  Spring Boot๋ฅผ ํ–ฅํ›„ Spring Core์˜ ์ผ๋ถ€๋กœ ํฌํ•จ๋  ์˜ˆ์ •์ธ Spring Native ํ”„๋กœ์ ํŠธ์ธ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์ปดํŒŒ์ผํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘๊ณ  ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ ์—์„œ Spring์€ ๋ฆฌํ”Œ๋ ‰์…˜ ๋ฐ ๋™์  ์ฝ”๋“œ ์ƒ์„ฑ์„ ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— Micronaut ๋ฐ Quarkus์— ๋น„ํ•ด ๋’ค์ฒ˜์กŒ์Šต๋‹ˆ๋‹ค. Spring Framework 6์— ๊ด€ํ•ด์„œ๋Š” Spring 6 and Beyond ๋ณด๊ณ ์„œ Spring Framework 6์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์‚ดํŽด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์กฐ์ปค ์ปจํผ๋Ÿฐ์Šค(Oleg Dokuka ๋ฐ Alexey Nesterov)์—์„œ. ํ•ต์‹ฌ์€ JDK 17๋กœ์˜ ์ „ํ™˜, XML ๊ตฌ์„ฑ ํฌ๊ธฐ, setter๋ฅผ ํ†ตํ•œ Autowire ํฌ๊ธฐ, Kotlin ์ง€์› ์ถ”๊ฐ€ ๊ฐœ๋ฐœ ๋ฐ Spring Fu ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

์˜ฌ๋ ‰ ์ฐฐ-์ฐฐ์ฝ”:

์š”์ฆ˜ ๊ฐ€์žฅ ์ธ๊ธฐ์žˆ๋Š” Java FW์ธ Spring์€ ์†๋ฐ”๋‹ฅ์„ ํฌ๊ธฐํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœํŒ€์€ Spring ๊ฐœ๋ฐœ์— ์ตœ์„ ์„ ๋‹คํ•  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ๋ด„์€ ์ ์  ๋” ๋งŽ์€ ํ‹ˆ์ƒˆ ์‹œ์žฅ์„ ์ฑ„์›๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Spring์€ Project Reactor๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Reactive Streams/Reactive ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜์—ญ์—์„œ ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ทธ๋“ค์€ ์œ ๋งํ•ด ๋ณด์ด๋Š” RSoket ํ”„๋กœํ† ์ฝœ์„ ํ™๋ณดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Loom ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์„ ์œ„ํ•œ ๊ฒƒ์ด๋ฉฐ, ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๊นŒ?

์•ˆ๋“œ๋ ˆ์ด ๋กœ๋””์˜ค๋…ธํ”„:

Project Loom์€ ์•„๋งˆ๋„ ๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด ํ˜์‹ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ „์ฒด JVM ํ”Œ๋žซํผ๊ณผ JVM ์œ„์˜ ๋ชจ๋“  ์–ธ์–ด์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๊ตฌ์กฐ์  ๋ณ€ํ™”๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Project Loom์€ ์ผ๋ฐ˜ ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ๊ทธ๋‹ค์ง€ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ์‚ฌ์šฉํ•˜๋Š” ์ „์ฒด ์ƒํƒœ๊ณ„, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๊ธฐํƒ€ JVM ์–ธ์–ด์—๋Š” ํ™•์‹คํžˆ ์˜ํ–ฅ์„ ๋ฏธ์น  ๊ฒƒ์ž…๋‹ˆ๋‹ค. Project Loom์€ ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ ์ถ”์ƒํ™”, ์ฆ‰ ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ(์ฝ”๋ฃจํ‹ด๊ณผ ์œ ์‚ฌ)๋ฅผ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „์— Java ์Šค๋ ˆ๋“œ๊ฐ€ ์šด์˜ ์ฒด์ œ(OS) ์Šค๋ ˆ๋“œ์— ์ง์ ‘ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์—ˆ๊ณ  Java์—์„œ ์ƒˆ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ƒˆ OS ์Šค๋ ˆ๋“œ๊ฐ€ ์ƒ์„ฑ๋œ ๊ฒฝ์šฐ ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ ์ผ๋Œ€์ผ ๊ด€๊ณ„๊ฐ€ ๊นจ์ง‘๋‹ˆ๋‹ค. ์ƒˆ ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ƒˆ OS ์Šค๋ ˆ๋“œ๋Š” ์ƒ์„ฑ๋˜์ง€ ์•Š์œผ๋ฉฐ ์†Œ์œ„ ์บ๋ฆฌ์–ด ์Šค๋ ˆ๋“œ(OS ์Šค๋ ˆ๋“œ ํ’€๊ณผ ์œ ์‚ฌํ•œ ์ผ์ข…์˜) ์ค‘ ํ•˜๋‚˜๊ฐ€ ์žฌ์‚ฌ์šฉ๋˜์–ด ์ง์ ‘ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•˜๋‚˜์˜ OS ์Šค๋ ˆ๋“œ ์œ„์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํ“จํŒ… ์ž‘์—…์˜ ๊ฒฝ์šฐ ์ด ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ ๋ชจ๋ธ์€ ์•„๋ฌด๋Ÿฐ ์ด์ ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉฐ ์˜คํžˆ๋ ค ๊ณ„์‚ฐ ์†๋„๋ฅผ ๋Šฆ์ถ”์ง€๋งŒ, HTTP ์š”์ฒญ ์ฒ˜๋ฆฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์‘๋‹ต ๋Œ€๊ธฐ์™€ ๊ฐ™์€ ์ž‘์—… ์ฐจ๋‹จ์˜ ๊ฒฝ์šฐ ์ด ๋ชจ๋ธ์€ ์ค‘์š”ํ•œ ์ด์ . ์‚ฌ์‹ค ํ˜„์žฌ ์Šค๋ ˆ๋”ฉ ๋ชจ๋ธ์—์„œ๋Š” Java ์Šค๋ ˆ๋“œ๋ฅผ ์ฐจ๋‹จ/๋Œ€๊ธฐํ•˜๋ฉด OS ์Šค๋ ˆ๋“œ๊ฐ€ ์œ ํœด ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„์˜€์œผ๋ฉฐ ๋” ๋งŽ์€ OS ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ ๋ชจ๋ธ์—์„œ ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ๋ฅผ ์ฐจ๋‹จ/๋Œ€๊ธฐํ•˜๋ฉด ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰ ์ค‘์ด๋˜ ์บ๋ฆฌ์–ด ์Šค๋ ˆ๋“œ๊ฐ€ ํ•ด์ œ๋˜๊ณ  ๋‹ค๋ฅธ ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•ด๋‹น ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด OS ์Šค๋ ˆ๋“œ๊ฐ€ ๋ณด๋‹ค ์ตœ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ์œ ์‚ฌํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์Šค๋ ˆ๋“œ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ JVM ์–ธ์–ด ์ œ์กฐ์—…์ฒด๋Š” ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ์— ๋งž๊ฒŒ ์ฝ”๋“œ๋ฅผ ์กฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋Œ€๊ทœ๋ชจ ์žฌ์ž‘์„ฑ์ด ์˜ˆ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. :) ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ ๋ชจ๋ธ ์™ธ์—๋„ ์Šค๋ ˆ๋“œ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์†Œ์œ„ ๊ตฌ์กฐ์  ๋™์‹œ์„ฑ์ด๋ผ๋Š” ์ƒˆ๋กœ์šด API๋„ ๋„์ž…ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด์ œ Kotlin ์ฝ”๋ฃจํ‹ด๊ณผ Scala ZIO์—์„œ๋Š” ๊ตฌ์กฐํ™”๋œ ๋™์‹œ์„ฑ์ด ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํ•˜๊ฒŒ๋„ JDK ๋ฒ„์ „๊ณผ Project Loom์˜ ์ถœ์‹œ ์—ฐ๋„์กฐ์ฐจ ์•„์ง ์•Œ๋ ค์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ถœ์‹œ์ผ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์— Java ํ”Œ๋žซํผ์˜ ์ˆ˜์„ ์„ค๊ณ„์ž์ธ Brian Goetz๋Š” "์ค€๋น„๋˜๋ฉด ์ค€๋น„๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค."๋ผ๋Š” ์ฒ ํ•™์ ์ธ ๋ฌธ๊ตฌ๋กœ ๋Œ€๋‹ตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์šฐ๋ฆฌ๋Š” ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์œผ๋ฉฐ Project Loom์˜ ์‹คํ—˜์ ์ธ ๋นŒ๋“œ๋ฅผ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .

์˜ฌ๋ ‰ ์ฐฐ-์ฐฐ์ฝ”:

Loom์€ OpenJDK์™€ Oracle ํŒ€์ด Java ๋ฐ JVM์˜ ๋™์‹œ์„ฑ ํ˜์‹ (๊ฐ€์ƒ ์Šค๋ ˆ๋“œ, ํŒŒ์ด๋ฒ„ ๋ฐ ์—ฐ์†)์„ ์œ„ํ•ด ์ž‘์—…ํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ ์ ์ง„์ ์œผ๋กœ ์ถœ์‹œ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ ์ง€์›์„ ์œ„ํ•œ Early Access ๋นŒ๋“œ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด ๋งํ•˜์ž๋ฉด, ์ฃผ์š” ๋ชฉํ‘œ๋Š” ์ผ๋ฐ˜ ํ”Œ๋žซํผ ์Šค๋ ˆ๋“œ์™€ ๋™์ผํ•œ ์˜๋ฏธ๋ฅผ ์ง€๋‹Œ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๊ฒฝ๋Ÿ‰ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Java์˜ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ๊ฐœ๋ฐœ ๋ชจ๋ธ์„ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ์Šค๋ ˆ๋“œ๋Š” ForkJoinPool ๋‚ด๋ถ€์—์„œ ๊ด€๋ฆฌ๋˜๊ณ  ํ”Œ๋žซํผ ์Šค๋ ˆ๋“œ์—์„œ ์žฌ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค, ํด๋ผ์šฐ๋“œ ์•„ํ‚คํ…์ฒ˜, ๋ธ”๋ก์ฒด์ธ, AI ๋“ฑ ๊ธ€๋กœ๋ฒŒ ํŠธ๋ Œ๋“œ์˜ ์„ธ๊ณ„์—์„œ Java ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ์˜ˆ์ธก์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์•ˆ๋“œ๋ ˆ์ด ๋กœ๋””์˜ค๋…ธํ”„:

๊ธ€๋กœ๋ฒŒ ํŠธ๋ Œ๋“œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋ฉด ํฌ๊ฒŒ ๋ณ€ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด์ „๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฃผ์š” ์ถ”์„ธ๋Š” ๊ณ„์†ํ•ด์„œ Kubernetes์™€ ์„œ๋น„์Šค ๋ฉ”์‹œ ํ˜•ํƒœ์˜ ์ฃผ๋ณ€ ์ธํ”„๋ผ์ž…๋‹ˆ๋‹ค . ๋ฐ์ดํ„ฐ ๋ฉ”์‹œ๋Š” ๋ถ„์‚ฐ๋œ ๋ฐ์ดํ„ฐ ์†Œ์Šค์™€ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ผ์ข…์˜ ์ถ”์ƒํ™”๋กœ ๋„ ์ธ๊ธฐ๋ฅผ ์–ป๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค .
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION