Java์ ๊ทธ ์ํ๊ณ์ ๋ํ ์์งํ ์๊ฒฌ
์ถ์ฒ:
Dev.to ์ข์ต๋๋ค. ์ ์ฃผ์ ์ธ์ด๊ฐ C#์ด๋ผ๋ ์ ์ ์ธ์ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ Java์ ๊ทธ ์ฃผ๋ณ ์ํ๊ณ์ ๋ํ ๋์ ํธ๊ฒฌ ์๋ ์๊ฒฌ์
๋๋ค. ๋๋ Java์์ bash ๋ช
๋ น์ ์์ฃผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋จ์ ์ ํ์ธํ์ต๋๋ค. ์๋ฅผ ๋ค์ด Java์๋ ์์ฑ์ด ์๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฒคํธ, ๊ตฌ์กฐ์ฒด, ์ฐ์ฐ์ ์ค๋ฒ๋ก๋๊ฐ ์์ผ๋ฉฐ Java 10๊น์ง๋ ์ถ๋ก ์ด ์์ผ๋ฏ๋ก 'var'์ด ์์ต๋๋ค. C#์๋ ๋ชจ๋ ๊ฒ์ด ์์ต๋๋ค! ๋ํ LINQ, var ๋ฐ enum์ด ๋ถ์กฑํ์ฌ Java์ฉ bash๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ ๋ ํนํ Android์ฉ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค ๋ Java๋ก ๊ธ์ ๋ง์ด ์์ฑํ์ง๋ง ๋ค๋ฅธ ์ฉ๋๋ก๋ ์์ฑํฉ๋๋ค. ๋ด ์ฒซ ํ๋ก์ ํธ๋ Java๋ก ์งํ๋์์ต๋๋ค! ๊ทธ๋์ ๊ธ์์ผ ์ ๋
์๋ ๊ธด๊ธํ ์ํฉ์ผ๋ก ์ธํด ๋ช ์๊ฐ ๋์ ๊ณ์ํด์ Java๋ก ๊ธ์ ์จ์ผ ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ๋ฌด์์ ๋ฐ๊ฒฌํ๋์ง ์์๋ณด์ธ์? ๊ฐ์ธ!
๋ถ๋ช
ํ Java 8์๋ ์ค๋ ๋๊ฐ ๋์
๋์์ต๋๋ค! ๊ทธ๋ฆฌ๊ณ ๋๋ ๊ทธ๊ฒ์ ๋ํด ์ ํ ๋ชฐ๋์ต๋๋ค! ๋ชจ๋ฅด๋ ๋ถ๋ค์ ์ํด ์ค๋ช
ํ์๋ฉด Streams๋ LINQ์ Java ๊ตฌํ์
๋๋ค. ๋ํ Java 10์ ์ ํ ์ถ๋ก ์ด ์์ผ๋ฏ๋ก ์ด์ Java์ var ํจ์๊ฐ ์๋ค๋ ๊ฒ๋ ๋ฐ๊ฒฌํ์ต๋๋ค. ๋ด ์ง์์ด ์ผ๋ง๋ ๋ก์๋์ง ๋ฏฟ์ ์ ์์ง๋ง ์์งํ ๊ฑฐ๊ธฐ์๋ ์ด์ ๊ฐ ์์๋ค. ์ด ๋ ๊ฐ์ง๊ฐ ๋ด ์๊ฐ์ ํฐ ๋ณํ๋ฅผ ๊ฐ์ ธ์์ต๋๋ค! Java๋ ํญ์ ์์ธ๋ฅผ ํ์ธํ์ง๋ง C#์ ๊ทธ๋ ์ง ์๋ค๋ ๊ฒ์ ์๊ณ ๊ณ์
จ์ต๋๊น? ์ ๋ C#์์ ์ด ๊ธฐ๋ฅ์ด ์ ๋ง ๊ทธ๋ฆฌ์์ง๋ค๋ ๊ฒ์ ์ธ์ ํฉ๋๋ค! ์, ๊ตฌ์กฐ, ์์ฑ ๋ฑ์ ์์ง๋ง ์ ์ฅ, ์ฐ์ํฉ๋๋ค! ๋ด ์๊ฐ์ Java๋ ์ค๊ณ์ ๊ฐ๋ฐ์๊ฐ ๋์ฑ ๊ฐ๋ ฅํ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฑํ๋๋ก ๊ฐ์ํฉ๋๋ค. ๋ฐ๋ฉด .NET ์ธ๊ณ์์๋ ์ด๋ ๋๋ถ๋ถ ์ฝ๋์ ์ฌ๋์ ๋ฌ๋ ค ์์ต๋๋ค. ์ผ๋ถ ๊ฐ๋ฐ์๋ ์ด๋ฌํ ์ ํ์ ์ข์ํ์ง๋ง ๋ค๋ฅธ ๊ฐ๋ฐ์๋ ์์ ๋ฅผ ์ ํธํฉ๋๋ค. ๋ ์ธ์ด ๋ชจ๋ ์๋นํ ์์ ํ์ง๋ง Java๋ ๋ถ๋ช
ํ ์ฝ๊ฐ์ ์ฐ์๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ๋๊ธฐ์
์ด Java๋ฅผ ์ ํธํ๋ ์ด์ ๋ ๋ฌด์์
๋๊น? ์ด์ ๋ต์ ์ ๊ฒ ๊ฐ์์! ๊ฐ์ฅ ๋ต๋ตํ ์ ์... ์ธํฐ๋ท์์ ๋ณด๋ ๋๋ถ๋ถ์ ์ฝ๋ ์์ ์์ ์ด๋ฌํ ๊ณ ๊ธ ๊ธฐ๋ฅ์ด ํญ์ ์ฌ์ฉ๋์ง๋ ์๋๋ค๋ ๊ฒ์
๋๋ค... ์๋ก์ด Java ๊ฐ๋ฐ์๊ฐ ์ฝ๋ ๋ฒ ์ด์ค ์ ์ฒด์ 'var'๊ฐ ์ฐ์ฌ ์๋ ๊ฒ์ ๋ณธ๋ค๋ฉด ๊ทธ๋ ๊ฒ ์๊ฐํฉ๋๋ค. , ๊ทธ๋ ๋ฏธ์ณ๋ฒ๋ฆด ๊ฑฐ์ผ! ์คํธ๋ฆผ์ ์ด๋ป์ต๋๊น? ์คํธ๋ฆผ์ด๋ ๋ฌด์์
๋๊น? Java ๊ฐ๋ฐ์๋ For ๋ฃจํ๋ฅผ ์ข์ํฉ๋๋ค! ์ค์ ๋ก foreach ๋ฃจํ๋ Java ์ธ๊ณ์์๋ ๋งค์ฐ ๋๋ญ
๋๋ค(๊ทธ๋ฆฌ๊ณ ์๋ง๋ ์ด์ ๋ํ ์ด์ ๊ฐ ์์ ๊ฒ์
๋๋ค: For ๋ฃจํ๊ฐ ํจ์ฌ ๋ ์ต์ ํ๋์ด ์๊ธฐ ๋๋ฌธ์ผ ๊ฒ์
๋๋ค). ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋์ ๊ธฐ๋ฅ์ด ์๋๋๋ค! ๋๋ ๋ ๋์๊ฐ ์ด๋ฌํ ๊ธฐ๋ฅ์ด ๋๋๋ค๊ณ ๋งํ ๊ฒ์
๋๋ค! Android ์ฑ์ ์์ฑํ ๋ Android API์ ๊ฑฐ์ ์ด๋์๋ ์ด๊ฑฐํ์ด ์ฌ์ฉ๋์ง ์๋๋ค๋ ์ฌ์ค์ ์๊ฒ ๋๋ฉด ์ ๋ง ๊ณ ํต์ค๋ฝ์ต๋๋ค! Android๋ ์๋
์ ์ ์์ฑ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๊ณตํํฉ๋๋ค. ๋๋ฅผ ๊ฐ์ฅ ์ง์ฆ๋๊ฒ ํ๋ ๊ฒ์ Android์์ ๊ฒฐ๊ณผ์ ๋ํ ํ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ผ ํ ๋๋ง๋ค ๋ค์๊ณผ ๊ฐ์ด ์์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๋ ๊ฒ์
๋๋ค.
int PICK_IMAGE_FROM_GALLERY = 3000 ํ, ์ด๊ฑฐ ๋ฏธ์น ์ง์ด์ผ! ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ ์ธ๊ณ ์ฌ๋๋ค์ด ๊ทธ๊ฒ์ ๋ฐ์๋ค์ด๊ฒ ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋. Java์๋ ๊ธฐ๋ณธ ์ด๋ฒคํธ ๊ตฌํ๋ ๋ถ์กฑํฉ๋๋ค! C#๊ณผ ๊ฐ์ ์ด๋ฒคํธ์ ๋๋ฆฌ์๊ฐ ์์๋ค๋ฉด...(์๋ฐ ์ธ์ด ์ ์์ ์ฌ๋ฌ๋ถ, ์ด ๊ธ์ ์ฝ๊ณ ๊ณ์๋ค๋ฉด ์ด๋ฒคํธ๋ฅผ ์ถ๊ฐํ์
์ผ ํฉ๋๋ค! ์ด๋ฏธ ์ด๋ฒคํธ๊ฐ ์๊ฑฐ๋ ์์
์ค์ด๋ผ๋ฉด ์๋ ค์ฃผ์ธ์. ). ์ด์ Java ์ํ๊ณ์ ๊ฐ์ฅ ํฐ ๊ฒฐํจ์ด ๋ฌด์์ธ์ง ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ ์ ์๋ฅ ๋น์น!!! Oracle ์น์ฌ์ดํธ์ ์ด์์ ํ๊ณ ๋์์ด ๋์ง ์๋ ๋ฌธ์๋ 2007๋
์์ค์ผ๋ก ๋ณผ ๋ ์ด๋ฆฌ์๊ณ ์๋์ ๋ค๋จ์ด์ ธ ๋ณด์
๋๋ค. ํญ์ ์ฝ๋ ์์ ๊ฐ ์๋ ๊ฒ์ ์๋๋๋ค. ์๋์ ์ผ๋ก ํน์ดํ ๊ธฐ๋ฅ์ด๋ API ๋ฉ์๋๋ฅผ ์ฐพ๊ธฐ ์์ํ๋ฉด ์ง๋ฃจํ ์ ์, ์ ์ธ, ์ธ์, ๊ทธ๊ฒ์ด ์ํ ํจํค์ง๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ๊ทธ๊ฒ ์ ๋ถ์
๋๋ค. ๋๋ ์ด๊ฒ์ด ํฐ๋ฌด๋์๋ค๊ณ ์๊ฐํ๋ค. ์ด๊ฒ์ด ํฐ๋ฌด๋์๋ค๊ณ ์๊ฐํ์ง ์๋์? ์ฝ๋ ์กฐ๊ฐ์ด ์๋์? ๋ฐ๋ผ์ ์ฐ๋ฆฌ ๊ฐ๋ฐ์๋ StackOverflow์ ๊ฐ์ ํฌ๋ผ์ด๋ TutorialsPoint์ ๊ฐ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์น์ฌ์ดํธ์ ํฌ๊ฒ ์์กดํด์ผ ํฉ๋๋ค. ๋๋ก๋ ์ด ๊ธฐ๋ฅ์ ๋ณด์ฌ์ฃผ๋ ์ข์ ์ฝ๋ ์์ ๊ฐ ์์ด ์ ๋ง ๋์์ด ๋์ง๋ง, ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ๊ทธ๋ค์ง ์ ์ฉํ์ง ์์ต๋๋ค. C#์ผ๋ก ์์ฑ๋ Microsoft ์ค๋ช
์์ Java๋ก ์์ฑ๋ Oracle ์ค๋ช
์๋ฅผ ๋น๊ตํด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค. ์ฒ๊ตญ๊ณผ ๋
! ๋๋ฅผ ๋ฏฟ์ง ๋ชปํฉ๋๊น? ๊ฐ์ ํ์ธํด ๋ณด์ธ์:
Oracle ๊ณผ
Microsoft. Microsoft ์ฌ์ดํธ์ ์ค๋ช
์๊ฐ ์ ๋ง ๋ฉ์ ธ ๋ณด์
๋๋ค! ๋คํฌ ๋ชจ๋๋ ์์ด์! ์ฐ๋ฆฌ ๊ฐ๋ฐ์๋ค์ ๋คํฌ ๋ชจ๋์ ์ด๊ดํฉ๋๋ค. Oracle ๋ฌธ์๋ ์ด๋ป์ต๋๊น? ๋ง์๋๋ฆฐ๋๋ก 2007๋
์๋ ๋จ์์์ต๋๋ค. ๊ทธ ๋น์์๋ ๋คํฌ ๋ชจ๋๊ฐ ์์์ ์๋ ์์ฃ ? ๊ทธ๋์ ์ ๋ Java๊ฐ ํ๋ฅญํ๋ค๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค! ๊ทธ๋ฌ๋ ์ด ์ธ์ด๋ ์ค๋๋ ๋ฌธ์๋ก ์ธํด ํฐ ์ด๋ ค์์ ๊ฒช๊ณ ์์ต๋๋ค. ์ด๊ฒ๋ค์ ๋๋ถ๋ถ ์ค๋ ๋, ๋ณ์, ์ด๊ฑฐํ๊ณผ ๊ฐ์ด ๊ผญ ํ์ํ ์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ์กฐํ์ง ์๋ ์ค๋๋ ๋ฌธ์์ ๋งค๋ด์ผ์
๋๋ค. ์์ฆ ์ฌ๋๋ค์ Java๊ฐ ์ธ๋ชจ์์ด์ง๊ณ Kotlin์ผ๋ก ๋์ฒด๋ ๊ฒ์ด๋ผ๊ณ ๋งํ์ง๋ง ์ ๋ ์ด์ ๋์ํ์ง ์์ต๋๋ค. ์ด๊ฒ์ด ์ฌ์ค์ด๋๋ผ๋ ๊ทธ๋ ์ค๋ซ๋์ ๊ทธ๋
๋ฅผ ๋์ ํ์ง ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด๊ฒ์ ์์ฃผ ์ค๋ ์ธ์์ด ๊ฑธ๋ฆด ๊ฒ์
๋๋ค. Scala๋ ์ด๋ฅผ ๋์ฒดํ๋ ค๊ณ ํ๋ ๊ฒ์ ๊ธฐ์ตํ์๋์? ๊ทธ๋์ ๊ทธ ๊ฒฐ๊ณผ๋ ๋ฌด์์
๋๊น? Java๋ ์ฌ์ ํ ์ ์ฒด JVM ์ํ๊ณ๋ฅผ ์ง๋ฐฐํ๊ณ ์์ต๋๋ค. ๋๋ Scala๊ฐ ์ฃผ๋ก ๊ธฐ๋ฅ๋ฉด์์ Java์ ๋งค์ฐ ๋ค๋ฅด๋ค๋ ๊ฒ์ ์ธ์ ํฉ๋๋ค. ์ด์ ๋ง์ง๋ง์ผ๋ก... Java ์ธ๊ณ์ ๊ทธ ์ด๋ค ๊ฒ๋ณด๋ค ๋์๊ฒ ๋ ๋ง์ ๊ฐ๋์ ์ฃผ๋ ๊ฒ์ด ํ๋ ๋ ์์ต๋๋ค. ์ด๊ฒ์ JDK๋ฅผ ์ป๋ ๊ฒ์
๋๋ค. JDK๋ฅผ ๋ค์ด๋ก๋ํ๋ ๊ฒ์ด ์ ๊ทธ๋ ๊ฒ ์ด๋ ค์ด๊ฐ์? ์ ๋ง์ JDK๊ฐ ํ์ํ ๊ฒฝ์ฐ ๊ฐ๋จํ Google ๊ฒ์์ ํตํด Oracle ์น์ฌ์ดํธ๋ก ์ฐ๊ฒฐ๋๊ณ ๊ทธ๊ณณ์ผ๋ก ๊ฐ์ ํ์ํ JDK ๋ฒ์ ์ ์ฐพ์ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ์ง๊ธ๊น์ง๋ ๋ชจ๋ ๊ฒ์ด ์๋์ ์ผ๋ก ์ฝ์ง๋ง ๋ค์ด๋ก๋ํ๋ ค๋ฉด ๋ฑ๋ก์ด ํ์ํฉ๋๋ค. JDK๋ฅผ ๋ค์ด๋ก๋ํ๋ ๋์ Oracle์ ๊ณ์ ์ ๋ง๋ ๋ค์ ๋งค์ฃผ ์ด๋ฉ์ผ์ ์ฒ๋ฆฌํด์ผ ํ๋ ์ด์ ๋ ๋ฌด์์
๋๊น? Java๋ ์ฒ์๋ถํฐ ์คํ ์์ค๋ผ๋ ์ ์ ๋ช
์ฌํ์ธ์! 2015๋
์์ผ ์คํ์์ค๋ก ์ ํ๋ C#๊ณผ ๋ฌ๋ฆฌ ๊ทธ๋์ ๋ฒ์จ ๋ต๋ตํด์ ๊ตฌ๊ธ ๊ฒ์๊ฒฐ๊ณผ์ ๋์ค๋ ๋ ๋ฒ์งธ ์น์ฌ์ดํธ๋ก ๊ฐ๋ด
๋๋ค. OpenJDK ์ฌ์ดํธ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค. ๊ฑฐ๊ธฐ์์ JDK๋ฅผ ์ฐพ์ "๋ค์ด๋ก๋"๋ฅผ ํด๋ฆญํฉ๋๋ค. ๊ทธ๋ฌ๋ (๋๋๊ฒ๋!) ๋ค๋ฅธ ์ฌ์ดํธ์ JDK ๊ตฌํ์ ๋ํ ๋งํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค! ์ฌ์ดํธ ์ค์๋ ์ ์ฃผ๋ฐ์ Oracle์ด ์์ง๋ง Red Hat ์ฌ์ดํธ์ ๋ํ ๋งํฌ๋ ์์ต๋๋ค. ์, Red Hat์ ํ๋ฅญํฉ๋๋ค. ์ ์ธ๊ณ ์คํ์์ค ๊ธฐ์
์ ์ ๊ตฌ์ ์ค ํ๋์
๋๋ค. ์ข์์, ๊ทธ ํ์ฌ ์น์ฌ์ดํธ๋ก ๊ฐ๋ณผ๊ฒ์! ๊ฑฐ๊ธฐ์์ ๋ค์ด๋ก๋ํ๊ฒ ์ต๋๋ค! ์ด ๋งํฌ๋ฅผ ํด๋ฆญํ๊ณ ๋ด๊ฐ ์ฐพ๊ณ ์๋ JDK ๋ฒ์ ์ ์ฐพ์ ๋ค์ ๋ฌด์์ ์ถ์ธกํ ๊น์? ๋๋ ๊ฑฐ๊ธฐ ๋ฑ๋กํด์ผ ํ๋๋ฐ... (๊ทน์ ์ธ ๋ฉ์ถค) ์ด๊ฑด ์ ๋ง ์ฌํ๋ค... ์ ์ฅ! ์ด ์ฌ๋๋ค์๊ฒ ๋ฌด์จ ๋ฌธ์ ๊ฐ ์์ต๋๊น? ๋ง์ง๋ง์ผ๋ก Chocolatey๋ฅผ ํฌ๊ธฐํ๊ณ ์ค์นํฉ๋๋ค(apt-get๊ณผ ๋น์ทํ์ง๋ง Windows์ฉ์
๋๋ค. Windows์ฉ์ผ๋ก ๋๋ฆฌ ๋ฐฐํฌ๋๊ณ ์ฌ์ฉ๋๋ ์ต์ด์ ํจํค์ง ๊ด๋ฆฌ์๋ผ๊ณ ์๊ฐํฉ๋๋ค). ๋ฐ๋ผ์ ์ด ๋ชจ๋ ์์
์ด ๋๋๋ฉด PowerShell์์ choco install jdk-1.8๊ณผ ๊ฐ์ ๊ฐ๋จํ ๋ช
๋ น์ ์์ฑํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ๊ทธ๊ฒ์ํ๋ค! (C# ๊ฐ๋ฐ์๋ผ๋ฉด ๋ฑ๋ก ๋ฑ์ ์ ์ฐจ ์์ด ๋จ 2~3๋ฒ์ ํด๋ฆญ๋ง์ผ๋ก .Net SDK๋ฅผ ์ป๋ ๊ฒ์ด ์ผ๋ง๋ ์ฌ์ด์ง ์์ค ๊ฒ์
๋๋ค.) ๋์ ๊ธด ํธ์ธ์ฅ๋ด์ ๋ง๋ฌด๋ฆฌํ์๋ฉด: Java๋ ํ๋ฅญํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์
๋๋ค. ์ด ์ ํ์ ์๋ฆ๋ต๊ณ ์์ ์ ์ด๋ฉฐ (์ ์๊ฐ์๋) ์ธ๊ณ ์ต๊ณ ์ IDE, ์ฆ JetBrains์ ์ ์๋ ค์ง IntelliJ IDEA๋ฅผ ๊ฐ์ถ๊ณ ์์ต๋๋ค. ๋ํ Java์๋ ๋งค์ฐ ์ ์ฉํ ์ปค๋ฎค๋ํฐ์ ํฌ๊ณ ๋ค์ํ ์ํ๊ณ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ ์ด๊ฒ์ C# ๊ฐ๋ฐ์๋ผ๊ณ ๋งํ๊ณ ์์ต๋๋ค... ํ์ง๋ง ๋ฌธ์๋ฅผ ์
๋ฐ์ดํธํด์ผ ํฉ๋๋ค. ์ฝ๋ ์์. API. JDK๋ฅผ ๋ ์ฝ๊ฒ ์ป์ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค. ์ ๋ฐ์ ์ผ๋ก Java๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ผ๋ก ์์ง์ด๊ณ ์์ต๋๋ค. ์ต๊ทผ ์ธ๊ธฐ๊ฐ ๋ค์ ํ๋ฝํ์ ์๋ ์์ง๋ง ๊ทธ๋ ๋ค๊ณ Java๊ฐ ์ฌ๋ผ์ง์ง๋ ์์ต๋๋ค. ์๋
๋์ ์ด ์ธ์ด๋ ์ธ๊ณ ์ต๊ณ ์ ์ธ์ด ๋ชฉ๋ก์ ์ต์์์ ์์์ต๋๋ค! ์ ๋ ํญ์ Java๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์์ผ๋ก๋ ๊ณ์ ์ฌ์ฉํ ์์ ์
๋๋ค.
2021๋
์ ๊ณ ๋ คํด์ผ ํ ์ธ ๊ฐ์ง ์๋ก์ด Java ๋๊ตฌ
์ถ์ฒ:
OpenSource ์ต๊ทผ ์ธ๊ณต์ง๋ฅ, ๋จธ์ ๋ฌ๋, ์ฟ ๋ฒ๋คํฐ์ค ๊ด๋ จ ํ๋ก์ ํธ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ํ๋ฐํ ์ฌ์ฉ๋๋ Python, Go, Node.js์ ์ธ๊ธฐ์๋ ๋ถ๊ตฌํ๊ณ Java ๊ธฐ์ ์ ์ฌ์ ํ โโ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์์ ํต์ฌ์ ์ธ ์ญํ ์ ํ๊ณ ์์ต๋๋ค. Developer Economics์ ๋ฐ๋ฅด๋ฉด 2020๋
3๋ถ๊ธฐ์ ์ ์ธ๊ณ์ ์ผ๋ก 800๋ง ๋ช
์ ์ํฐํ๋ผ์ด์ฆ Java ๊ฐ๋ฐ์๊ฐ ์์์ต๋๋ค.
Java ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ 25๋
๋๊ฒ ์ฌ์ฉ๋์ด ์์ผ๋ฉฐ ์ง์์ ์ผ๋ก ์
๋ฐ์ดํธ๋๊ณ ์์ต๋๋ค. ๊ทํ์ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ๊ฒฝ๋ ฅ์ ๊ฐํํ ์ ์๋ ์๋ก์ด ๋๊ตฌ์ ํ๋ ์์ํฌ๊ฐ ๋ฑ์ฅํ๊ณ ์์ต๋๋ค. ๋๋ถ๋ถ์ Java ํ๋ซํผ์ ์๋ฒ๋ ๊ฐ์ ๋จธ์ ์์ ์คํ๋๋๋ก ์ค๊ณ๋ ๋์ ๋์์ผ๋ก ์ฅ๊ธฐ ์คํ ํ๋ก์ธ์ค๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค. 2014๋
์ Kubernetes ์ปจํ
์ด๋๊ฐ ๋ฑ์ฅํ๋ฉด์ ์ด๋ฌํ ์ํฉ์ด ๋ฐ๋์์ต๋๋ค. ์ด์ Kubernetes์์ Java๋ฅผ ์คํํ ๋ ๊ฐ์ฅ ํฐ ๊ณผ์ ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ค์ด๊ณ , ์์ ๋ฐ ์๋ต ์๊ฐ์ ๊ฐ์ํํ๊ณ , ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ฌ ์ ํ๋ฆฌ์ผ์ด์
์ฑ๋ฅ์ ์ต์ ํํ๋ ๊ฒ์
๋๋ค.
์ธ ๊ฐ์ง ์๋ก์ด Java ํ๋ ์์ํฌ ๋ฐ ๋๊ตฌ
Java ๊ฐ๋ฐ์๋ ํญ์ ์ธ๊ธฐ ์๋ ๋๊ตฌ์ ์คํ ์์ค ํ๋ก์ ํธ๋ฅผ Java ์ ํ๋ฆฌ์ผ์ด์
์ ํตํฉํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์์ต๋๋ค. ์๋ก์ด ๊ณ ์ฑ๋ฅ ๋๊ตฌ๋ ๊ฐ๋ฐ ์์ฐ์ฑ์ ํฌ๊ฒ ๋์ด๊ณ ๋ ๋ง์ ํ์ฌ์ ๊ฐ์ธ ๊ฐ๋ฐ์๊ฐ Java ์คํ์ ์ฌ์ฉํ๋๋ก ์ฅ๋ คํฉ๋๋ค. ์ค๋์ ์ธ ๊ฐ์ง ์๋ก์ด Java ํ๋ ์์ํฌ์ ๋๊ตฌ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
Quarkus๋ ํด๋ผ์ฐ๋ ๋ง์ดํฌ๋ก์๋น์ค ๋ฐ ์๋ฒ๋ฆฌ์ค ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ์ํด ์ค๊ณ๋์์ต๋๋ค. Kubernetes์ ๊ฐ์ ์ปจํ
์ด๋ ์ค์ผ์คํธ๋ ์ด์
ํ๋ซํผ์์ ๋น ๋ฅธ ๋ถํ
์๊ฐ, ์์ RSS(๋ฉ๋ชจ๋ฆฌ ์์ฃผ ์ธํธ) ํฌ๊ธฐ ๋ฐ ๋์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ๋๋ฅผ ์ ๊ณตํฉ๋๋ค. JRebel์ 9์ฐจ ์ฐ๋ก ๋ณด๊ณ ์์ ๋ฐ๋ฅด๋ฉด Java ๊ฐ๋ฐ์์ Quarkus ์ฌ์ฉ๋์ 6%(์ ๋
์๋ 1% ๋ฏธ๋ง) ์ฆ๊ฐํ์ต๋๋ค. Micronaut์ Vert.x๋ ๊ฐ๊ฐ 4%์ 2%๋ก ์ฑ์ฅํ์ต๋๋ค(์๋
- ์ฝ 1% ์ฆ๊ฐ).
Eclipse JKube๋ฅผ ์ฌ์ฉํ๋ฉด Java ๊ฐ๋ฐ์๋ Docker, Jib ๋๋ Source-To-Image ๋น๋ ์ ๋ต์ ์ฌ์ฉํ์ฌ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ Java ์ ํ๋ฆฌ์ผ์ด์
์ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ
์ด๋ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๋ํ ์ด ๋๊ตฌ๋ ์ปดํ์ผ ํ์์ Kubernetes ๋ฐ OpenShift ๋งค๋ํ์คํธ๋ฅผ ์์ฑํ๊ณ ๋๋ฒ๊น
, ๋ชจ๋ํฐ๋ง ๋ฐ ๋ก๊น
๋๊ตฌ์ ๋ํ ๊ฒฝํ์ ํฅ์์ํต๋๋ค.
MicroProfile์ ์๋ก์ด ํ๋ ์์ํฌ๋ฅผ ๋์
ํ๊ฑฐ๋ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฆฌํฉํฐ๋งํ์ง ์๊ณ ๋ Java ๋ง์ดํฌ๋ก์๋น์ค์ ์ํฐํ๋ผ์ด์ฆ ์ํคํ
์ฒ ์ต์ ํ์ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ๋ํ MicroProfile ์ฌ์(์: Health, Open Tracing, Open API, Fault Tolerance, Metrics, Config)์ Jakarta EE ๊ตฌํ์ ๋ง์ถฐ ๊ณ์ ๋ฐ์ ํ๊ณ ์์ต๋๋ค.
๊ฒฐ๋ก
์ด๋ค Java ํ๋ ์์ํฌ๋ ๋๊ตฌ๊ฐ ์ํฐํ๋ผ์ด์ฆ Java ๊ฐ๋ฐ์์๊ฒ ๊ฐ์ฅ ์ ํฉํ์ง ๋งํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค. Java ์คํ์ ๊ฐ์ ํ๊ณ ๊ธฐ์
๋น์ฆ๋์ค ์ฑ์ฅ์ ๊ฐ์ํํ ์ ์๋ ๊ธฐํ๊ฐ ์๋ ํ ์๋ก์ด ํ๋ ์์ํฌ, ๋๊ตฌ ๋ฐ ํ๋ซํผ์ด ๋ฑ์ฅํ ๊ฒ์ผ๋ก ๊ธฐ๋ํ ์ ์์ต๋๋ค. 2021๋
์ Java ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ์ ํ ์ ์๋์ง ํ์ธํด ๋ณด์ธ์.
GO TO FULL VERSION