[JAVA] java?

JAVA์˜ ๋“ฑ์žฅ


"๊ฐ€์ „์ œํ’ˆ์— ์‚ฌ์šฉํ•  ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์œ„ํ•œ ๋…๋ฆฝ์ ์ธ ์–ธ์–ด"

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

JAVA ๋ฐฐ๊ฒฝ ์ง€์‹


1. WORA (Write Once Run AnyWhere)

์ž๋ฐ”๋Š” ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, ์šด์˜์ฒด์ œ๋‚˜ ํ•˜๋“œ์›จ์–ด์— ์ƒ๊ด€์—†์ด ์ž๋ฐ” ๊ฐ€์ƒ ๊ธฐ๊ณ„๋งŒ ์žˆ์œผ๋ฉด ์–ด๋””์„œ๋‚˜ ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์— ๋™์ผํ•œ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋ฉฐ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. ๋”ฐ๋ผ์„œ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์€ ํ•œ๋ฒˆ ์ž‘์„ฑํ•˜๋ฉด(Write Once) ์–ด๋””์„œ๋“  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.(Run AnyWhere)

 

2. ๋ฐ”์ดํŠธ ์ฝ”๋“œ

๋ฐ”์ดํŠธ ์ฝ”๋“œ๋Š” ์ž๋ฐ” ๊ฐ€์ƒ ๊ธฐ๊ณ„์—์„œ๋งŒ ์‹คํ–‰๋˜๋Š” ๊ธฐ๊ณ„์–ด, ์–ด๋–ค CPU์™€๋„ ์ƒ๊ด€์—†๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ์ด๋‹ค. ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์†Œ์Šค ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํŒŒ์ผํ•˜์—ฌ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋œ ํด๋ž˜์Šค ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค. ์ด ํด๋ž˜์Šค ํŒŒ์ผ์€ CPU์— ์˜ํ•ด ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์ž๋ฐ” ๊ฐ€์ƒ ๊ธฐ๊ณ„๊ฐ€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰์‹œํ‚จ๋‹ค.

 

3. ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹

๋Ÿฐํƒ€์ž„ ์ดํ›„์— Row ๋‹จ์œ„๋กœ ํ•ด์„ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ๋™์‹œํ‚ค๋Š” ๋ฐฉ์‹์ด๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ฐ”๋กœ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ์ค‘๊ฐ„ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นœ ๋’ค, ๋Ÿฐํƒ€์ž„์— ์ฆ‰์‹œ ํ•ด์„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ฎ์€ ํผํฌ๋จผ์Šค๋ฅผ ๋ณด์ด๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ๋Ÿฐํƒ€์ž„์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋””๋ฒ„๊น… ๋ฐ ์ฝ”๋“œ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

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

 

4. ์ž๋ฐ” ๊ฐ€์ƒ๊ธฐ๊ณ„(JVM) 

์†Œํ”„ํŠธ์›จ์–ด๋กœ์„œ, ์„œ๋กœ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์ผํ•œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค. ์ž๋ฐ” ๊ฐ€์ƒ๊ธฐ๊ณ„๋Š” ํ”Œ๋žซํผ ์ข…์†์ ์ด๋‹ค.

 

5. ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐœ๋ฐœ ๋ฐ ์‹คํ–‰ 

์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์€ ๋ณดํ†ต ์—ฌ๋Ÿฌ ์†Œ์Šค ํŒŒ์ผ๋กœ ๋‚˜๋ˆ„์–ด ์ž‘์„ฑํ•˜๋ฉฐ ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ฐ ์†Œ์ŠคํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•˜์—ฌ ํด๋ž˜์Šค ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ž๋ฐ”์—์„œ๋Š” ๋‹ค๋ฅธ ์–ธ์–ด๋“ค๊ณผ ๋‹ฌ๋ฆฌ ์ด๋“ค์„ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ๋งํฌ ๊ณผ์ •์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ฐœ๋ฐœ์ž๊ฐ€ ์—ฌ๋Ÿฌ ํด๋ž˜์Šค ํŒŒ์ผ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ง€์ •ํ•˜์—ฌ ์‹คํ–‰์‹œํ‚ค๋ฉด, JVM์€ ๊ทธ ํด๋ž˜์Šค ํŒŒ์ผ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค. ์‹คํ–‰ ๋„์ค‘ ๋‹ค๋ฅธ ํด๋ž˜์Šค ํŒŒ์ผ์ด๋‚˜ JDK์˜ ํด๋ž˜์Šค ํŒŒ์ผ์ด ํ•„์š”ํ•˜๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค ํŒŒ์ผ์„ ๋กœ๋”ฉํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค. ์ฆ‰, ๋ชจ๋“  ํŒŒ์ผ๋“ค์„ ๋กœ๋”ฉํ•ด๋†“์„ ํ•„์š”๊ฐ€ ์—†์–ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•„๋‚„ ์ˆ˜๊ฐ€ ์žˆ๋‹ค. ๋งŒ์•ฝ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ถฉ๋ถ„ํ•˜๋ฉด ๋ฏธ๋ฆฌ ๋กœ๋”ฉํ•ด๋†“์•„์„œ ์‹œ๊ฐ„์„ ๋‹จ์ถ•์‹œํ‚จ๋‹ค.

 

JAVA์˜ ํŠน์ง• 


1. ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ

์ž๋ฐ”๋Š” ํ”Œ๋žซํผ์— ์ข…์†๋˜์ง€ ์•Š๋Š” ๋…๋ฆฝ์ ์ธ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ ๋˜๋ฉฐ, ์ž๋ฐ” ๊ฐ€์ƒ ๊ธฐ๊ณ„๋งŒ ์žˆ์œผ๋ฉด ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

2. ๊ฐ์ฒด ์ง€ํ–ฅ 

์ž๋ฐ”๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด๋กœ ์บก์Šํ™”, ์ƒ์†, ๋‹คํ˜•์„ฑ์„ ์ง€์›ํ•œ๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜์€ ํ•ด๊ฒฐ ๊ณผ์ œ๋ฅผ ์‹ค์ œ ์„ธ์ƒ์˜ ๊ฐ์ฒด์™€ ๊ฐ์ฒด ๊ฐ„์˜ ์ƒํ˜ธ ๊ด€๊ณ„๋กœ ๋ชจ๋ธ๋งํ•˜์—ฌ ์ธ๊ฐ„์˜ ์‚ฌ๊ณ ์™€ ๊ฐ€๊น๊ฒŒ ํ‘œํ˜„ํ•œ๋‹ค.

 

3. ํด๋ž˜์Šค๋กœ ์บก์Šํ™”

์ž๋ฐ”๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์˜ ์บก์Šํ™” ์›์น™์„ ์ฒ ์ €ํžˆ ์ง€์ผœ, ๋ณ€์ˆ˜๋‚˜ ๋ฉ”์†Œ๋“œ๋Š” ๋ฐ˜๋“œ์‹œ ํด๋ž˜์Šค ๋‚ด์— ๊ตฌํ˜„ํ•˜๋„๋ก ํ•œ๋‹ค.

 

4. ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ 

ํ•˜๋‚˜์˜ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์ด ๋‹ค์ˆ˜์˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์ˆ˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ง€์›ํ•œ๋‹ค.

์ž๋ฐ”๋Š” ์šด์˜์ฒด์ œ ๋„์›€ ์—†์ด ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

5. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜

์ž๋ฐ” ์–ธ์–ด๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๋Š” ๊ธฐ๋Šฅ์€ ์žˆ์ง€๋งŒ, ๋ฐ˜ํ™˜์€ ์—†๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๊ธฐ๋Šฅ์— ์˜ํ•ด ์ž๋™์œผ๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค.

 

6. ์‹ค์‹œ๊ฐ„ ์‘์šฉ ์‹œ์Šคํ…œ์— ๋ถ€์ ํ•จ

์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ์‹œ์ ์— ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด ์‹คํ–‰๋˜๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์ผ์‹œ์ ์œผ๋กœ ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ๋‹ค.

 

7. ์•ˆ์ „์„ฑ 

์ž๋ฐ” ์–ธ์–ด๋Š” ํƒ€์ž…์ฒดํฌ๊ฐ€ ์—„๊ฒฉํ•˜๋ฉฐ, ํฌ์ธํ„ฐ์˜ ๊ฐœ๋…์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋‹จ๋˜๋Š” ์ผ์ด ๊ฑฐ์˜ ์—†๋‹ค. 

 

8. ์†๋„๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด JIT ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉ 

์ž๋ฐ” ๊ฐ€์ƒ ๊ธฐ๊ณ„๊ฐ€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์œผ๋กœ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฏ€๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ C/C++๋ณด๋‹ค ๋Š๋ฆฌ๋‹ค๊ณ  ์•Œ๋ ค์ ธ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ตœ๊ทผ์— ์‹คํ–‰ํ•˜๋Š” ๋„์ค‘ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ํ•ด๋‹น CPU์˜ ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผํ•˜๊ณ , CPU๊ฐ€ ๋ฐ”๋กœ ๊ธฐ๊ณ„์–ด๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ํ•˜๋Š” JIT ์ปดํŒŒ์ผ๋ง ๊ธฐ๋ฒ•์„ ์ด์šฉํ•˜๋ฏ€๋กœ, C/C++๊ฐ€ ๋น„์Šทํ•˜๋„๋ก ๊ฐœ์„ ๋˜์—ˆ๋‹ค.