2020๋
์๋ ์ฝ๋ก๋๋ฐ์ด๋ฌ์ค์ ๊ฒฝ์ ์๊ธฐ ์ธ์๋ ์ข์ ์ผ๋ค๋ ์์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์๋ก์ด ๋ฒ์ ์ Java ์ถ์๊ฐ ์์ต๋๋ค. ๋ํ Java๋ ์ฌ์ ํ ์ธ๊ณ์์ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๊ฐ๋ฐ ์ธ์ด์
๋๋ค. 2020๋
์ ์์ฝํ๋ฉด, ํ ํด ๋์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง ๊ธฐ์ตํด ๋ด
์๋ค.
Java ์
๋ฐ์ดํธ: ๋ฒ์ 14 ๋ฐ 15
์๋
์ ๋ ๊ฐ์ง Java ์
๋ฐ์ดํธ(14 ๋ฐ 15)๊ฐ ์ถ์๋์์ต๋๋ค.
14๋ฒ์งธ ๋ฒ์ ์ ํ์ ์๋ ๋ ์ฝ๋ ํค์๋์ ๋ํ ์คํ์ ์ง์, "instanceof" ์ฐ์ฐ์์ ํจํด ์ผ์น ์ง์, ๋ณด๋ค ์ฌ์ฉ์ ์นํ์ ์ธ NullPointerExceptions, ํ์ฅ๋ " ํ
์คํธ ๋ธ๋ก์ ๋ฏธ๋ฆฌ๋ณด๊ธฐโ, ์
๋ฐ์ดํธ๋ ์ค์์น ๊ธฐ๋ฅ ๊ธฐ๋ณธ๊ฐ. Oracle Java ํ๋ซํผ ์์ง๋์ด๋ง ๋ถ์ฌ์ฅ์ธ
George Saab์ "Java 14๋ 6๊ฐ์ ์
๋ฐ์ดํธ ์ฃผ๊ธฐ์ ์ด์ ์ ๋ณด์ฌ์ฃผ๋ ๋ ๋ค๋ฅธ ์ฆ๊ฑฐ์
๋๋ค. ๊ฐ๋ฐ์๋ ์๋
๋์ ๊ธฐ๋ค๋ ธ์ ๊ธฐ๋ฅ์ ์ก์ธ์คํ ์ ์๊ฒ ๋์์ต๋๋ค."๋ผ๊ณ ๋งํ์ต๋๋ค . Saab์ ๋ฐ๋ฅด๋ฉด JDK 14์๋ ๊ฐ๋ฐ์ ์์ฐ์ฑ์ ๋์ด๋ ๊ฐ์ ์ฌํญ๋ง ํฌํจ๋์ด ์๋ ๊ฒ์ด ์๋๋๋ค. ์ด ๋ฆด๋ฆฌ์ค์๋ ํ์ฅ๋ ์ธ๋ถ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค ์ธํฐํ์ด์ค์ธ Project Panama์ Project Amber์ ์ถ๊ฐ ๊ฐ์ ์ฌํญ์ธ ํจํด ์ผ์น ๋ฐ ๊ธฐ๋ก๊ณผ ๊ฐ์ ํ๋ก์ ํธ์ ์ค์ํ ์ฝํ
์ธ ๋ ์ฒ์์ผ๋ก ํฌํจ๋์ด ์์ต๋๋ค." Java 14์ ์ฃผ์ ํ์ ์ค ํ๋๋ "๋ ์ฝ๋"์
๋๋ค. ์ฌ์ค ์ฐ๋ฆฌ ์์๋
Valhalla ํ๋ก์ ํธ ์ค์ ๊ฐ๋ฐ๋ ์๋ก์ด ์ ํ์ด ์์ต๋๋ค . ๋ ์ฝ๋๋ ์ด๊ฑฐํ๊ณผ ์ ์ฌํ๋ฉฐ ์ด๋ฅผ ํตํด ์ฝ๋๋ฅผ ๋จ์ํํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ํ๋ ์์ง๋ง ๋์์ด ์๋ ํด๋์ค๋ฅผ ๋์ฒดํฉ๋๋ค. JDK 14์๋ Java ์ ํ๋ฆฌ์ผ์ด์
์ด ์๋ก์ด MemorySegment, MemoryAddress ๋ฐ MemoryLayout ์ถ์ํ๋ฅผ ์ฌ์ฉํ์ฌ JVM ํ ์ธ๋ถ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์์ ํ๊ณ ํจ์จ์ ์ผ๋ก ์ก์ธ์คํ ์ ์๋๋ก ํ๋ ์ธ๋ถ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค API์ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. 15๋ฒ์งธ ๋ฒ์ ์๋ Edwards ๊ณก์ ์ ๊ธฐ๋ฐ์ผ๋ก ํ ๋์งํธ ์๋ช
์๊ณ ๋ฆฌ์ฆ, ํ๋ ํด๋์ค๋ ๋ฌผ๋ก ์ด์ ์ ์ํ๋์๋ ๊ธฐ๋ฅ์ ์ต์ข
๋ฒ์ ์ธ ํ
์คํธ ๋ธ๋ก ๋ฐ ZGC ๊ฐ๋น์ง ์์ง๊ธฐ์ ๊ฐ์
ํ์ ์ด ํฌํจ๋์ด ์์ต๋๋ค . Sealed ํด๋์ค๋ Java 15์์ ์ฒ์์ผ๋ก ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ธฐ๋ฅ์ผ๋ก ์ถ๊ฐ๋์์ต๋๋ค. ๋ํ ์ธ์คํด์ค ์ค๋ธ ์ฐ์ฐ์์ ๋ํ ํจํด ์ผ์น๋ฅผ ๋ค์ ํ์ฑํํ๊ณ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ก ๊ธฐ๋กํฉ๋๋ค. ์์ฝํ์๋ฉด, 6๊ฐ์๋ง๋ค ์
๋ฐ์ดํธ๋๋ ๋๋ถ์ Java๋ ๊ฐ๋ฐํ ์๊ฐ์ด ์๊ณ ๋ค๋ฅธ ๊ฐ๋ฐ ์ธ์ด์ ๋ค์ฒ์ง์ง ์๋๋ค๊ณ ๋งํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฌํด ๋ฒ์ 14 ์ถ์ ์ง์ ์
Java ๋ฒ์ (8~13)์ ๋ํ ์ ์ฒด ๋ฆฌ๋ทฐ๊ฐ JavaRush์ ๊ฒ์๋์์ต๋๋ค. ๋
์๋ฅผ ๊ถ์ฅํฉ๋๋ค.
ํ๊ฐ์์ Java: ์ฌ์ ํ ์ธ๊ธฐ๊ฐ ์์
JetBrains์ ์ฐ๊ตฌ์ ๋ฐ๋ฅด๋ฉด Java๋ ๊ณ์ํด์ ์ธ๊ณ์์
๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๊ธฐ๋ณธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์๋ฆฌ์ก๊ณ ์์ต๋๋ค. ์ฝ 520๋ง ๋ช
์ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ๋๊ด์ ์ธ IDC ๋ณด๊ณ ์์ธ
"Java Turns 25"์์๋ ์ ์ธ๊ณ์ ์ผ๋ก 900๋ง ๋ช
์ด์์ ๊ฐ๋ฐ์๊ฐ Java๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. โํ์ฌ ์ ์ธ๊ณ์ ์ผ๋ก 510์ต ๊ฐ์ JVM(Java Virtual Machine)์ด ๋ฐฐํฌ๋์ด ํ๋ฐํ๊ฒ ์ฌ์ฉ๋๊ณ ์์ผ๋ฏ๋ก Java๋ ๋ถ์, ๋ง์ดํฌ๋ก์๋น์ค, ๋ฐ์ดํฐ ๊ด๋ฆฌ, ์์
์๋น์ค, ๋น
๋ฐ์ดํฐ, DevOps, ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์
, ์ง์์ ์ธ ๊ด๋ฆฌ ๋ฑ ํ๋์ ์ธ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ ๋ฐ ์ ํธ๋๋ ์ ํ์
๋๋ค. ๊ฐ๋ฐ ๋๊ตฌ์ ์ฑ๋ด์ด ํ์ํฉ๋๋ค.โ ๋ผ๊ณ Java ๊ธ๋ก๋ฒ ๋ง์ผํ
๋ถ์ฌ์ฅ์ธ Manish Gupta๋
๋งํฉ๋๋ค . ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ธ๊ธฐ๋ฅผ ํ๊ฐํ๋
TIOBE ์ง์ ์ ๋ฐ๋ฅด๋ฉด 2020๋
12์, Java๋ ์ธ๊ณ์์ ๋ ๋ฒ์งธ๋ก ์ธ๊ธฐ ์๋ ์ธ์ด๊ฐ ๋์์ต๋๋ค . ๋ฑ๊ธ์ ์ด ์ธ์ด๋ก ์์ฑ๋ ์๋ง์ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ์๋น์ค๋ก ์ธํด ๊ณ ์ฉ์ฃผ๋ค ์ฌ์ด์์ Java๊ฐ ์ธ๊ธฐ๋ฅผ ๋๋ฆฌ๋ ์ด์ ๋ฅผ ์ค๋ช
ํฉ๋๋ค. ๊ตฌ์ง ์ฌ์ดํธ Dice.com์ ์์์์๋
Java ์ธ์ด๊ฐ 2์๋ฅผ ์ฐจ์งํ์ผ๋ฉฐ SQL๋ง์ด ์ด๋ฅผ ๋ฐ๋ผ์ก์ ์ ์์์ต๋๋ค. Stack OverFlow ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ์ ์ฐ๋ก ์ฐ๊ตฌ ๊ฒฐ๊ณผ๋ ์์ง ๋ง์ธ์. 2020๋
Java๋ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๊ฐ๋ฐ ์ธ์ด ์ค
5์๋ฅผ ์ฐจ์งํ์ต๋๋ค . ๋ณด์๋ค์ํผ, 2020๋
Java์ ์ธ๊ธฐ๋๊ฐ ์ค๋ฅด์ง ์์๋ค๋ฉด ์ ์ด๋ ํ๋ฝํ์ง๋ ์์์ต๋๋ค.
Java๋ ์ด๋์, ๋ฌด์์ ์ํด ์ฌ์ฉ๋์๋์?
JetBrains์ ๋ฐ๋ฅด๋ฉด ์ง๊ธ๊น์ง ๊ฐ์ฅ ๋ง์ ์์ Java ๊ฐ๋ฐ์๊ฐ ์์์์ ๊ฑฐ์ฃผํ๊ณ ์์ผ๋ฉฐ, ์์์์๋ ์ฝ 250๋ง ๋ช
์ ํ๋ก๊ทธ๋๋จธ๊ฐ Java๋ฅผ ๊ธฐ๋ณธ ์ธ์ด๋ก ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
Java๋ ์ค๊ตญ๊ณผ ํ๊ตญ์์ ๊ฐ๊ฐ ์ฝ 51%์ 50%์ ๊ฐ๋ฐ์๊ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. Java๋ ์ธ๋, ๋
์ผ, ์คํ์ธ ๋ฐ ๋ธ๋ผ์ง์์ ํ๋ฐํ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฒจ๋ก๋ฃจ์๋ ๊ฐ๋ฐ์์ 33%๋ฅผ ์ฐจ์งํ๋ฉฐ ์ด ๊ตญ๊ฐ ๋ชฉ๋ก์ ์ค๊ฐ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฌ์์์ ์ฐํฌ๋ผ์ด๋๋ ๊ฐ๊ฐ 25%์ 21%์ ํ๋ก๊ทธ๋๋จธ๋ก ์ตํ์๊ถ์ ์์ต๋๋ค. ๋ชฉ๋ก์ ์ฒซ 6๊ฐ ๊ตญ๊ฐ์์ Java๊ฐ ์ธ๊ธฐ๋ฅผ ๋๋ ์ด์ ๋ ์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฌด๋ฃ ์ฌ์ฉ, ์ ๋ถ ์ง์ ๋ฐ ์คํ ์์ค ์ฝ๋ ๋๋ฌธ์ด๋ผ๊ณ JetBrains๋
๋ฐํ์ต๋๋ค . Java 8์ ๊ฐ๋ฐ์๋ค ์ฌ์ด์์ ๊ฐ์ฅ ์ ํธํ๋ ๋ฒ์ ์ผ๋ก, Java ๊ฐ๋ฐ์์ 4๋ถ์ 3์ด ์ ํธํฉ๋๋ค. ์ด์ ๋์์ Java 11์ ์ธ๊ธฐ๋ ๋์์ง๊ณ ์์ผ๋ฉฐ, ์๋
์ ๋นํด ์ด ๋ฒ์ ์ ์ฌ์ฉ์ ์ ์ ์จ์ด 10% ์ฆ๊ฐํ์ต๋๋ค. ์๋์ ์ผ๋ก ์๋ก์ด Java 12 ๋ฐ Java 13๋ ๋น ๋ฅด๊ฒ ์ฒญ์ค์ ์ฐพ๊ณ ์์ต๋๋ค. ๊ฐ๊ฐ 10% ์ด์์ด ์ฌ์ฉ๋ฉ๋๋ค. Java ํ๋ ์์ํฌ ์ค์์ Spring Boot๋ 61%์ ๊ฐ๋ฐ์๊ฐ ์ ํํ ์ ๋์ฃผ์์
๋๋ค. 2์์ 3์๋ ๊ฐ๊ฐ Spring MVC(42%)์ JSF(6%)์
๋๋ค. 2020๋
์๋ ์น์ฌ์ดํธ ์์ฑ์ Java๊ฐ ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉ๋์์ต๋๋ค(36%). 2์๋ ์ ํธ๋ฆฌํฐ ๊ฐ๋ฐ(25%)์ด๊ณ , 3์๋ ์์คํ
์ํํธ์จ์ด ๊ฐ๋ฐ(19%)์
๋๋ค.
๋ด์ค ์์ ์๋ฐ
2020๋
์๋ Java์ ๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์? Java ๊ฐ๋ฐ์ ๊ดํ ์ค์ํ ์์์ ๋ชจ์๋ดค์ต๋๋ค.
Java ์ธ์ด๋ ์๊ฒฉ ๊ทผ๋ฌด์์ ๊ฐ์ฅ ์์๊ฐ ๋ง์ ์ธ ๊ฐ์ง ๊ธฐ์ ์ค ํ๋์
๋๋ค.
๋ฏธ๊ตญ ๊ตฌ์ง ์๋น์ค Dice๋ ์๊ฒฉ ๊ทผ๋ฌด ์ ๋ฌธ๊ฐ ๊ณ ์ฉ์ฃผ๋ค ์ฌ์ด์์ ๊ฐ์ฅ ์์๊ฐ ๋ง์ ๊ธฐ์ , ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋ฐ ๋๊ตฌ
๋ชฉ๋ก์ ์์ฑํ์ต๋๋ค . ์ง๋ ๋ ๋ฌ ๊ฐ์ ๊ฒฐ๊ณผ์ ๋ฐ๋ฅด๋ฉด SQL ์ธ์ด๊ฐ ์ ๋๋ฅผ ์ฐจ์งํ๊ณ ํ๋ก์ ํธ ๊ด๋ฆฌ์ Java ์ธ์ด๊ฐ ๊ทธ ๋ค๋ฅผ ์ด์์ต๋๋ค. ์ฐ๊ตฌ ์ ์๋ ์๋ฃ ๋ฐ ๊ต์ก ๋ถ์ผ์ ๊ด๋ จ๋ ์กฐ์ง์ด ํฌ๋ฐ๋ฏน ๊ธฐ๊ฐ ๋์ ์๊ฒฉ ๊ทผ๋ฌด๋ฅผ ์ฑ์ฉํ๋ ๋ฐ ๊ฐ์ฅ ์ ๊ทน์ ์ด์๋ค๊ณ ์ง์ ํฉ๋๋ค.
Snowflake๋ Java ๊ฐ๋ฐ์ ์ํ ์๋ก์ด ํ๊ฒฝ์ ์ถ์ํ์ต๋๋ค.
ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง ๋ฐ ๋ฐ์ดํฐ ๊ด๋ฆฌ ์ ๊ณต์
์ฒด์ธ Snowflake๋ ์๋ก์ด Snowpark ๊ฐ๋ฐ ํ๊ฒฝ์ ํ
์คํธ ๋ฒ์ ์ ์ ๋ณด์์ต๋๋ค. Java, Scala ๋ฐ Python์ ํฌํจํ ์ฌ๋ฌ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ง์ํฉ๋๋ค. Snowpark์๋ ํ๊ฒฝ์์ ์์ฑ๋ ์ฝ๋๊ฐ ๊ธฐ๋ณธ Snowflake ์์ง๊ณผ ์ต์ ์ผ๋ก ์ํธ ์์ฉํ๋๋ก ๋ณด์ฅํ๋ API ์ธํธ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. IDE๋ Snowflake Data Cloud์ ์๋ฒ๋ฆฌ์ค ์์
์ ๋ํ ์๋ก์ด ์ง์์ผ๋ก ๋ณด์๋ฉ๋๋ค.
Red Hat์ ํด๋ผ์ฐ๋์ฉ Quarkus Java ํ๋ ์์ํฌ๋ฅผ ๋์
ํ์ต๋๋ค.
์ ์์๊ฐ ์ธ๊ธ ํ๋ฏ์ด Quarkus๋ฅผ ์ฌ์ฉํ๋ฉด Kubernetes ํ๋ซํผ์์ Java๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๊ธฐ์กด Java ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ํ๊ฒฝ ๊ฐ์ ๊ฒฉ์ฐจ๋ฅผ ํด์ํ ์ ์์ต๋๋ค. ๋ฐํ์ ํ๊ฒฝ์ผ๋ก Quarkus๋ฅผ ์ง์ํ๋ฉด ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ ๋๋ฟ ์๋๋ผ ๋ง์ดํฌ๋ก์๋น์ค, ์ปจํ
์ด๋, ์๋ฒ๋ฆฌ์ค ์ปดํจํ
๊ณผ ๊ฐ์ ์๋ก์ด ์ํํธ์จ์ด ์์คํ
๋ชจ๋ธ์ ๊ตฌํํ ๋ Java๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ์ฌ ํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
GraalVM ๊ฐ์ ๋จธ์ ์ด ๋ฒ์ 20.3์ผ๋ก ์
๋ฐ์ดํธ๋์์ต๋๋ค.
์ค๋ผํด์ ์ฌํด ๋ง์ง๋ง ๋ฆด๋ฆฌ์ค์ธ GraalVM, ์ฆ Java ๊ฐ์ ๋จธ์ ์ด์ HotSpot/OpenJDK ๊ธฐ๋ฐ์ JDK๋ฅผ ์ถ์ํ์ต๋๋ค. ์ด๋ GraalVM Enterprise์ ๋ํ ์ฒซ ๋ฒ์งธ LTS(์ฅ๊ธฐ ์ง์) ๋ฆด๋ฆฌ์ค์
๋๋ค. GraalVM 20.3์ ์
๋ฐ์ดํธ ๋ชฉ๋ก์ ๋ค์ ์ฌํญ์ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ์ปดํ์ผ๋ฌ์ ํด๋ฆฌ์คํฑ์ด ๊ฐ์ ๋์ด ์ฑ๋ฅ์ด 40% ํฅ์๋์์ต๋๋ค. ์๋ก ํ ๋น๋ ๋ฐฐ์ด์ ์ด๊ธฐํํ๊ธฐ ์ํ ํฅ์๋ ์ฝ๋ ์์ฑ; ์ฝ๋ ๋ณต์ ์ต์ ํ๊ฐ ํ์ฅ๋์์ต๋๋ค(GraalVM Enterprise ๋ฒ์ ์์). ์ง๋ ํ ํด๋ Java์ ํด์์ต๋๋ค. 2020๋
Java ์ปค๋ฎค๋ํฐ์ ์ฃผ์ ์ด๋ฒคํธ๋ ๋ฌด์์ด๋ผ๊ณ ์๊ฐํ์๋์?
GO TO FULL VERSION