ะญะปะปะตะพะฝะพัะฐ ะะตััะธ
๋ ๋ฒจ 41
Java 13: ๊ฐ๊น์ด ๋ฏธ๋์ ๋ฌด์์ด ์ฐ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์๊น์?
Java 13์ด ์ถ์๋๊ธฐ๊น์ง ์์ง 3๊ฐ์์ด ๋จ์์ง๋ง, ์ฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์ข์ํ๋ ์ธ์ด์ ํฅํ ๋ฒ์ ์ ํ์ ์ ๋ํ ์ธ๋ถ ์ ๋ณด๊ฐ OpenJDK ํ์ด์ง์ ์ง์์ ์ผ๋ก ํ์๋ฉ๋๋ค. Java์ ๋ณ๊ฒฝ ์ฌํญ์ JDK - JEP(JDK Enhancement Proposals)๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํ ์ ์์ ์ฌ์ฉํ์ฌ ์ด๋ฃจ์ด์ง๋ฉฐ ๋์ค์ ์ ๋ฒ์ ์ ํตํฉ๋ฉ๋๋ค(๊ธ์, ์ ์ฉํ๊ณ ์ ์ ํ๋ค๊ณ ๊ฐ์ฃผ๋์ง ์๋ ๊ฒฝ์ฐ ํตํฉ๋์ง ์์). ๋ค์์ ์ ๋ฒ์ ์ Java์ ์ ์๋ ์ผ๋ถ ๊ธฐ๋ฅ์
๋๋ค. ํ
์คํธ ๋ธ๋ก. JEP-355 ์ ๋ฐ๋ฅด๋ฉด ํ
์คํธ ๋ธ๋ก์ JDK 13(๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์ค)์ ๋ํ๋์ผ ํฉ๋๋ค. ํ
์คํธ ๋ธ๋ก์ ๋๋ถ๋ถ์ ์ด์ค์ผ์ดํ ์ํ์ค๊ฐ โโํ์ํ์ง ์์ ๋ค์ค ๋ถ๋ถ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์
๋๋ค. ์ด์ ๋๋ถ๋ถ์ ํน์ ๋ฌธ์๋ฅผ ์ด์ค์ผ์ดํ ์ฒ๋ฆฌํ ํ์๊ฐ ์์ผ๋ฉฐ ์๋ ์ค ๋ฐ๊ฟ์ด ๋ํ๋ฉ๋๋ค. ํ
์คํธ ๋ธ๋ก์ ์๋์ผ๋ก ์ค์ ์์์ ์ง์ ํ๊ณ ๊ฐ๋ฐ์๊ฐ ํด๋น ์์์ ์ ์ดํ ์ ์๋๋ก ํฉ๋๋ค. ์ด JEP๋ ์ฃผ๋ก ์ฝ๋ ์์ฑ ๋ฐ ์ฝ๊ธฐ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํ๊ธฐ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค. Java์์ Java๊ฐ ์๋ ๊ฐ์ฒด(์: XML ๋๋ JSON)๋ฅผ ํฌํจํ๋ ค๋ฉด ์ผ๋ฐ์ ์ผ๋ก "ํฌ๋ฒ๋ฆฐ๊ณผ ํจ๊ป ์ถค์ถ๊ธฐ"(ํน์ ์ค ํธ์ง)๊ฐ ํ์ํ๋ฏ๋ก ์ด๋ฌํ ํฌํจ์ ์ผ๋ฐ์ ์ผ๋ก ์์ฑ, ์ง์ ๋ฐ ์ฝ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ์์ผ API ์
๋ฐ์ดํธ. ์๋ก์ด Java๋ ๋ ๊ฑฐ์ ์์ผ API๋ฅผ ๋ค์ ์์ฑํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์ด๋ก ์ ์ผ๋ก ์
๋ฐ์ดํธ๋ ๊ตฌํ์ ๋์ฑ ํ๋ํ๋๊ณ ์ ์ง ๊ด๋ฆฌ ๋ฐ ๋๋ฒ๊น
์ด ๋ ์ฌ์์ง ๊ฒ์
๋๋ค. ์ด๋ net.Socket ๋ฐ java.net.ServerSocket API์์ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ๊ตฌํ์ ๋์ฒดํ๊ธฐ ์ํ ๊ฒ์
๋๋ค. ์ ๋ฒ์ ์ ์ฌ์ฉ์ ๋ชจ๋ ์ค๋ ๋(ํ์ด๋ฒ ๋๋ ํ์ด๋ฒ) ์์
์ ์ฝ๊ฒ ์ ์ํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด๋ ๋ณ๋ ฌ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ ์ฝ๊ฒ ์์ฑํ๊ณ , ๋๋ฒ๊ทธํ๊ณ , ํ๋กํ์ผ๋งํ๊ณ ์ง์ํ ์ ์๋๋ก ๋ง๋ค์ด์ง ํ๋ก์ ํธ์ธ Loom ์์ ํ์๋ฉ๋๋ค. ์์ ์ธ๊ธํ ๋ ๊ฑฐ์ API์ ๋ฟ๋ฆฌ๋ JDK 1.0์ผ๋ก ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ฉฐ ๋๋ฒ๊ทธ ๋ฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ด ๋ ๊ฑฐ์ C์ Java ์ฝ๋๊ฐ ํผํฉ๋์ด ์์ต๋๋ค. ์ด์ ๊ตฌํ์๋ ๋ค๋ฅธ ๋ฌธ์ ๋ ์์ต๋๋ค. ๋น๋๊ธฐ์ ํ์๋ฅผ ์ง์ํ๋ ์์ฒด ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ์ธํด ์์ ์ฑ ๋ฐ ์ด์์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ ์์ ์ด ํ์ํ ๋์์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ZGC (Z Garbage Collector) ๊ฐ์ . ์ ๋ฒ์ ์์๋ ZGC ๊ฐ๋น์ง ์์ง๊ธฐ๊ฐ ์ฌ์ฉ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด์ ์ฒด์ ์ ๋ฐํํ๋๋ก ๊ฐ์ ํ๋ ค๊ณ ํฉ๋๋ค. ZGC๋ ํ์ฅ ๊ฐ๋ฅํ๊ณ ๋๊ธฐ ์๊ฐ์ด ์งง์ ๊ฐ๋น์ง ์์ง๊ธฐ๋ก ํ๋งค๋์ง๋ง ํ์ฌ๊น์ง๋ ํด๋น ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ๊ฒฝ์ฐ์๋ ์ฌ์ฉ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ OS์ ๋ค์ ๋ฐํํ์ง ์์ต๋๋ค. ๋ถ๋ช
ํ ์ด๋ ๋นํฉ๋ฆฌ์ ์ด๋ฉฐ ์ค๋ซ๋์ ์ ํด ์ํ๋ก ์์ ์ ์๋ ์ผ๋ถ ์ ํ๋ฆฌ์ผ์ด์
๋ฐ ํ๊ฒฝ์ ๊ฒฝ์ฐ ์ด ์ ๊ทผ ๋ฐฉ์์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ํด๋์ค ๋ฐ์ดํฐ ๊ณต์ AppCDS ๊ธฐ๋ฅ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์
์คํ์ด ๋๋ ๋ ํด๋์ค์ ๋์ ๋ณด๊ด์ ์ ๊ณตํฉ๋๋ค. ํด๋์ค ๋ฐ์ดํฐ ๊ณต์ ๋๋ ํด๋์ค ๋ฐ์ดํฐ ๊ณต์ ๋ JDK 5์์ ์ฒ์ ๋์
๋์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ๊ณตํต ์์นด์ด๋ธ ํ์ผ์ ํด๋์ค ์ธํธ๋ฅผ ์ฌ์ ์ฒ๋ฆฌํ ๋ค์ ๋ฐํ์ ์ ๋ฉ๋ชจ๋ฆฌ์ ๋งคํํ์ฌ ์์ ์๊ฐ์ ์ค์ผ ์ ์์ต๋๋ค. ์ด์ ์์นด์ด๋ธ ํด๋์ค์๋ ํ์ค ๊ธฐ๋ณธ ์์ค CDS ์์นด์ด๋ธ์ ํฌํจ๋์ง ์์ ๋ก๋๋ ๋ชจ๋ ์์ฉ ํ๋ก๊ทธ๋จ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํด๋์ค๊ฐ ํฌํจ๋ฉ๋๋ค. ์ด ์ ์์ AppCDS์ ์ ์ฉ์ฑ์ ํฅ์์ํค๊ณ ์ฌ์ฉ์๊ฐ ๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํ ํด๋์ค ๋ชฉ๋ก์ ์์ฑํ๊ธฐ ์ํด ์ํ ์คํ์ ์ํํ ํ์๋ฅผ ์์ ๊ธฐ ์ํ ๊ฒ์
๋๋ค. Switch ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ์๋ก์ด ํํ์ ํํ์ ์ ํ ๋ฒ์ - Switch Expressions . Java 12 ๋ฒ์ ์์๋ switch ๋ฌธ ์ฝ๋์ ๋จ์ํ๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋จ๊ณ์ ๋ํ๋ฌ์ต๋๋ค. ์๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๊ฑฐ๋ ํํ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด์ ๋จ์ ๊ฒ์ Java 13์ ์ถ์์ผ์ธ 9์ 17์ผ์ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ๋ฟ์
๋๋ค. ์ง๊ธ ํ์ ์ ๋ํด ๋นจ๋ฆฌ ์๊ณ ์ถ๋ค๋ฉด ๊ณต์ ์น์ฌ์ดํธ์์ ๋ฒ ํ ๋น๋๋ฅผ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค.
GO TO FULL VERSION