JavaRush /Java Blog /Random-KO /์ปคํ”ผ ๋ธŒ๋ ˆ์ดํฌ #131. ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์—์„œ Java์˜ ์—ญํ• . ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์žฅ...

์ปคํ”ผ ๋ธŒ๋ ˆ์ดํฌ #131. ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์—์„œ Java์˜ ์—ญํ• . ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์žฅ์ ๊ณผ ๋‹จ์ 

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค

์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์—์„œ Java์˜ ์—ญํ• 

์ถœ์ฒ˜: DZone Java๋Š” ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ธฐ์—…, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Java๋Š” ๋ฐ์ดํ„ฐ ๊ณผํ•™์—์„œ AR/VR์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ์ฃผ์š” ๊ธฐ์ˆ  ์‚ฐ์—…์— ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Java๋ฅผ ์‚ฌ์šฉํ•œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์ด ์ด ์–ธ์–ด์˜ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€์ด์ง€๋งŒ ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋„ Java๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ์˜์—ญ ์ค‘ ํ•˜๋‚˜๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ์ปคํ”ผ ๋ธŒ๋ ˆ์ดํฌ #131.  ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์—์„œ Java์˜ ์—ญํ• .  ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์žฅ์ ๊ณผ ๋‹จ์  - 1์ง€๋‚œ 20๋…„ ๋™์•ˆ Java ๊ฐœ๋ฐœ์ด ์›น๊ณผ ๋ชจ๋ฐ”์ผ ์žฅ์น˜์—์„œ ์ธ๊ธฐ๋ฅผ ์–ป์€ ์ด์œ ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์›น๊ณผ ๋ชจ๋ฐ”์ผ์—์„œ Java๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ๋œ ์ด์œ  ์ค‘ ํ•˜๋‚˜๋Š” ๊ณ ์„ฑ๋Šฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ฒ˜๋ฆฌ ์˜ค๋ฅ˜ ์—†์ด ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ด์œ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค:

1. ์˜คํ”ˆ์†Œ์Šค

์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ธ Java์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ์งธ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ๋น„์šฉ์„ ์ ˆ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‘˜์งธ, ์˜คํ”ˆ ์†Œ์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๊ฐ€ ์‰ฝ๊ฒŒ ์–ธ์–ด๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์ž์ฃผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Java์—๋Š” ์ฝ๊ธฐ ์‰ฌ์šด ๊ตฌ๋ฌธ์ด ์žˆ์–ด ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์žฅ์น˜์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฐœ๋ฐœ์ž๋Š” ๊ธฐ์กด ์–ธ์–ด ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ด๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ํฌ๋กœ์Šค ํ”Œ๋žซํผ

Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋˜ ๋‹ค๋ฅธ ์ด์ ์€ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์–ธ์–ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” Windows์—์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  macOS ๋ฐ Linux์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” "ํ•œ ๋ฒˆ ์ž‘์„ฑํ•˜๋ฉด ์–ด๋””์—์„œ๋‚˜ ์‹คํ–‰"์ด๋ผ๋Š” ์›์น™์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ์—์„œ ์ž‘์—…ํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฌ์›Œ์ง€๊ณ  ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ์—์„œ์˜ ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹จ์ˆœํ™”๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐœ๋ฐœ์ž๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋‹ค์–‘ํ•œ ํ™”๋ฉด ํฌ๊ธฐ์™€ ์šด์˜ ์ฒด์ œ์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‹คํ–‰๋˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ๋ชจ๋ฐ”์ผ ์นœํ™”์ 

Java๋Š” ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. Android ์•ฑ ๊ฐœ๋ฐœ์ž๋Š” ๊ตฌํ˜„ํ•˜๊ธฐ ์‰ฝ๊ณ  ๋ณด์•ˆ ๊ธฐ๋Šฅ๊ณผ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ Java ์–ธ์–ด๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Android์—์„œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ™•์žฅํ•˜๋ ค๋ฉด ๊ฐ•๋ ฅํ•œ ์–ธ์–ด๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ Java๋Š” ๋†€๋ผ์šด ํ™•์žฅ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Android ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค๋„ ๋‹จ์ˆœํ™”๋ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์€ ์ด๊ฒƒ์ด ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์•ˆ์ •์ ์ด๊ณ  ์—ญ๋™์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ผ๋Š” ๊ฒƒ์„ ์•”์‹œํ•ฉ๋‹ˆ๋‹ค.

4. ๋„๊ตฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Java์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์žฅ์  ์ค‘ ํ•˜๋‚˜๋Š” ๋‹ค์–‘ํ•œ ๋„๊ตฌ์™€์˜ ํ˜ธํ™˜์„ฑ์ž…๋‹ˆ๋‹ค. Spring, Hibernate, Struts, Spark ๋“ฑ์˜ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ํฌ๊ฒŒ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชจ๋“  ๋„๊ตฌ๋Š” ๋Œ€ํ™”ํ˜• ๋ฐ ๋™์  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Apache Commons, Java Standard Libraries, Maven, Jackson ๋“ฑ๊ณผ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. ํ™œ๋ฐœํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ

์ „ ์„ธ๊ณ„์—๋Š” 760๋งŒ ๋ช… ์ด์ƒ์˜ Java ๊ฐœ๋ฐœ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ง€์†์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์—ฌ๊ธฐ์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. Java๋Š” 6๊ฐœ์›”๋งˆ๋‹ค ์—…๋ฐ์ดํŠธ๋˜๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋Š” ๋น ๋ฅด๊ฒŒ ํ•™์Šตํ•˜๊ณ  ๋” ๋‚˜์€ ์ œํ’ˆ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Java ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ์ฐพ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์—์„œ Java์˜ ๋ถ€์ƒ

1995๋…„ Sun Microsystems์—์„œ ๊ฐœ๋ฐœ๋œ ์ด๋ž˜๋กœ Java ์–ธ์–ด๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—…๊ณ„์˜ ์šฐ์„  ์ˆœ์œ„ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  ์ „ ์„ธ๊ณ„์˜ ๊ธฐ์—…๋“ค์€ ์ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. Google, Netflix, Spotify ๋ฐ Pinterest๋Š” ๊ธฐ์ˆ  ์Šคํƒ์—์„œ Java๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์†Œ์ˆ˜์˜ ํšŒ์‚ฌ์ž…๋‹ˆ๋‹ค. ์ „๋ฌธ๊ฐ€๋“ค์€ IT ๋ถ„์•ผ์˜ ๊ธฐ์—… ์ค‘ 60% ์ด์ƒ์ด ์–ด๋–ค ํ˜•ํƒœ๋กœ๋“  Java๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถ”์ •ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์›น ๊ฐœ๋ฐœ์˜ ๋‹ค๋ฅธ ์˜์—ญ, ์ฆ‰ ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…, ์†Œ์…œ ๋ฏธ๋””์–ด, ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ, AR, VR ๋“ฑ์—์„œ ์ฑ„ํƒ๋˜์–ด ์ธ๊ธฐ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ํ•„์š”ํ•œ ๊ธฐ์—…์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์šฐ์ˆ˜ํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. JavaScript์™€ ๊ฒฐํ•ฉํ•˜๋ฉด Java๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์„ฑ๋Šฅ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ์‹  ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ Java์˜ ๋ถ€์ƒ

์›น ๊ฐœ๋ฐœ ๋ฐ ๋ชจ๋ฐ”์ผ ๊ฐœ๋ฐœ ์™ธ์—๋„ Java๋Š” ํ˜„๋Œ€ ๊ธฐ์ˆ  ์„ธ๊ณ„์—์„œ ๋‘๊ฐ์„ ๋‚˜ํƒ€๋ƒˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  Java๋Š” ๊ณผํ•™ ์‘์šฉ ๋ถ„์•ผ์— ๋งค์šฐ ์œ ์šฉํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๊ณผํ•™ ์ปดํ“จํŒ…์„ ์œ„ํ•œ ์•ˆ์ „ํ•˜๊ณ  ๋น ๋ฅด๋ฉฐ ํœด๋Œ€ ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. MATLAB์€ Java ๊ธฐ๋ฐ˜ ๊ณผํ•™ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์œ„ํ•œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
  • Java๋Š” ๊ณผํ•™ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ”„๋ŸฐํŠธ์—”๋“œ ๋ฐ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์—๋„ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ŸฐํŠธ์—”๋“œ ๊ฐœ๋ฐœ์—๋Š” Struts ๋ฐ Java Server Pages๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ณผํ•™ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์—๋Š” Java Core๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

  • Hadoop ๋น…๋ฐ์ดํ„ฐ ํ”Œ๋žซํผ์€ Java๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜คํ”ˆ ์†Œ์Šค์ด์ž ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋น… ๋ฐ์ดํ„ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ดˆ์„์ž…๋‹ˆ๋‹ค. Scala์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” Java Virtual Machine์—์„œ ์‰ฝ๊ฒŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • ๊ฒŒ์ž„์€ Java๊ฐ€ ๋‹ค์–‘ํ•œ ๊ฒŒ์ž„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋น ๋ฅด๊ฒŒ ์„ฑ์žฅํ•˜๋Š” ์‹ ํฅ ์‚ฐ์—…์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ตœ๋Œ€ ์˜คํ”ˆ ์†Œ์Šค 3D ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ์—”์ง„์ธ jMonkeyEngine์— ๋Œ€ํ•œ ์ง€์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ DVM(Dalvik Virtual Machine)์€ ์ฃผ๋กœ Java์—์„œ ์ง€์›๋˜๋ฉฐ Android์šฉ ๋Œ€ํ™”ํ˜• ๊ฒŒ์ž„์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์žฅ์ ๊ณผ ๋‹จ์ 

์ถœ์ฒ˜: Dev.to ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์ „ํ†ต์ ์ธ ํšŒ์˜๋ก ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ €๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ด์ ์„ ์ธ์‹ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์„ค๋ช…ํ•˜๋Š” ๋Œ€๋žต์ ์ธ ์žฅ์  ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ์ปคํ”ผ ๋ธŒ๋ ˆ์ดํฌ #131.  ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์—์„œ Java์˜ ์—ญํ• .  ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์žฅ์ ๊ณผ ๋‹จ์  - 2

์•ˆ์ „ํ•œ ๋™์‹œ์„ฑ

๊ธฐ๋Šฅ์  ์ ‘๊ทผ ๋ฐฉ์‹์€ ์•ˆ์ „ํ•œ ๋™์‹œ์„ฑ, ์ฆ‰ ์Šค๋ ˆ๋“œ ์ถฉ๋Œ์ด๋‚˜ ์ˆ˜์ • ์ถฉ๋Œ์„ ์ผ์œผํ‚ค์ง€ ์•Š๊ณ  ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ์—์„œ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์žฅ๋ คํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๊ฐ์ฒด ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ๋‹ฌ๋ฆฌ ์ฒ˜๋ฆฌ ์ค‘์— ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ž…๊ตฌ์™€ ์ถœ๊ตฌ๊ฐ€ ์žˆ๊ณ , ๋„ˆ ๋•Œ๋ฌธ์— ์ž…๊ตฌ๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒŒ ์•„๋‹ˆ๋‹ค. Java์—์„œ๋Š” "์Šค๋ ˆ๋“œ๋กœ๋ถ€ํ„ฐ ์•ˆ์ „ํ•œ" ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ํ•ด๋‹น ๊ฐœ์ฒด๊ฐ€ ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค๊ณ  ๋ณด์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์—์„œ๋Š” ์š”์†Œ๋ฅผ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฃจํ”„๋ฅผ ์Šค๋ ˆ๋“œ ๋‚ด๋ถ€์˜ ๋žŒ๋‹ค ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‰ฝ๊ฒŒ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
for( String item : items ) {
   process(item);
}
์ด์ œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฉ๋‹ˆ๋‹ค.
items.parallelStream().forEach( item -> process(item) );

๋น ๋ฅธ I/O

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ๊ณผ ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋” ์ด์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ˜ธ์ถœ๊ณผ ๊ฐ™์€ I/O ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, CPU์™€ ๋Œ€์—ญํญ ์‚ฌ์šฉ๋Ÿ‰์„ ์ตœ๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ณ ์„ฑ๋Šฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ ์ด๋Š” ๋ถ„๋ช…ํ•œ ์ด์ ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ํ˜ธ์ถœ์˜ ์‹ค์ œ ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฏธ๋ž˜์˜ ํŠน์ • ์‹œ์ ์— ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒ ๋‹ค๋Š” ์•ฝ์†์ธ Future๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์•„์ด๋””์–ด๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ๋ฏธ๋ž˜์˜ ์–ด๋Š ์‹œ์ ์—์„œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ˜ํ™˜ ๊ฐ’์„ ์–ป์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ”„๋กœ์„ธ์„œ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋˜๋Š” REST ํ˜ธ์ถœ์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

ํ‘œํ˜„์˜ ๊ฐ„๊ฒฐ์„ฑ

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๋Š” ๋ณต์žกํ•œ ์•„์ด๋””์–ด๋ฅผ ์šฐ์•„ํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด ์ž‘์—…์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, for ๋ฃจํ”„์™€ ๊ฐ™์€ ๊ณตํ†ต ๊ตฌ์„ฑ์€ ๋ฃจํ”„๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๊ณตํ†ต for ์—ฐ์‚ฐ์„ ์ถ”์ƒํ™”ํ•˜๋Š” ์Šค๋ ˆ๋“œ๋กœ ๋Œ€์ฒด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Java์— Lambda ํ•จ์ˆ˜์™€ ์Šค๋ ˆ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ์ด์ „์—๋Š” ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋˜ ์•„์ด๋””์–ด ํ‘œํ˜„ ๋Šฅ๋ ฅ์ด ํ™•์žฅ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์€ ์˜์‹ฌ์˜ ์—ฌ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์™œ ๊ธฐ๋Šฅ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

์œ„์˜ ๋‚ด์šฉ์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ๋ง์”€๋“œ๋ฆฌ์ž๋ฉด, ํ•จ์ˆ˜ํ˜• ์ฝ”๋”ฉ์—๋Š” ๋งŽ์€ ์ด์ ์ด ์žˆ์œผ๋ฏ€๋กœ ์ด ๊ธ€์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ํ•˜๋‚˜์˜ ์‚ฌ๋ก€๋กœ ์ผ๋ฐ˜ํ™”ํ•˜๊ณ  ๋ฐ˜๋“œ์‹œ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ ๊ทธ ๋ฐ˜๋Œ€๋กœ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฐ์ •์€ ์ „ํ™˜ ์ด์œ ์™€ ์ž ์žฌ์ ์ธ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์ดํ•ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•ญ์ƒ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค

์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์ปดํ“จํ„ฐ์™€ ํ†ต์‹ ํ•˜๋ ค๊ณ  ํ•˜์‹œ๋‚˜์š”? ์ปดํ“จํ„ฐ์™€์˜ ์˜์‚ฌ์†Œํ†ต์ด ๊ทธ๋ ‡๊ฒŒ ์ค‘์š”ํ•˜๋‹ค๋ฉด ๊ธฐ๊ณ„์–ด๋กœ ์ž‘์„ฑํ•ด ๋ณด๋Š” ๊ฒƒ์€ ์–ด๋–จ๊นŒ์š”? ๋ฌผ๋ก  ์ด๊ฒƒ์€ ๋งค์šฐ ์–ด๋ ค์šด ์ผ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์ปดํ“จํ„ฐ ์–ธ์–ด๊ฐ€ ๋ฐœ๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œํ˜„์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ ์  ๋” ์ปค์ง€๊ณ  ๋ณต์žกํ•ด์ง์— ๋”ฐ๋ผ ๋ณต์žก์„ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” ์ „๋žต์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ถ”์ƒํ™”์™€ ์ •๋ณด ์€๋‹‰์„ ํ†ตํ•ด ์ด๋ฅผ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด Java์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค๋Š” ๋งค์šฐ ๋ณต์žกํ•˜์ง€๋งŒ ์ด ํด๋ž˜์Šค์˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๊ตฌํ˜„์„ ์ˆจ๊ธฐ๊ณ  ์ปจํŠธ๋กค์˜ ์™ธ๋ถ€ ์ธก๋ฉด๋งŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ค‘๊ด„ํ˜ธ ๋ฐ ๋Œ€๊ด„ํ˜ธ์™€ ๊ฐ™์€ ์–ธ์–ด ๊ธฐ๋Šฅ์€ ์กฐ๊ฑด๋ฌธ ๋ฐ ๋ฃจํ”„์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์ด์ œ ๋ฃจํ”„ ๋˜๋Š” ์žฌ๊ท€์™€ ์กฐ๊ฑด์„ ํ•จ์ˆ˜๋กœ ์˜ฎ๊น๋‹ˆ๋‹ค.
for( String item : items ) {
    System.out.println(item);
}
๊ทธ๊ฒƒ์€ ๋ฐํ˜€:
items.foreach( item -> System.out.println(item) );
์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ ๋žŒ๋‹ค ์ ‘๊ทผ ๋ฐฉ์‹์€ ํ™•์‹คํžˆ ๋” ์งง์Šต๋‹ˆ๋‹ค. ๋” ์ ์€ ์ฝ”๋“œ๋กœ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์ด์ œ ์šฐ๋ฆฌ๊ฐ€ ์•Œ์•„์•ผ ํ•  ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์— ์‹ค์ œ ๋™์ž‘์„ ์ˆจ๊ธฐ๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Java์˜ ๋ฃจํ”„๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ๋žŒ๋‹ค ํ•จ์ˆ˜๋Š” ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ์žฌ๊ท€๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์—ฌ๊ธฐ์„œ๋Š” ์ด๋ฆ„๋งŒ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:
boo.fooble( item -> System.out.println(item) );
๋” ์ด์ƒ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์ฝ์„ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์‹คํ–‰ ํ๋ฆ„์„ ์ถ”์ ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์€ ํ•จ์ˆ˜ ์—ฐ๊ฒฐ(function chaining)์œผ๋กœ, ํ•œ ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ค‘๊ฐ„ ๋ณ€์ˆ˜๋ฅผ ํ• ๋‹นํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ ํ•จ์ˆ˜์˜ ์ž…๋ ฅ์ด ๋ฉ๋‹ˆ๋‹ค.
boolean result = boo
    .fooble( /*some code*/ )
    .bobble( /*some code*/)
    .goober( /*some code*/);
์ด ์ฝ”๋“œ์˜ ์ž‘์„ฑ์ž๋Š” ๋ชจ๋“  ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ณ  ๊ทธ ๊ธฐ๋Šฅ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Š” ์ดํ•ด๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฝ”๋“œ๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์ด๊ฒƒ์ด ๋งค๊ฐœ๋ณ€์ˆ˜, ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ๊ฐ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ๊ฐ’์— ๋Œ€ํ•ด ๋งŽ์€ ๊ฒƒ์„ ์•Œ๋ ค์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์œ ํ˜•์„ ํ• ๋‹นํ•˜๋Š” ํ•ญ๋ชฉ์— ๋™์ผํ•œ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
Car car = boo.fooble( /*some parameters*/);
Tyre tyre = car.bobble( /*some parameters*/);
int pressure = tyre.goober( /*some parameters*/);
๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ต๋ช… ํ•จ์ˆ˜๋Š” ๋™์ผํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์™„๋ฒฝํ•œ ๋น„์œ ๋Š” ์•„๋‹ ์ˆ˜ ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ์ ์€ ์•„๋ž˜์— ์„ค๋ช…๋œ ํ•จ์ˆ˜์˜ ๊ธฐ๋Šฅ์„ ๋” ๊นŠ์ด ์ดํ•ดํ•˜์ง€ ์•Š์œผ๋ฉด ์•Œ ์ˆ˜ ์—†๋Š” ๊ฒฐ๊ณผ์™€ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํฌํ•จ๋œ ๊ธด ๋ฌธ์žฅ์„ ์ฝ๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋†€๋ผ์šธ ์ •๋„๋กœ ์งง์€ ์ฝ”๋“œ ์„ธ๊ทธ๋จผํŠธ์—์„œ๋Š” ํ‘œํ˜„๋ ฅ์ด ๋›ฐ์–ด๋‚˜์ง€๋งŒ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ•ต์‹ฌ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆจ๊ธฐ๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ตฌํ˜„์„ ์ดํ•ดํ•˜๊ฑฐ๋‚˜ ๋ณผ ํ•„์š”๊ฐ€ ์—†๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ์กฐ๊ฐ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‘ํ†ต ์—†์ด ํฌ๊ณ  ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์—์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํŠน์ • ์—”ํ„ฐํ‹ฐ์™€ ๊ด€๋ จ๋œ ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํŽธ๋ฆฌํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ํฌ๊ณ  ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์–ด๋–ป๊ฒŒ ๋„์›€์ด ๋˜๋Š”์ง€ ๊ฑฐ์˜ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์•„๋งˆ๋„ ์ฃผ๊ด€์ ์ธ ์ด์œ ๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹น์‹ ์˜ ๊ธฐ์ˆ ๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ๊ฐ๋™์‹œํ‚ค๋ ค๋ฉด

์ผ๋ถ€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๋Š” ์ž์‹ ์˜ ๊ธฐ์ˆ ์ด ๋„ˆ๋ฌด ๋ถˆ์•ˆํ•ด์„œ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ณต์žกํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์ข‹์€ ์ธ์ƒ์„ ์ฃผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์„ ์ž„ ๊ฐœ๋ฐœ์ž๋กœ์„œ ์ €๋Š” ์Šค๋งˆํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋Š” ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๋ฅผ ํŠน๋ณ„ํžˆ ์กด๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—๋งŒ ์ ์šฉ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์–ด๋–ค ์ฝ”๋”ฉ ์Šคํƒ€์ผ์—์„œ๋„ ๊ฐ™์€ ์ผ์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€์ง€์ž๋“ค ์‚ฌ์ด์—์„œ ์–ด๋Š ์ •๋„ ์ง€์  ํ—ˆ์˜์‹ฌ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์š”์ ์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง„๊ณต ์ƒํƒœ์—์„œ ์ž‘์—…ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด "์Šค๋งˆํŠธ" ์ฝ”๋“œ๋Š” ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ ์ฝ๊ธฐ ๋ฐ ๋ณ€๊ฒฝ๋„ ์–ด๋ ต๊ณ  ๋””๋ฒ„๊น…๋„ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ํŒ€์„ ๊ด€๋ฆฌํ•  ๋•Œ ๋ชจ๋“  ์ˆ˜์ค€์˜ ์‚ฌ๋žŒ๋“ค์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์žฅ ํ˜„๋ช…ํ•œ ๋ฐฉ๋ฒ•์€ ๊ด€๋ จ๋œ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ๋ช…ํ™•ํ•˜๊ณ  ๊ธด ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์ด๋ฉฐ, ๋”ฐ๋ผ์„œ ๋ฉ”์†Œ๋“œ ๊ธธ์ด๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. "์Šค๋งˆํŠธ" ์ฝ”๋“œ๋Š” ์ถ”๊ฐ€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ทธ๋‹ค์ง€ ์Šค๋งˆํŠธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด Perl์ด ์ˆ˜๋…„ ์ „์— ๋งŒ๋“ค์—ˆ๋˜ ๊ฐ„๊ฒฐํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ํ‘œํ˜„์— ๋Œ€ํ•œ ๋™์ผํ•œ ์ฃผ์žฅ์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค. Perl์˜ ์ง€์ง€์ž๋“ค์€ ๋‹จ ๋ช‡ ์ค„์˜ ์ฝ”๋“œ๋งŒ์œผ๋กœ ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” Perl์˜ ํ‘œํ˜„๋ ฅ์— ์ž๋ถ€์‹ฌ์„ ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์‚ฌ์‹ค์ด์—ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋Š” ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋„ ๊ฐ™์€ ํ•จ์ •์— ๋น ์กŒ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ํŒจ์…˜์ด๋‹ˆ๊นŒ

ํ•ญ์ƒ 'ํ•ซ'ํ•œ ์‹ ๊ธฐ์ˆ ์ด๋‚˜ ํŒจ๋Ÿฌ๋‹ค์ž„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ์ˆ , ์–ธ์–ด ๋ฐ ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋Š์ž„์—†์ด ๋“ฑ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋Š์ž„์—†์ด ๋„์ „ํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ์€ ๊ธฐ์ˆ  ๋ฐœ์ „์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๋กœ์„œ ์šฐ๋ฆฌ๋Š” ์ œํ’ˆ์„ ๋งŒ๋“œ๋Š” ๋ฐ ์–ด๋–ค ๊ธฐ์ˆ ์ด ํ•„์š”ํ•œ์ง€ ์Šค์Šค๋กœ ํ‰๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ง€ ์ธ๊ธฐ๊ฐ€ ๋†’๋‹ค๊ณ  ํ•ด์„œ ์ƒˆ๋กœ์šด ๋Œ€์ค‘ ๊ธฐ์ˆ ์„ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„์„ ํ˜„๋ช…ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์šฐ์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹ˆ๋ผ, ์ž‘์„ฑ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•ด ์ด ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ์žฅ๋‹จ์ ์„ ํ‰๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์œ ์ผํ•œ ์ฐธ๋œ ๊ธธ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค

์ด์ „์— ๋‚˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ์ด ์ ‘๊ทผ๋ฒ• ๋˜๋Š” ์ € ์ ‘๊ทผ๋ฒ•์„ ์œ ์ผํ•˜๊ฒŒ ์˜ฌ๋ฐ”๋ฅธ ์ ‘๊ทผ๋ฒ•์œผ๋กœ ํ™๋ณดํ•˜๋Š” ๊ฒƒ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์นœ๊ตฌ๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ์ž‘์—…๋งˆ๋‹ค ๋‹ค๋ฅธ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์ธ๊ณต ์ง€๋Šฅ์„ ์œ„ํ•ด Python๊ณผ PyTorch๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋„๊ตฌ์™€ ๊ธฐ์ˆ ๋„ ๋งŽ์ง€๋งŒ ๊ฐ๊ฐ ์žฅ์ ๊ณผ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ๋‹นํ•œ ํ™•์žฅ์„ฑ์ด ํ•„์š”ํ•œ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์˜ต์…˜์œผ๋กœ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ณ ๋ คํ•˜๋Š” ๋ฐ๋Š” ํƒ€๋‹นํ•œ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ด ์ ‘๊ทผ ๋ฐฉ์‹์ด ์ œ๊ณตํ•˜๋Š” ๋™์‹œ์„ฑ ์•ˆ์ „์„ฑ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋น„์šฉ๊ณผ ์ž ์žฌ์ ์ธ ์œ„ํ—˜๋„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ช‡ ๋…„ ์ „ ๋‚˜๋Š” ์ข…์†์„ฑ ์ฃผ์ž…๊ณผ Spring์ด ํ•ด๋‹น ์ž‘์—…์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ๋น„์Šทํ•œ ๊ฒฝํ—˜์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. Spring ์ง€์ง€์ž๋“ค์—๊ฒŒ ์ด๊ฒƒ์ด ์–ด๋–ค ์ด์ ์„ ๊ฐ€์ ธ์˜ค๋Š”์ง€ ๋ฌผ์—ˆ์„ ๋•Œ ๊ทธ๋“ค์€ ๋‚˜์—๊ฒŒ ๋ช…ํ™•ํ•œ ๋Œ€๋‹ต์„ ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๊ณต์ •ํ•œ ํ‰๊ฐ€๋ณด๋‹ค๋Š” ์ผ์ข…์˜ ์ข…๊ต์  ์บ ํŽ˜์ธ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ์ผ๋ถ€ ๊ธฐ๋Šฅ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ˆœ์ˆ˜์ฃผ์˜์ž์—๊ฒŒ์„œ ๋น„์Šทํ•œ ๊ฒƒ์„ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์ข…์†์„ฑ ์ฃผ์ž…์€ ์ข‹์€ ์•„์ด๋””์–ด์˜€์œผ๋ฉฐ ์ด์ œ ๊ทธ ์ด์ ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•œ ๋‚˜์˜ ๊ด€์‹ฌ์€ ๊ทธ๊ฒƒ์ด ์œ ์šฉํ•˜๊ณ  ์œ ํšจํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ธ์ง€ ์—ฌ๋ถ€๋ณด๋‹ค๋Š” ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”์ง€์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

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